ElasticSearch是大型架构核心,下面我详解Elasticsearch常用命令@mikechen
1. 查看 Elasticsearch 集群信息
GET /
或者:
curl -X GET "http://localhost:9200/"
可以快速查看:
- Elasticsearch 版本
- 集群名称
- Lucene 版本
- 节点信息
最常用于:检查 ES 是否正常启动。
2. 查看集群健康状态
GET /_cluster/health
重点关注:
{
"status": "green",
"number_of_nodes": 3,
"active_shards": 10
}
集群状态:
| 状态 | 含义 |
|---|---|
| green | 主分片、副本分片全部正常 |
| yellow | 主分片正常,但部分副本未分配 |
| red | 存在主分片未分配,可能影响数据访问 |
生产环境排查 ES 集群问题时,这个命令非常重要。
3. 查看所有索引
GET /_cat/indices?v
也可以:
curl -X GET "http://localhost:9200/_cat/indices?v"
示例:
health status index docs.count store.size
green open user 1000000 2gb
green open order 5000000 8gb
yellow open product 200000 500mb
可以快速看到:
- 索引名称
- 文档数量
- 主分片状态
- 存储大小
4. 创建索引
PUT /user
指定分片和副本:
PUT /user
{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 1
}
}
这里:
3 个主分片
1 个副本
也就是最多形成:
3 Primary
+
3 Replica
=
6 个 Shard
注意:主分片数量创建后不能直接修改,生产环境需要提前规划。
5. 删除索引
DELETE /user
删除后索引中的数据也会被删除。
例如:
DELETE /order
返回:
{
"acknowledged": true
}
⚠️ 生产环境执行 DELETE 要特别谨慎。
6. 新增/修改文档
新增一条文档:
POST /user/_doc/1
{
"name": "张三",
"age": 28,
"job": "Java架构师"
}
也可以指定 ID:
PUT /user/_doc/1001
{
"name": "李四",
"age": 30
}
如果 ID 已经存在:
PUT /user/_doc/1001
会覆盖原文档。
7. 查询文档
根据 ID 查询:
GET /user/_doc/1001
查询全部文档:
GET /user/_search
指定查询条件:
GET /user/_search
{
"query": {
"match": {
"name": "张三"
}
}
}
这是 Elasticsearch 最核心的开发命令之一。
8. 删除文档
根据 ID 删除:
DELETE /user/_doc/1001
如果需要根据条件删除:
POST /user/_delete_by_query
{
"query": {
"match": {
"name": "张三"
}
}
}
例如删除年龄大于 60 岁的用户:
POST /user/_delete_by_query
{
"query": {
"range": {
"age": {
"gt": 60
}
}
}
}
9. 查看索引 Mapping
GET /user/_mapping
Mapping 可以理解为 ES 中类似数据库的:
表结构 + 字段类型
例如:
{
"properties": {
"name": {
"type": "text"
},
"age": {
"type": "integer"
},
"email": {
"type": "keyword"
}
}
}
常见字段类型:
text
keyword
integer
long
date
boolean
nested
object
ES 查询性能和查询结果是否准确,很大程度取决于 Mapping 设计。
10. 查看节点与集群状态
查看节点:
GET /_cat/nodes?v
查看分片:
GET /_cat/shards?v
查看集群:
GET /_cluster/health
生产环境排查问题时,可以组合使用:
_cluster/health
↓
_cat/nodes
↓
_cat/indices
↓
_cat/shards
快速定位:
集群是否异常
↓
哪个节点异常
↓
哪个索引异常
↓
哪个分片异常
以上