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
2
3
4
id   |   | node id    
host | h | host name
ip | | ip address
node | n | node name

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?vshards - 分片
disk.indices - 磁盘索引占用空间
disk.used - 已使用磁盘空间
disk.avail - 磁盘可用空间
disk.total - 磁盘空间
disk.percent - 磁盘已用空间占比
统计集群 所有索引内文档数GET /_cat/count?v
集群拓扑
(所有节点机器信息)
get /_cat/nodes?vheap.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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
curl -H "Content-Type: application/json" -XPUT 'http://127.0.0.1:9200/testdata' -d '{
"settings": {
"number_of_shards": 1
},
"mappings": {
"dataType": {
"properties": {
"name": {
"type": "keyword"
},
"address": {
"type": "keyword"
},
"activityStartTime": {
"type": "keyword"
},
"val": {
"type": "text"
}
}
}
}
}'

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"}'