ElasticSearch常用命令详解(2026最新版)

ElasticSearch是大型架构核心,下面我详解ElasticSearch常用命令@mikechen

1. 查看集群健康状态
命令

GET /_cluster/health

或者:

curl http://localhost:9200/_cluster/health?pretty

返回结果

{
  "cluster_name": "es-cluster",
  "status": "green",
  "number_of_nodes": 3
}

状态说明

状态 说明
green 主分片和副本分片正常
yellow 主分片正常,副本异常
red 主分片异常

这是排查问题时第一个要执行的命令。

2. 查看所有索引
命令

GET /_cat/indices?v

或者:

curl http://localhost:9200/_cat/indices?v

输出示例

health status index docs.count store.size
green open user 100000 50mb

可以查看:

  • 索引名称
  • 文档数量
  • 存储空间
  • 分片情况

3. 创建索引
命令

PUT /user

指定分片:

PUT /user
{
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 1
  }
}

说明
生产环境必须提前规划:

  • 分片数
  • 副本数
  • Mapping

避免后期扩容困难。

4. 删除索引
命令

DELETE /user

注意
删除后无法恢复。

线上建议:

  • 快照备份
  • 二次确认
  • 禁止通配符误删

5. 查看索引Mapping
命令

GET /user/_mapping

作用
查看字段类型:

{
  "name": {
    "type": "text"
  }
}

常用于排查:

  • 分词异常
  • 聚合失败
  • 查询性能问题

6. 新增文档
命令

POST /user/_doc
{
  "name":"Tom",
  "age":20
}

返回:

{
  "_id":"abc123"
}

ES自动生成ID。

7. 根据ID查询文档
命令

GET /user/_doc/abc123

返回

{
  "_source": {
    "name":"Tom",
    "age":20
  }
}

适合主键查询场景。

8. 更新文档
命令

POST /user/_update/abc123
{
  "doc":{
    "age":25
  }
}

说明
只更新指定字段。

无需覆盖整个文档。

9. 删除文档
命令

DELETE /user/_doc/abc123

应用场景

  • 用户注销
  • 数据清理
  • 历史数据归档

10. 全文检索
命令

GET /user/_search
{
  "query": {
    "match": {
      "name": "Tom"
    }
  }
}

原理
先分词:

Tom Jackson

可能拆分为:

tom
jackson

再进行倒排索引匹配。

11. 条件过滤查询
命令

GET /user/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "term": {
            "age": 20
          }
        }
      ]
    }
  }
}

优势
filter:

  • 不计算评分
  • 可缓存
  • 查询更快

线上推荐优先使用。

12. 聚合统计
命令

GET /user/_search
{
  "size": 0,
  "aggs": {
    "avg_age": {
      "avg": {
        "field": "age"
      }
    }
  }
}

返回

{
  "aggregations": {
    "avg_age": {
      "value": 28.5
    }
  }
}

常用于:

  • BI报表
  • 数据统计
  • 实时分析

13. Bulk批量写入
命令

POST /_bulk

{"index":{"_index":"user"}}
{"name":"Tom"}

{"index":{"_index":"user"}}
{"name":"Jack"}

优势
单条写入:

1000次网络请求

Bulk:

1次网络请求

性能提升通常可达:

10倍~100倍

因此日志系统、订单系统、大数据平台都会采用 Bulk 写入。

评论交流
    说说你的看法