# 1、ES 基本概念介绍

# 1.1 ES 是什么

Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎。

# 1.2 ES 主要功能

数据存储、数据搜索、数据分析。

# 2、ES 相关术语

# 2.1 文档 Document

Document 文档就是用户存在 es 中的数据,它是 es 中存储的最小单元。(类似于表中的一行数据)
注意:每个文档都有一个唯一的 ID 表示,可以自行指定,如果不指定 es 会自动生成。

# 2.2 索引 Index

索引其实是一堆文档 Document 的集合。(它类似数据库的中的一个表)
在一个索引中,会有多个文档,而每个文档是由多个不同类型的字段拼接在一起的。

# 2.3 字段 Filed

在 ES 中,Document 就是一个 Json Object,一个 Json Object 其实是由多个字段组成的,每个字段它有不同的数据类型。

  • 字符串:text、keyword。
  • 数值型:long,integer,short,byte,double,float
  • 布尔:boolean
  • 二进制:binary
  • 范围类型:integer_range,float_range,long_range,double_range,date_range

# 2.4 ES 术语总结

ES 索引、文档、字段关系小结:
一个索引里面存储了很多的 Document 文档,一个文档就是一个 Json Object,一个 Json Object 是由多个不同或相同的 filed 字段组成。

# 3、ES 操作方式

ES 的操作和我们传统的数据库操作不太一样,它是通过 Restful API 方式进行操作的,其实本质上就是通过 HTTP 的方式去变更我们的资源状态:

  • 通过 URI 指定要操作的资源,比如 Index、Document;
  • 通过 Http Method 指定要操作的方法,如 GET、POST、PUT、DELETE;

常见操作 ES 的两种方式:Curl、Kibana DevTools

# 3.1 ES 单节点部署

# 3.1.1 CentOS 系列

# 1、安装 Java 环境
[root@es-node1 ~]# yum install java-17-openjdk java-17-openjdk-devel
# 2、安装 ES
[root@es-node1 ~]# rpm -ivh elasticsearch-8.18.2-x86_64.rpm
# 3、关闭 ES 默认开启的 Security 认证
[root@es-node1 ~]# vim /etc/elasticsearch/elasticsearch.yml
# Enable security features
xpack.security.enabled: false
xpack.security.enrollment.enabled: false
# 4、修改 ES 的 JVM 堆内存
[root@es-node1 ~]# vim /etc/elasticsearch/jvm.options
-Xms1g
-Xmx1g
# 5、启动 ES 单节点
[root@es-node1 ~]# systemctl enable --now elasticsearch
# 6. 端口验证
[root@es-node1 ~]# netstat -nltp
# 9200    <= HTTP 通信端口
# 9300    <= 内部集群通信端口
# 7、访问 ES
[root@es-node1 ~]# curl localhost:9200

访问 ES 正常返回结果:

