在 Elasticsearch 实战中,对集群进行健康检查和执行简单的索引操作是日常管理和使用过程中必不可少的部分。以下是如何进行这些操作的详细步骤:
集群健康检查
通过 REST API 检查集群健康状况
- 使用
/_cluster/health
API:
发送一个GET
请求到http://localhost:9200/_cluster/health
(替换为实际 Elasticsearch 节点地址),可以获取集群的健康状态详细信息。例如:
curl -X GET "http://localhost:9200/_cluster/health?pretty"
结果将以 JSON 格式返回,包括以下关键信息:
-
status
: 集群健康状态,可能的值为green
(健康)、yellow
(警告)或red
(严重问题)。 -
timed_out
: 指示请求是否超时。 -
number_of_nodes
: 集群中活动节点的数量。 -
number_of_data_nodes
: 数据节点的数量。 -
active_primary_shards
: 活跃的主分片数。 -
active_shards
: 活跃的分片总数(包括主分片和副本分片)。 -
relocating_shards
: 正在迁移的分片数。 -
initializing_shards
: 正在初始化的分片数。 -
unassigned_shards
: 未分配的分片数。
解释状态颜色:
-
green
: 所有主分片和副本分片都已分配,且所有节点均正常运行。 -
yellow
: 所有主分片已分配,但部分副本分片未分配或不在最优位置(如可能未达到副本数目的设定值)。 -
red
: 至少有一个主分片未分配,这意味着部分数据不可用。
- 使用
/_cat/health
API:
如果需要更简洁的视图,可以使用/_cat/health
API:
curl -X GET "http://localhost:9200/_cat/health?v"
这将返回一个表格形式的结果,包含基本信息如时间戳、集群名、健康状态、节点总数等。
通过 Kibana Dev Tools Console 检查
如果您正在使用 Kibana,可以利用其内置的 Dev Tools Console 执行上述 API 请求:
- 登录 Kibana,导航到 Dev Tools。
- 在 Console 窗口中输入与上述
curl
命令对应的 Elasticsearch 查询,如:
GET _cluster/health
或
GET _cat/health?v
- 点击 Execute 或按
Ctrl + Enter
执行查询,结果将在下方显示。
简单的索引操作
以下是一些常用的索引操作示例:
创建索引
假设要创建一个名为 products
的索引,用于存储商品信息。可以直接发送一个 PUT
请求:
curl -X PUT "http://localhost:9200/products"
添加文档
向 products
索引中添加一个商品文档:
curl -X POST "http://localhost:9200/products/_doc" -H 'Content-Type: application/json' -d'
{
"product_id": "123",
"name": "Product A",
"description": "A great product",
"price": 9.99,
"category": "Electronics"
}
'
查询文档
查找所有价格低于 10 美元的商品:
curl -X GET "http://localhost:9200/products/_search" -H 'Content-Type: application/json' -d'
{
"query": {
"range": {
"price": {
"lt": 10
}
}
}
}
'
更新文档
更新商品 ID 为 123
的价格:
curl -X PUT "http://localhost:9200/products/_doc/123" -H 'Content-Type: application/json' -d'
{
"doc": {
"price": 11.99
}
}
'
删除文档
删除商品 ID 为 123
的文档:
curl -X DELETE "http://localhost:9200/products/_doc/123"
删除索引
删除整个 products
索引:
curl -X DELETE "http://localhost:9200/products"
这些基本操作构成了与 Elasticsearch 交互的核心部分。实际应用中,您可能还需要结合映射(Mapping)定义、复杂查询、聚合分析等功能进行更丰富的数据管理与查询操作。在 Kibana Dev Tools Console 中执行这些操作与使用 curl
类似,只需将命令粘贴到 Console 并执行即可。