Elasticsearch DSL API 速查
2025-01-22 08:19:30 1.3k 字
This post is also available in English and alternative languages.
ElasticSearch版本:6.5.0(点击跳转官方文档)
好记性不如烂笔头,记录elasticsearch常用DSL命令,备忘速查。
1. 通用
在命令后面追加 ?v ,可以展示相对完整描述
如果对某个API命令的返回参数不明确,可以再末尾追加’help’,获取返回参数的解释
例如:
1 | GET /_cat/master?help |
response
1 | id | | node id |
2. 创建
描述 | 示例 |
---|---|
创建文档 (自定义_id) | PUT /my_index/my_type/1 { “my_field” : “my_value” } PUT /my_index/my_type/1/_create { … } |
创建文档 (es自增id) | POST /my_index/my_type/ { … } |
3. 查询
描述 | 示例 |
---|---|
查询所有数据 | GET /my_index/my_type/_search |
查询文档 根据id | GET /my_index/my_type/_id |
查询文档 根据字段/字段值 | GET /my_index/my_type/_search?q=my_filed : my_filed_valye GET /testdata/data/_search { “query” : { “term” : { “my_field” : “my_field_value” } } } |
查询文档数量 根据字段/字段值 | GET /my_index/my_type/_count?q=my_field:my_field_value GET /testdata/data/_count { “query”: { “term”: { “age”: “18” } } } |
验证查询是否合法 在执行某语句之前先验证是否合法,是否有错误 | GET /my_index/_validate/query?q=my_field:my_field_value GET /testdata/data/_validate/query { “query”: { “tweet” : { “match” : “really powerful” } } } GET /testdata/data/_validate/query?explain { “query”: { “tweet” : { “match” : “really powerful” } } } |
评分分析 询问es,文档是如何匹配/没匹配上的 | GET /testdata/data/YkEv3WwBtpDj1QTWFaTU/_explain?q=name:cyx |
查看查询语句耗时分析 | GET /testdata/data/_search { “profile”: true, “query”: { “term”: { “age”: “18” } } } |
查询索引信息 Get index API | GET /testdata GET /testdata/_settings GET /testdata/_mappings |
4. 合并检索
描述 | 示例 |
---|---|
查询多个文档 合并检索 (自由选择index、type) | GET /_mget { “docs”: [ { “_index”: “testdata”, “_type”: “data”, “_id”: “WkFq3GwBtpDj1QTWqqTf” }, { “_index”: “news”, “_type”: “new”, “_id”: “19” } ] } |
查询多个文档 合并检索 (指定index) | GET /testdata/_mget { “docs”: [ { “_type”: “data”, “_id”: “WkFq3GwBtpDj1QTWqqTf” }, { “_type”: “data”, “_id”: “W0GX3GwBtpDj1QTWa6SP” } ] } |
查询多个文档 合并检索 (指定index、type) | GET /testdata/data/_mget { “docs”:[ {“_id”: “WkFq3GwBtpDj1QTWqqTf”}, {“_id”: “W0GX3GwBtpDj1QTWa6SP”} ] } |
查询多个文档 合并检索(简写) | GET /testdata/data/_mget { “ids” : [“WkFq3GwBtpDj1QTWqqTf”, “W0GX3GwBtpDj1QTWa6SP”] } |
5. 更新
描述 | 示例 |
---|---|
更新文档 整体更新(整体覆盖) | PUT /my_index/my_type/_id { “my_field”:“my_field_value” } |
更新文档 局部更新 | POST /my_index/my_type/_id/_update { “doc”:{ “my_field”:“my_field_value” } } |
6. 删除
描述 | 示例 |
---|---|
删除索引 Delete index API | DELETE /my_index DELETE /my_index1,my_index2 DELETE /my_index* DELETE /_all |
删除文档 | DELETE /my_index/my_type/_id |
查询匹配到的每个文档上执行删除 谨慎使用 | POST /testdata/_delete_by_query { “query”: { “match”: { “name”: “cyx” } } } POST /testdata/data/_delete_by_query { “query”: { “match”: { “name”: “eva eva” } } } |
删除文档中某个字段中的值 | POST /my_index/my_type/_id/_update { “script” : “ctx._source.remove("name")” } |
删除索引下所有数据 谨慎使用 | POST index_name/_delete_by_query { “query”: { “match_all”: {} } } |
查询删除 (delete_by_query) | curl -H “Content-Type: application/json” -XPOST “http://localhost:9200/testdata/dataType/_delete_by_query?conflicts=proceed” -d’ { “query”: { “term”: { “name”: { “value”: “john1” } } } }’ |
7. 复制
描述 | 示例 |
---|---|
复制索引 | POST /_reindex { “source”:{ “index”:“old_index” }, “dest”: { “index”:“new_index” } } |
8. 索引
描述 | request示例 | response示例 |
---|---|---|
创建索引 Create index API | PUT /blog2 { “settings”:{ “number_of_shards”:“2”, “number_of_replicas”:“2” } } | |
检查索引是否存在 Indices exists API | HEAD /my_index | |
打开/关闭索引 Open/Close index API | POST /testdata/_close POST /testdata/_open | |
统计索引内文档数 | GET /_cat/count/books?v |
9. 路由
描述 | 示例 |
---|---|
路由值对应文档所在分片 | GET /index_name/_search_shards?routing=routing_value http://localhost:9600/es_index/_search_shards?routing=routing_value(doc_id) |
10. 集群
描述 | request示例 | response示例 |
---|---|---|
查看index分片 | GET /testdata/_search_shards | |
查看索引各个分片文档数量 | GET _cat/shards/goods_index?v | |
集群节点信息 Nodes Info | GET /_nodes GET /_nodes/my_node_name GET /_nodes/node1,node2 | |
集群节点统计信息 Nodes Stats | GET /_nodes/stats GET /_nodes/node-1/stats GET /_nodes/127.0.0.1/stats | |
返回集群中每个选定节点上的热线程 Nodes hot_threads | GET /_nodes/hot_threads GET /_nodes/nodeName/hot_threads | |
查询集群中所有索引 | GET /_cat/indices curl -XGET 127.0.0.1:9200/_cat/indices | health-索引健康状况 status-状态 index-索引名称 pri-主分片数量 rep-副本分片数量 docs.count-文档数量 docs.deleted-删除文档数量 store.size-主存储和副本存储大小 pri.store.size-原始存储大小 |
查看集群master信息 | GET /_cat/master?v | |
查看集群节点 磁盘使用情况 (查看每个节点 分片数量 以及 已使用磁盘空间快照) | GET /_cat/allocation?v | shards - 分片 disk.indices - 磁盘索引占用空间 disk.used - 已使用磁盘空间 disk.avail - 磁盘可用空间 disk.total - 磁盘空间 disk.percent - 磁盘已用空间占比 |
统计集群 所有索引内文档数 | GET /_cat/count?v | |
集群拓扑 (所有节点机器信息) | get /_cat/nodes?v | heap.percent - 使用堆率 ram.percent - 已用机器内存比例 cpu - 最近CPU使用情况 load_1m - 平均负载(1分钟) load_5m - 平均负载(5分钟) load_15m - 平均负载(15分钟) node.role - 节点角色(m-主节点 d-数据节点 i-目的节点 master - *主节点 name - 节点名称 |
11. curl 模版方法
curl 创建索引 并设置静态mapping
1 | curl -H "Content-Type: application/json" -XPUT 'http://127.0.0.1:9200/testdata' -d '{ |
curl 删除索引
1 | curl -XDELETE 'http://127.0.0.1:9200/testdata' |
curl 插入数据
1 | curl -H "Content-Type: application/json" -XPOST http://127.0.0.1:9200/testdata/dataType/1 -d '{"name" : "john" , "address" : "nanking","activityStartTime":"2020-03-08","val":"thinking in java"}' |