{
  "name" : "es-node01.oldwang.net",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "HJlIqvnXQx2KfPzttxcA7A",
  "version" : {
    "number" : "8.18.2",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "16cc90cd2d08a3147ce02b07e50894bc060a4cbf",
    "build_date" : "2099-04-05T14:45:26.420424304Z",
    "build_snapshot" : false,
    "lucene_version" : "9.10.0",
    "minimum_wire_compatibility_version" : "7.17.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "You Know, for Search"
}

# 3.1.2 Ubuntu 系列

# 1. 安装 Java 环境
[root@es-node1 ~] apt update
[root@es-node1 ~] apt install -y openjdk-17-jdk
# 2. 安装 Elasticsearch
[root@es-node1 ~] wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.18.2-amd64.deb
[root@es-node1 ~] dpkg -i elasticsearch-8.18.2-amd64.deb
# 3. 关闭 ES 默认开启的 Security 认证
[root@es-node1 ~] vim /etc/elasticsearch/elasticsearch.yml
# 修改以下内容
xpack.security.enabled: false
xpack.security.enrollment.enabled: false
# 4. 修改 ES 的 JVM 堆内存
[root@es-node1 ~] vim /etc/elasticsearch/jvm.options
# 修改
-Xms1g
-Xmx1g
# 5. 启动 ES 单节点
[root@es-node1 ~] systemctl enable --now elasticsearch
# 6. 端口验证
[root@es-node1 ~] ss -nltp
# 9200 <= HTTP 通信端口
# 9300 <= 内部集群通信端口
# 7. 访问 ES
[root@es-node1 ~] curl localhost:9200

访问 ES 正常返回结果:

{
  "name" : "es-node1.wang.org",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "xQUmZCMTQ7Ohi3TB25H0Yw",
  "version" : {
    "number" : "8.18.2",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "c6b8d8d951c631db715485edc1a74190cdce4189",
    "build_date" : "2025-05-23T10:07:06.210694702Z",
    "build_snapshot" : false,
    "lucene_version" : "9.12.1",
    "minimum_wire_compatibility_version" : "7.17.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "You Know, for Search"
}

# 3.2 Curl 命令操作 ES

# 1、使用 Curl 命令来创建索引,录入一份文档
[root@es-node1 ~]# curl -XPUT 'http://localhost:9200/oldwang_index/_doc/1' \
-H "Content-Type: application/json" \
-d '{
"name":"oldwang",
"age":18,
"salary": 1000000
}'
# 2、使用 Curl 命令来查看录入的数据
[root@es-node1 ~]# curl -XGET 'http://localhost:9200/oldwang_index/_doc/1'

查看数据返回结果:

{"_index":"oldwang_index","_id":"1","_version":1,"_seq_no":0,"_primary_term":1,"found":true,"_source":{
  "username": "oldwang",
  "age": 18,
  "salary": 1000000
}}

# 3.3 安装 Kibana 操作 ES

# 3.3.1 CentOS 系列

# 1、安装 kibana
[root@es-node1 ~]# rpm -ivh kibana-8.18.2-x86_64.rpm
# 2、配置 Kibana
[root@es-node1 ~]# vim /etc/kibana/kibana.yml
# 配置内容:
server.port: 5601                                  # kibana 默认监听端口
server.host: "0.0.0.0"                             # kibana 监听地址段
server.name: "kibana-node"                         # kibana 实例名称
server.publicBaseUrl: "http://kibana.oldwang.net"    # Kibana 的公共 URL, 例如分享链接、API 调用等都会使用该地址
elasticsearch.hosts: ["http://localhost:9200"]     # kibana 从 coordinating 节点获取数据 (此处 ES. Kibana 属同节点,因此填写 localhost; 正常应该填写 ES 服务器地址)
i18n.locale: "zh-CN"                               # kibana 汉化
# 3、启动 kibana
[root@es-node1 ~]# systemctl enable kibana --now

# 3.3.2 Ubuntu 系列

# 1、安装 kibana
[root@kibana ~]# dpkg -i kibana-8.18.2-amd64.deb
# 2、配置 Kibana
[root@kibana ~]# vim /etc/kibana/kibana.yml
# 配置内容:
server.port: 5601                                  # kibana 默认监听端口
server.host: "0.0.0.0"                             # kibana 监听地址段
server.name: "kibana-node"                         # kibana 实例名称
server.publicBaseUrl: "http://192.168.80.150"      # Kibana 的公共 URL, 例如分享链接、API 调用等都会使用该地址 (推荐使用域名地址)
elasticsearch.hosts: ["http://192.168.80.151:9200"] # 此处填写 ES 服务器地址,kibana 从 coordinating 节点获取数据
i18n.locale: "zh-CN"                               # kibana 汉化
# 3、启动 kibana
[root@kibana ~]# systemctl enable kibana --now

# 3.4 访问 Kibana

访问地址: http://192.168.80.150:5601

# 3.5 启用堆栈监测(或 安装 Metricbeat 实现)

操作路径: Management > 堆栈监测 > 使用内部收集设置 > 打开 Monitoring

# 4、索引 API

ES 有专门的 Index API,用于创建、更新、删除索引配置等。
操作入口: Management > 开发工具

# 4.1 创建索引

创建索引相关 API:

# 创建索引
PUT /oldwang_index
# 查看所有已存在的索引
GET _cat/indices
# 查看健康状态
GET _cat/health
# 查看节点主机
GET _cat/nodes

使用方式:在 Kibana 开发工具中输入需要运行的命令,单击运行发送请求。

# 4.2 删除索引

删除索引 API:

# 删除索引
DELETE /oldwang_index

# 4.3 查看索引

使用 Kibana 查看索引路径: Stack Management > 索引管理 > 索引

# 5、文档 API

ES 为索引添加文档,有专门的 Document API:

  • 创建文档
  • 查询文档
  • 更新文档
  • 删除文档

# 5.1 创建文档

# 创建文档(指定 ID)

# 创建一个文档 (指定 ID)
POST /oldwang_index/_doc/1
{
  "username": "oldwang",
  "age": 18,
  "salary": 1000000
}

说明:创建文档时,如果索引不存在,ES 会自动创建对应的 index 和 type。

# 创建文档(不指定 ID)

# 创建文档,不指定 ID(id 会生成随机字符串)
POST /oldwang_index/_doc
{
  "username": "oldwang",
  "age": 18,
  "salary": 1000000
}

# 5.2 查询文档

# 查询指定 ID 文档

GET /oldwang_index/_doc/1

# 查询所有文档

GET /oldwang_index/_search

# 查询指定内容

GET /oldwang_index/_search
{
  "query": {
    "match": {
      "username": "oldwang"    
    }
  }
}

# 5.3 批量创建文档

ES 允许通过 _bulk 一次创建多个文档,从而减少网络传输开销,提升写入速率。

# 批量创建 Document
POST _bulk
{"index":{"_index":"tt","_id":"1"}}
{"name":"oldwang","age":"18"}
{"create":{"_index":"tt","_id":"2"}}
{"name":"oldqiang","age":"30"}
{"delete":{"_index":"tt","_id":"2"}}
{"update":{"_id":"1","_index":"tt"}}
{"doc":{"age":"20"}}

# 5.4 批量查询文档

ES 允许通过 _mget 一次查询多个文档。

# 批量查询 Document
GET _mget
{
  "docs": [
    {
      "_index": "tt",
      "_id": "1"
    },
    {
      "_index": "tt",
      "_id": "2"
    }
  ]
}

# 总结

  1. ES 核心概念:文档是最小存储单元(对应数据库行)、索引是文档集合(对应数据库表)、字段是文档的属性且有多种数据类型。
  2. ES 操作核心:基于 RESTful API,可通过 Curl 命令行或 Kibana 可视化工具操作,核心 HTTP 方法包括 PUT/GET/POST/DELETE。
  3. 部署与使用:CentOS/Ubuntu 系统均支持 ES 和 Kibana 部署,Kibana 可汉化且提供友好的可视化操作界面,支持索引和文档的增删改查及批量操作。
此文章已被阅读次数:正在加载...更新于

请我喝[茶]~( ̄▽ ̄)~*

Jaxx.Wang 微信支付

微信支付

Jaxx.Wang 支付宝

支付宝