Elasticsearch 7.x 常用命令备忘录

本文整理 Elasticsearch 7.x 核心操作命令,涵盖集群管理、索引操作、文档 CRUD、查询聚合、运维监控等高频场景,复制即可使用!

一、基础环境与连接说明

1. 核心前提

  • ES 7.x 默认端口:9200(REST API)、9300(节点间通信)

  • 命令格式:基于 RESTful API,支持 GET/PUT/POST/DELETE 方法

  • 测试工具:Postman、curl 命令行、Kibana Dev Tools

2. 集群连接测试

复制代码
# 基础连接(返回集群基本信息)
GET /

# 带认证的连接(若开启 security 插件)
GET / -u username:password

# 响应示例(健康状态为 green 表示正常)
{
  "name" : "node-1",
  "cluster_name" : "elasticsearch",
  "version" : {
    "number" : "7.17.0",
    "build_flavor" : "default",
    "build_type" : "tar"
  },
  "tagline" : "You Know, for Search"
}

二、集群管理命令

1. 集群健康状态

复制代码
# 基础健康检查(green/yellow/red)
GET /_cluster/health

# 等待集群状态就绪(超时 50s,常用于脚本启动检测)
GET /_cluster/health?wait_for_status=yellow&timeout=50s

# 查看详细健康信息(含分片状态)
GET /_cluster/health?level=shards

2. 节点与分片管理

复制代码
# 查看所有节点
GET /_cat/nodes?v

# 查看主节点
GET /_cat/master?v

# 查看所有索引的分片分布
GET /_cat/shards?v

# 查看集群任务(如索引创建、分片迁移)
GET /_tasks
GET /_cluster/pending_tasks  # 待处理任务

3. 集群统计信息

复制代码
# 集群整体统计(节点数、索引数、存储占用等)
GET /_cluster/stats

# 节点详细统计(CPU、内存、磁盘使用)
GET /_nodes/stats

三、索引操作命令

1. 索引创建

复制代码
# 1. 基础创建(默认分片配置)
PUT /my_index

# 2. 自定义分片与映射
PUT /blog
{
  "settings": {
    "number_of_shards": 3,    # 主分片数(7.x 默认 1,生产建议 3-5)
    "number_of_replicas": 1   # 副本分片数(高可用必备)
  },
  "mappings": {
    "properties": {
      "title": { "type": "text" },       # 文本类型(支持分词搜索)
      "author": { "type": "keyword" },   # 关键字类型(精确匹配)
      "content": { "type": "text" },
      "publish_time": { "type": "date" } # 日期类型
    }
  }
}

2. 索引查询与删除

复制代码
# 查看单个索引信息
GET /blog

# 查看所有索引
GET /_cat/indices?v

# 模糊查询索引(如查看所有 blog 开头的索引)
GET /_cat/indices/blog*?v

# 删除索引
DELETE /my_index
DELETE /blog*  # 批量删除(支持通配符)

3. 索引映射管理

复制代码
# 查看索引映射
GET /blog/_mapping

# 添加新字段映射(7.x 支持动态添加)
PUT /blog/_mapping
{
  "properties": {
    "tags": { "type": "keyword" }  # 新增标签字段
  }
}

# 关闭索引(禁止读写,保留数据)
POST /blog/_close

# 打开索引
POST /blog/_open

四、文档 CRUD 命令

1. 文档创建(新增数据)

复制代码
# 1. 指定文档 ID
PUT /blog/_doc/1
{
  "title": "Elasticsearch 7.x 命令详解",
  "author": "张三",
  "content": "本文整理 ES 7.x 核心操作命令...",
  "publish_time": "2026-04-09",
  "tags": ["ES", "大数据", "搜索引擎"]
}

# 2. 自动生成文档 ID
POST /blog/_doc
{
  "title": "Elasticsearch 聚合查询实战",
  "author": "张三",
  "publish_time": "2026-04-10"
}

# 响应说明
{
  "_index": "blog",    # 索引名
  "_type": "_doc",     # 7.x 唯一类型(已简化,无需自定义)
  "_id": "1",          # 文档 ID
  "_version": 1,       # 版本号(更新会自增)
  "result": "created"  # 操作结果(created/updated)
}

2. 文档查询(获取数据)

复制代码
# 1. 通过 ID 获取单个文档
GET /blog/_doc/1

# 2. 只返回指定字段(提升查询效率)
GET /blog/_doc/1?_source=title,author,publish_time

# 3. 判定文档是否存在(HEAD 方法,无返回体,通过状态码判断)
HEAD /blog/_doc/1  # 200=存在,404=不存在

# 4. 批量查询文档(_mget)
GET /_mget
{
  "docs": [
    { "_index": "blog", "_id": "1" },
    { "_index": "blog", "_id": "2", "_source": "title" }
  ]
}

3. 文档更新

复制代码
# 1. 全量更新
PUT /blog/_doc/1
{
  "title": "Elasticsearch 7.x 命令详解(2026修订版)",
  "author": "张三",
  "content": "更新后的内容...",
  "publish_time": "2026-04-09",
  "tags": ["ES", "大数据", "搜索引擎", "备忘录"]
}

# 2. 局部更新
POST /blog/_doc/1/_update
{
  "doc": {
    "title": "Elasticsearch 7.x 常用命令备忘录(终极版)",
    "tags": ["ES", "大数据", "搜索引擎", "备忘录", "实战"]
  }
}

# 3. 脚本更新
POST /blog/_doc/1/_update
{
  "script": {
    "source": "ctx._source.read_count = ctx._source.read_count + 1",
    "lang": "painless"  # ES 内置脚本语言
  }
}

4. 文档删除

复制代码
# 通过 ID 删除单个文档
DELETE /blog/_doc/1

