ElasticSearch - 索引操作
使用 Postman 进行测试,所以主要内容围绕该工具进行,而 Kibana 也会有相应的代码,只是不过多描述。
Postman 官网下载:https://www.postman.com/downloads/ (opens new window)
Windows 访问地址:http://127.0.0.1:9200
如果 ElasticSearch 部署到其他服务器,则地址需要改变:http://ip:port/url
对比关系型数据库,创建索引就等同于创建数据库
# 1. 创建索引 (PUT
请求)
索引是 Elasticsearch 中存储数据的基础结构,类似于关系型数据库中的表。通过 PUT
请求可以在 Elasticsearch 中创建索引。
操作目的:创建一个新的索引,类似于在 MySQL 中创建一个数据库。
# Postman 操作
在 Postman 中使用 PUT
请求来创建一个新的索引,创建的索引名称为 shopping
。
- 请求 URL:
http://127.0.0.1:9200/shopping
- 请求方法:
PUT
- 分片默认值: Elasticsearch 7.0.0 及之后版本默认 1 个主分片,而 7.0.0 之前的版本默认 5 个主分片。
操作步骤:
- 打开 Postman,选择
PUT
请求方法。 - 在 URL 栏中输入
http://127.0.0.1:9200/shopping
,这里的shopping
是您要创建的索引名称。 - 点击发送请求按钮,等待服务器返回结果。
发送请求后,您会看到如下响应结果:
响应结果说明:
{
"acknowledged": true, // 表示服务器成功处理了创建索引的请求
"shards_acknowledged": true, // 索引的分片已经成功创建
"index": "shopping" // 创建的索引名称
}
2
3
4
5
- acknowledged: 表示 Elasticsearch 接受并成功执行了请求。
- shards_acknowledged: 表示主分片和副本分片已经成功分配并可用。
- index: 这是您创建的索引名称。
如果您重复创建相同名称的索引,会返回一个错误信息,说明已经存在此索引:
# Kibana 操作
在 Kibana 中,您不需要指定 http://ip:port
,因为 Kibana 已经在配置文件中处理了这些信息。您可以直接使用如下命令创建索引:
PUT /shopping
- 语法说明: 使用
PUT
请求创建索引。/shopping
是索引的路径,表示您希望创建一个名为shopping
的索引。 - 分片数量: Elasticsearch 默认使用 1 个主分片,您可以根据需要在请求体中指定更多的配置,例如分片数和副本数。
# 2. 查看所有索引 (GET
请求)
Elasticsearch 提供了一个专门的 API 来查看所有索引,类似于 MySQL 中的 SHOW TABLES
。通过 GET
请求可以列出当前 Elasticsearch 实例中的所有索引。
操作目的:查看当前 Elasticsearch 实例中所有已经创建的索引。
# Postman 操作
- 请求 URL:
http://127.0.0.1:9200/_cat/indices?v
- 请求方法:
GET
- 参数解释:
_cat/indices
: 该路径用于显示索引列表,类似于 MySQL 中的SHOW TABLES
。?v
: 参数v
代表 verbose(详细),它会为结果添加表头信息。
操作步骤:
- 打开 Postman,选择
GET
请求方法。 - 在 URL 栏中输入
http://127.0.0.1:9200/_cat/indices?v
。 - 点击发送请求按钮,服务器将返回当前所有索引的信息。
以下为 Postman 中查看所有索引的操作截图:
响应结果的字段说明:
字段 | 含义 |
---|---|
health | 当前服务器的健康状态,green 表示集群完整,yellow 表示部分节点异常但可用,red 表示索引不可用 |
status | 索引的状态,open 表示索引打开,可以进行读写操作;close 表示索引关闭,不可读写 |
index | 索引的名称 |
uuid | 唯一标识此索引的 UUID |
pri | 主分片的数量 |
rep | 副本分片的数量 |
docs.count | 文档数量 |
docs.deleted | 已删除的文档数量(逻辑删除) |
store.size | 索引占用的总存储大小(包括主分片和副本分片) |
pri.store.size | 主分片占用的存储空间大小 |
# Kibana 操作
在 Kibana 中查看所有索引的命令如下:
GET /_cat/indices?v
- 语法说明:
GET /_cat/indices?v
会返回当前实例中的所有索引,?v
参数用于显示表头信息,确保结果易读。
# 3. 查看单个索引 (GET
请求)
可以通过 GET
请求查看某个特定索引的详细信息,例如分片数量、映射结构、创建时间等。此操作与创建索引的请求非常相似,区别在于使用 GET
方法。
操作目的:获取某个特定索引的详细信息,包括设置、映射和元数据信息。
# Postman 操作
- 请求 URL:
http://127.0.0.1:9200/shopping
- 请求方法:
GET
操作步骤:
- 打开 Postman,选择
GET
请求方法。 - 在 URL 栏中输入
http://127.0.0.1:9200/shopping
,shopping
是您要查询的索引名称。 - 点击发送请求按钮,服务器将返回该索引的详细信息。
以下为 Postman 中查看单个索引的操作截图:
响应结果说明:
{
"shopping": {
"aliases": {}, // 索引的别名,此处为空
"mappings": {}, // 索引的映射,存储文档结构的定义
"settings": { // 索引的设置
"index": {
"creation_date": "1614265373911", // 创建时间(时间戳格式)
"number_of_shards": "1", // 主分片数量,默认为 1
"number_of_replicas": "1", // 副本分片数量,默认为 1
"uuid": "eI5wemRERTumxGCc1bAk2A", // 唯一标识符
"version": {
"created": "7080099" // Elasticsearch 版本
},
"provided_name": "shopping" // 索引名称
}
}
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Kibana 操作
在 Kibana 中查看某个特定索引的命令如下:
GET /shopping
- 语法说明:
GET /shopping
请求会返回名为shopping
的索引的所有相关信息,包括分片配置、映射结构、索引设置等。
# 4. 删除索引 (DELETE
请求)
当不再需要某个索引时,可以通过 DELETE
请求来删除它。删除索引相当于在数据库中删除一个表,这会导致该索引下的所有数据被移除。
操作目的:删除一个不再需要的索引。
# Postman 操作
- 请求 URL:
http://127.0.0.1:9200/shopping
- 请求方法:
DELETE
操作步骤:
- 打开 Postman,选择
DELETE
请求方法。 - 在 URL 栏中输入
http://127.0.0.1:9200/shopping
,shopping
是您要删除的索引名称。 - 点击发送请求按钮,服务器将删除该索引并返回删除结果。
以下为 Postman 中删除索引的操作截图:
Kibana 操作
在 Kibana 中删除索引的命令如下:
DELETE /shopping
- 语法说明:
DELETE /shopping
请求会删除名为shopping
的索引,该操作不可恢复,数据将被永久删除。
# 5. 打开/关闭索引 (POST
请求)
关闭索引会使该索引处于不可读写状态,仅保留元数据。如果您需要暂时停止对某个索引的操作,可以选择关闭它。再次打开后,索引恢复到可读写状态。
操作目的:关闭或打开某个索引,以控制其读写状态。
# 关闭索引 (POST
请求)
- 请求 URL:
http://127.0.0.1:9200/shopping/_close
- 请求方法:
POST
操作步骤:
- 打开 Postman,选择
POST
请求方法。 - 在 URL 栏中输入
http://127.0.0.1:9200/shopping/_close
,shopping
是您要关闭的索引。 - 点击发送请求按钮,索引将被关闭,此时该索引的元数据仍然存在,但无法进行读写操作。
# 打开索引 (POST
请求)
- 请求 URL:
http://127.0.0.1:9200/shopping/_open
- 请求方法:
POST
操作步骤:
- 打开 Postman,选择
POST
请求方法。 - 在 URL 栏中输入
http://127.0.0.1:9200/shopping/_open
,shopping
是您要打开的索引。 - 点击发送请求按钮,索引将恢复到可读写状态。
Kibana 操作
关闭索引:
POST /shopping/_close
打开索引:
POST /shopping/_open
- 语法说明:
POST /shopping/_close
用于关闭索引,POST /shopping/_open
用于重新打开索引。
# 6. 索引的自动创建
在 Elasticsearch 中,当向不存在的索引添加数据时,Elasticsearch 会自动创建该索引。例如,向 http://127.0.0.1:9200/shopping/_doc
添加文档时,如果 shopping
索引不存在,Elasticsearch 会自动创建它。
# 禁止自动创建索引
如果您不希望 Elasticsearch 自动创建索引,可以通过修改配置文件来禁用此功能。
- 配置文件路径:
config/elasticsearch.yml
- 添加以下配置:
action.auto_create_index: false
这将禁止 Elasticsearch 在没有显式创建索引的情况下自动创建索引。
# 7. 总结
- Elasticsearch 中的索引操作与关系型数据库中的表操作类似。创建、查看、删除等操作可以通过 HTTP 请求轻松完成。
- 查看所有索引的命令为:
GET /_cat/indices?v
,类似于SHOW TABLES
。 - 索引的自动创建功能非常灵活,但可以根据需求通过配置文件禁用。