ElasticSearch常用命令详解(10个常用命令)

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

快速定位:

集群是否异常
      ↓
哪个节点异常
      ↓
哪个索引异常
      ↓
哪个分片异常

以上

评论交流
    说说你的看法