# 批量删除
POST /blog/_delete_by_query
{
  "query": {
    "match": { "author": "无效作者" }
  }
}

五、查询与聚合命令

1. 基础查询

复制代码
# 1. 全文检索(匹配 content 中包含「ES 命令」的文档)
GET /blog/_search
{
  "query": {
    "match": { "content": "ES 命令" }
  }
}

# 2. 精确匹配(keyword 类型字段,如 tags 包含「备忘录」)
GET /blog/_search
{
  "query": {
    "term": { "tags": "备忘录" }
  }
}

# 3. 范围查询(日期范围:2026-04-01 之后的文档)
GET /blog/_search
{
  "query": {
    "range": {
      "publish_time": {
        "gte": "2026-04-01",  # 大于等于
        "lte": "2026-04-30"   # 小于等于
      }
    }
  },
  "size": 20,  # 返回 20 条结果(默认 10 条)
  "from": 0    # 分页起始位置(从 0 开始)
}

# 4. 过滤查询(只返回需要的字段,过滤无关数据)
GET /blog/_search
{
  "query": {
    "bool": {
      "must": { "match": { "content": "ES" } },  # 必须满足
      "filter": { "range": { "publish_time": { "gte": "2026-01-01" } } }  # 过滤条件(不影响评分)
    }
  },
  "_source": ["title", "author", "publish_time"]  # 只返回指定字段
}

2. 聚合分析

复制代码
# 1. 分组统计(按 author 分组,统计每个作者的文档数)
GET /blog/_search
{
  "size": 0,  # 不返回原始文档,只返回聚合结果
  "aggs": {
    "author_count": {  # 聚合名称(自定义)
      "terms": { "field": "author.keyword", "size": 10 }  # keyword 类型字段分组
    }
  }
}

# 2. 数值统计(统计 read_count 字段的平均值、最大值)
GET /blog/_search
{
  "size": 0,
  "aggs": {
    "read_count_stats": {
      "stats": { "field": "read_count" }  # 数值类型字段
    }
  }
}

3. SQL 查询

复制代码
# 基础 SQL 查询(查询 title 包含「ES」的文档)
POST /_sql?format=json
{
  "query": "SELECT title, author, publish_time FROM blog WHERE title LIKE '%ES%' ORDER BY publish_time DESC"
}

# SQL 过滤查询(结合 ES 过滤条件)
POST /_sql?format=txt
{
  "query": "SELECT * FROM blog ORDER BY publish_time DESC",
  "filter": {
    "range": { "publish_time": { "gte": "2026-04-01", "lte": "2026-04-09" } }
  },
  "fetch_size": 5  # 返回 5 条结果
}

六、运维监控与问题排查命令

1. 索引健康与状态

复制代码
# 查看索引分片状态(排查分片未分配问题)
GET /_cluster/allocation/explain

# 查看索引统计信息(文档数、存储大小、字段使用情况)
GET /blog/_stats

# 查看索引段信息(优化索引时使用)
GET /blog/_segments

2. 索引优化命令

复制代码
# 强制合并索引段(减少碎片,提升查询性能)
POST /blog/_forcemerge?max_num_segments=1

# 刷新索引(使新增/修改的数据立即可见)
POST /blog/_refresh

# 刷新所有索引
POST /_refresh

3. 日志与问题排查

复制代码
# 查看节点日志(需开启日志 API,默认关闭)
GET /_nodes/logging

# 查看慢查询日志(需提前配置 slowlog)
GET /_cat/indices?v&s=pri.store.size:desc  # 按存储大小排序,定位大索引

七、避坑指南

  1. 索引删除警告DELETE /_allDELETE /* 会删除所有索引,生产环境务必禁用,可通过配置 action.destructive_requires_name: true 限制;

  2. 分片配置建议:主分片数创建后不可修改,副本分片数可动态调整;生产环境主分片数建议按节点数的 1.5-2 倍配置(如 3 节点设 3-5 个主分片);

  3. 文档 ID 选择:指定 ID 需确保唯一性,自动生成 ID 采用 UUID 格式,适合高频写入场景;

  4. 查询性能优化 :避免使用 match_all 全量查询,大索引分页建议使用 scrollsearch_after 替代 from/size

  5. 版本冲突处理 :并发更新时可能出现版本冲突,可通过 retry_on_conflict 参数设置重试次数(如 POST /blog/_doc/1/_update?retry_on_conflict=3)。

相关推荐
帮我吧智能服务平台2 小时前
装备制造服务数字化痛点破解:大模型+协同工具的实战应用
大数据·人工智能·制造
盟接之桥2 小时前
盟接之桥®说制造:从“制造”到“智造”,以品类品牌重塑制造业的生态未来
大数据·网络·人工智能·学习·制造
志栋智能2 小时前
超自动化巡检:洞察未知隐患,助您事前不出事
大数据·运维·网络·数据库·自动化
2501_948114242 小时前
Muse Spark 闭源转型背后的系统化演进:PAO 架构、KV Cache 压缩与聚合接入实践
大数据·架构·spark
昨夜见军贴06162 小时前
IA-Lab AI 检测报告生成助手:土壤重金属检测报告如何实现GB 15618标准自动解析,推动降本与合规双升级?
大数据·人工智能
中钧科技2 小时前
数字化的本质、核心、重点各是什么?
大数据·人工智能
TDengine (老段)2 小时前
TDengine IDMP 事件 —— 事件模板
大数据·数据库·人工智能·时序数据库·tdengine·涛思数据
蓝天守卫者联盟13 小时前
多段式TO炉厂家深度解析:技术选型与行业应用洞察
大数据
斯特凡今天也很帅3 小时前
Elasticsearch数据库专栏(二)DSL语句总结(更新中)
大数据·elasticsearch·搜索引擎