本篇博客介绍了 ElasticSearch API 的详细使用方法。
elasticsearch 提供了很多全面的API,大致可以分为如下几种:
- 检查集群、节点、索引的健康状况。
- 管理集群、节点、索引数据、元数据。
- 执行CRUD,创建、读取、更新、删除以及查询索引和索引模板等。
- 执行高级的查询操作、比如分页、排序、脚本和聚合等。
1、查看集群健康状态
1
2
3
|
[root@localhost ~]# curl http://172.20.17.4:9200/_cat/health?v
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1531817234 08:47:14 elasticsearch-cluster yellow 1 1 290 290 0 0 180 0 - 61.7%
|
可以看到集群的名字是:elasticsearch-cluster,集群的状态为:yellow。
elasticsearch 集群的颜色及含义:
- 绿色:最健康的状态,代表所有的分片包括备份都可用。
- 黄色:基本的分片可用,但是备份不可用,也可能是没有备份。
- 红色:部分的分片可用,表明分片有一部分损坏,此时执行查询部分数据仍然可以查到,遇到这种情况,需要尽快解决。
2、查询节点列表
1
2
3
|
[root@localhost ~]# curl http://172.20.17.4:9200/_cat/nodes?v
host ip heap.percent ram.percent load node.role master name
172.20.17.4 172.20.17.4 17 99 5.06 d * elasticsearch-master
|
3、查询所有索引
1
2
3
4
5
|
[root@localhost ~]# curl http://172.20.17.4:9200/_cat/indices?v
health status index pri rep docs.count docs.deleted store.size pri.store.size
yellow open zipkin-2018-07-14 5 1 180 0 182.4kb 182.4kb
yellow open yycloud-basedoc-mw-servmeta-private 5 1 2553 246 28.9mb 28.9mb
red open zipkin-2018-07-17 5 1 255069327 0 15.4gb 15.4gb
|
上面的结果中,zipkin-2018-07-14索引的状态是yellow,这是因为此时虽然有5个主分片和一个备份。但是由于只是单个节点,分片还在运行中,无法动态地修改。因此当有其他的节点加入到集群中时,备份的节点会被复制到另外一个节点中,状态就会变成 green。
4、删除索引
1
2
3
4
|
[root@localhost ~]# curl -XDELETE http://172.20.17.4:9200/zipkin-2018-07-14 # zipkin-2018-07-14为索引名称
{
"acknowledged":true
}
|
5、创建索引
1
|
curl -u esadmin:esadmin -H "Content-Type: application/json" -XPOST http://${DCEE_IP}:9200/xdhuxc_custom -T ./xdhuxc_custom.json
|
1、查询 elasticsearch 索引模板
1
2
|
curl -u esadmin:esadmin http://172.20.15.36:9200/_template?pretty # 返回所有索引模板,pretty 参数仅仅是指定Elasticsearch返回JSON格式结果
curl -XGET http://172.20.15.36:9200/_template/my_template #查询索引模板my_template
|
2、创建 elasticsearch 索引模板
创建一个名为my_template的模板,匹配所有my_index开头的索引,匹配成功后会按照settings和mappings创建一个新的索引.
1
2
3
4
5
6
7
8
9
|
curl -XPUT http://172.20.15.36:9200/_template/my_template -d'
{
"template": "my_index*", //匹配所有my_index开头的索引
"order":0,//当存在多个索引模板时并且某个索引两者都匹配时,使用order来确定模板合并顺序
"settings": {...},
"mappings" :{...}
}'
或
curl -u esadmin:esadmin -XPUT http://172.20.15.36:9200/_template/developer_docker* -T ./developer_docker.json
|
3、删除 elasticsearch 索引模板
1
|
curl -XDELETE http://172.20.15.36:9200/_template/my_template
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
[root@k8s-node ~]# curl -v -H "Content-Type:application/json" http://10.10.24.75:9200/_cat/indices?v | python -m json.tool
* About to connect() to 10.10.24.75 port 9200 (#0)
* Trying 10.10.24.75...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Connected to 10.10.24.75 (10.10.24.75) port 9200 (#0)
> GET /_cat/indices?v HTTP/1.1
> User-Agent: curl/7.29.0
> Host: 10.10.24.75:9200
> Accept: */*
> Content-Type:application/json
>
< HTTP/1.1 200 OK
< Content-Type: application/json; charset=UTF-8
< Content-Length: 337
<
{ [data not shown]
100 337 100 337 0 0 36050 0 --:--:-- --:--:-- --:--:-- 42125
* Connection #0 to host 10.10.24.75 left intact
[
{
"docs.count": "0",
"docs.deleted": "0",
"health": "yellow",
"index": "xdhuxc-app_2018-07-20",
"pri": "5",
"pri.store.size": "795b",
"rep": "1",
"status": "open",
"store.size": "795b"
},
{
"docs.count": "0",
"docs.deleted": "0",
"health": "yellow",
"index": "xdhuxc-app_2018-07-19",
"pri": "5",
"pri.store.size": "795b",
"rep": "1",
"status": "open",
"store.size": "795b"
}
]
|
http://blog.csdn.net/opensure/article/details/50824821
http://blog.sina.com.cn/s/blog_17943a64f0102x8x0.html