Elasticsearch CRUD操作需使用标准RESTful API:一、创建索引与文档(PUT/POST);二、读取文档与索引(GET/HEAD);三、更新文档(PUT全量或POST _update局部);四、删除文档与索引(DELETE);五、Kibana Dev Tools图形化执行。

如果您需要对 Elasticsearch 中的数据执行创建、读取、更新或删除操作,则必须掌握其标准 RESTful API 调用方式与对应 HTTP 方法语义。以下是完成 Elasticsearch 基础 CRUD 操作的多种可行方法:
一、创建索引与文档
索引是 Elasticsearch 中存储文档的逻辑容器,相当于关系型数据库中的“数据库”。创建索引时可指定分片数、副本数及字段映射规则,为后续文档写入奠定结构基础。
1、使用 PUT 方法创建一个名为 myindex 的索引,并设置 3 个主分片和 1 个副本分片:
curl -X PUT "http://192.168.10.33:9200/myindex?pretty" -H "Content-Type: application/json" -d '{ "settings": { "number_of_shards": 3, "number_of_replicas": 1 } }'
2、创建带显式映射的索引 myindex_1,定义 title(text 类型)、views(integer 类型)和 publish_date(date 类型)字段:
curl -X PUT "http://192.168.10.33:9200/myindex_1?pretty" -H "Content-Type: application/json" -d '{ "mappings": { "properties": { "title": {"type": "text"}, "views": {"type": "integer"}, "publish_date": {"type": "date"} } } }'
3、向索引 myindex 中插入一条 ID 为 1 的文档:
curl -X POST "http://192.168.10.33:9200/myindex/_doc/1?pretty" -H "Content-Type: application/json" -d '{ "title": "Elasticsearch 入门", "views": 125, "publish_date": "2026-05-12" }'
4、不指定 ID 插入文档,由 Elasticsearch 自动生成唯一 ID:
curl -X POST "http://192.168.10.33:9200/myindex/_doc?pretty" -H "Content-Type: application/json" -d '{ "title": "自动ID示例", "views": 89 }'
二、读取文档与索引信息
读取操作用于验证数据是否成功写入,或获取特定文档内容。支持按 ID 精确获取、检查存在性以及列出全部索引等不同粒度的查询。
1、根据索引名和文档 ID 获取完整文档对象:
curl -X GET "http://192.168.10.33:9200/myindex/_doc/1?pretty"
2、仅返回文档源数据(_source 字段),排除元数据:
curl -X GET "http://192.168.10.33:9200/myindex/_doc/1/_source?pretty"
3、判断文档是否存在(使用 HEAD 请求,响应无 body,仅状态码):
curl -X HEAD "http://192.168.10.33:9200/myindex/_doc/1"
4、列出集群中所有索引及其状态:
curl -X GET "http://192.168.10.33:9200/_cat/indices?v&pretty"
三、更新文档内容
更新操作分为全量替换与局部更新两类。全量替换需提供完整文档结构;局部更新则通过 _update 接口仅修改指定字段,避免并发覆盖风险。
1、使用 PUT 方法全量替换 ID 为 1 的文档(要求提供全部字段):
curl -X PUT "http://192.168.10.33:9200/myindex/_doc/1?pretty" -H "Content-Type: application/json" -d '{ "title": "Elasticsearch 基础 CRUD 更新版", "views": 142, "publish_date": "2026-05-12" }'
2、使用 POST + _update 进行局部更新,仅修改 views 字段:
curl -X POST "http://192.168.10.33:9200/myindex/_doc/1/_update?pretty" -H "Content-Type: application/json" -d '{ "doc": { "views": 156 } }'
3、使用脚本更新字段值,例如将 views 增加 10:
curl -X POST "http://192.168.10.33:9200/myindex/_doc/1/_update?pretty" -H "Content-Type: application/json" -d '{ "script": { "source": "ctx._source.views += params.increment", "params": { "increment": 10 } } }'
4、添加新字段 comment 到已有文档:
curl -X POST "http://192.168.10.33:9200/myindex/_doc/1/_update?pretty" -H "Content-Type: application/json" -d '{ "doc": { "comment": "已更新内容" } }'
四、删除文档与索引
删除操作可作用于单个文档、整个索引或匹配条件的批量文档。注意:删除并非立即物理清除,而是标记为 deleted,由后台 merge 过程清理。
1、根据索引名与文档 ID 删除单条文档:
curl -X DELETE "http://192.168.10.33:9200/myindex/_doc/1?pretty"
2、删除整个索引 myindex 及其全部文档和设置:
curl -X DELETE "http://192.168.10.33:9200/myindex?pretty"
3、删除多个匹配前缀的索引(如以 myindex 开头的所有索引):
curl -X DELETE "http://192.168.10.33:9200/myindex*?pretty"
4、使用 delete-by-query 插件删除满足条件的文档(需提前安装 plugin):
curl -X POST "http://192.168.10.33:9200/myindex/_delete_by_query?pretty" -H "Content-Type: application/json" -d '{ "query": { "range": { "views": { "lt": 50 } } } }'
五、使用 Kibana Dev Tools 执行 CRUD
Kibana 提供图形化 Dev Tools 控制台,支持以类 SQL 或原生 DSL 方式交互执行 CRUD 请求,适合调试与快速验证。
1、在 Kibana 中打开 Dev Tools 标签页
2、在左侧编辑区输入以下命令创建索引:
PUT /kibana_test_index
3、执行文档插入操作:
POST /kibana_test_index/_doc/1
{
"name": "DevTools 示例",
"status": "active"
}
4、执行 GET 请求读取该文档:
GET /kibana_test_index/_doc/1
5、执行更新操作(Kibana 自动识别 POST /_update):
POST /kibana_test_index/_doc/1/_update
{
"doc": {
"status": "updated"
}
}

















