ElasticSearch常用的API
小明 Lv6

总结一下最近频繁使用的api,以备不时之需,使用的是kibana可视化工具。

image

查看索引中的数据

1
2
3
4
GET 20220918_weibo/_search
{
"size":5
}

根据id查看某个文档

1
GET yqms_20220918_weibo/_doc/20220918_1_06a8fe74714cac2554a704e3f6022f47

查看索引数据量

1
GET /20220918_weibo/_count

Tips:支持*通配符

查看分词器

1
2
3
4
5
GET 20220918_weibo/_analyze
{
"field": "title",
"text": "志胜说自己是红绿色盲"
}

索引的分片信息

1
GET _cat/shards/20220116_weibo?v

v会增加表头

批量改副本数

复制分片会让你的数据更安全,查询更快,但会影响你入库的速度,所以当数据发生大量拥堵时,可以临时调整分片数,加快入库速度。

1
2
3
4
5
6
PUT 20220926*/_settings
{
"index" : {
"number_of_replicas" : 0
}
}

查看索引别名是否存在

1
HEAD /_alias/20220918_weibo

添加索引别名

1
2
3
4
5
6
7
8
9
10
11
POST _aliases
{
"actions": [
{
"add": {
"index": "old_20220919_weibo",
"alias": "new_20220919_weibo"
}
}
]
}

删除索引别名

1
2
3
4
5
6
7
8
9
10
11
POST /_aliases
{
"actions": [
{
"remove": {
"index": "old_20220919_weibo",
"alias": "new_20220919_weibo"
}
}
]
}

query string

这个api支持AND、OR、 NOT 、”” (记得大写),另外,还可以指定type类型:best_fields(默认)、phrase
官方文档

1

批量更新文档

1
2
3
4
5
6
7
8
9
POST /20220918_*/_update_by_query
{
"query": {
"match_all": {}
},
"script": {
"source": "ctx._source.distinguish_type = 1"
}
}

根据id删除

1
DELETE /20220918_weibo/_doc/13l3G3kBX4ydNSzBVQtb

批量删除指定文档

1
2
3
4
5
6
POST 20220918_weibo/_delete_by_query?wait_for_completion=false&scroll_size=1000&conflicts=proceed
{
"query": {
"match_all":{}
}
}

重建索引

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
"source": {
"index": "old_20220910_weibo",
"size":5000
},
"dest": {
"index": "new_20220910_weibo",
"op_type": "create"
},
"conflicts": "proceed",
"script": {
"source":"""
def publish_time;
if(ctx._source.ctime !=null ){
publish_time = ctx._source.ctime * 1000L;
}
"""
}
}

删除索引

用自己惨痛的教训告诉你,删除前一定要仔细!!!

1
1.使用Delete Index API

DELETE /my_index

1
2
3
使用DELETE Index API可以直接从ES集群中删除指定的索引,这个操作非常简单易用。

2.使用curl命令删除索引

curl -XDELETE ‘http://localhost:9200/my_index'
curl命令可以在命令行中使用,也可以在脚本中使用。直接调用http请求可以在删除大量索引时方便快捷。

3.使用Kibana删除索引
Kibana是ES提供的一个可视化工具,可以直接连接到ES集群。在Kibana界面上点击左侧的导航栏“Management”,然后找到需要删除的索引,右键点击“Delete”按钮即可删除。

1
2
3
4


## 筛选指定执行中的任务

GET _tasks?detailed=true&actions=*reindex

1
2
3

## 根据任务id查看任务

GET _tasks/9eOsi8WJRIyQNnLr5ZxndA:368975752

1
2
3

## 取消任务

POST _tasks/9eOsi8WJRIyQNnLr5ZxndA:367774670/_cancel

1
2
3

## 批量更新

POST /20220918_weibo/_update_by_query
{
“query”: {
“match_all”: {}
},
“script”: {
“source”: “ctx._source.distinguish_type = 1”
}
}

1
2
3

## 删除快照

DELETE _snapshot/{repository}/{snapshot}

1
2
3

# es集群状态
## 查看当前es正在运行的线程

GET /_cat/thread_pool/?v&h=id,name,active,rejected,completed,size,type&pretty&s=type

1
2
3

## 当前活跃的线程

GET /_nodes/hot_threads

1
2
3

## 查询节点状态

GET /_cat/nodes

1
2
3

# 查看分片失败的原因

GET /_cluster/allocation/explain?pretty

1
2
3

# 尝试重新分配失败的分片

POST /_cluster/reroute?retry_failed=true

1
2

# 清除缓存

POST /_cache/clear



 评论