1
- # Elasticsearch API
1
+ # ElasticSearch Rest API
2
2
3
3
> ** [ Elasticsearch] ( https://github.com/elastic/elasticsearch ) 是一个分布式、RESTful 风格的搜索和数据分析引擎** ,能够解决不断涌现出的各种用例。 作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。
4
4
>
5
5
> [ Elasticsearch] ( https://github.com/elastic/elasticsearch ) 基于搜索库 [ Lucene] ( https://github.com/apache/lucene-solr ) 开发。ElasticSearch 隐藏了 Lucene 的复杂性,提供了简单易用的 REST API / Java API 接口(另外还有其他语言的 API 接口)。
6
6
>
7
7
> _ 以下简称 ES_ 。
8
8
9
- ## 一、REST API
10
-
11
9
> REST API 最详尽的文档应该参考:[ ES 官方 REST API] ( https://www.elastic.co/guide/en/elasticsearch/reference/current/rest-apis.html )
12
10
13
- ### 索引
11
+ ## 索引 API
14
12
15
- 新建 Index,可以直接向 ES 服务器发出 ` PUT ` 请求。
13
+ > 参考资料: [ Elasticsearch 官方之 cat 索引 API ] ( https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-indices.html )
16
14
17
- #### 创建索引
15
+ ### 创建索引
16
+
17
+ 新建 Index,可以直接向 ES 服务器发出 ` PUT ` 请求。
18
18
19
- 示例: 直接创建索引
19
+ (1) 直接创建索引
20
20
21
21
``` bash
22
22
curl -X POST ' localhost:9200/user'
@@ -28,21 +28,23 @@ curl -X POST 'localhost:9200/user'
28
28
{" acknowledged" : true ," shards_acknowledged" : true ," index" : " user" }
29
29
```
30
30
31
- 示例:创建索引时指定配置
31
+ (2)创建索引时指定配置
32
+
33
+ 语法格式:
32
34
33
35
``` bash
34
- $ curl -X PUT -H ' Content-Type: application/json ' ' localhost:9200/user ' -d '
36
+ $ curl -X PUT /my_index
35
37
{
36
- "settings" : {
37
- "index" : {
38
- "number_of_shards" : 3 ,
39
- "number_of_replicas" : 2
40
- }
38
+ " settings" : { ... any settings ... },
39
+ " mappings " : {
40
+ " type_one " : { ... any mappings ... } ,
41
+ " type_two " : { ... any mappings ... },
42
+ ...
41
43
}
42
- }'
44
+ }
43
45
` ` `
44
46
45
- 示例:创建索引时指定 ` mappings `
47
+ 示例:
46
48
47
49
` ` ` bash
48
50
$ curl -X PUT -H ' Content-Type: application/json' ' localhost:9200/user' -d '
@@ -56,63 +58,72 @@ $ curl -X PUT -H 'Content-Type: application/json' 'localhost:9200/user' -d '
56
58
}'
57
59
` ` `
58
60
59
- #### 删除索引
61
+ 如果你想禁止自动创建索引,可以通过在 ` config/elasticsearch.yml` 的每个节点下添加下面的配置:
62
+
63
+ ` ` ` js
64
+ action.auto_create_index: false
65
+ ` ` `
66
+
67
+ # ## 删除索引
60
68
61
69
然后,我们可以通过发送 ` DELETE` 请求,删除这个 Index。
62
70
63
71
` ` ` bash
64
72
curl -X DELETE ' localhost:9200/user'
65
73
` ` `
66
74
67
- #### 查看索引
75
+ 删除多个索引
76
+
77
+ ` ` ` js
78
+ DELETE /index_one,index_two
79
+ DELETE /index_*
80
+ ` ` `
81
+
82
+ # ## 查看索引
68
83
69
84
可以通过 GET 请求查看索引信息
70
85
71
86
` ` ` bash
72
87
# 查看索引相关信息
73
- curl -X GET ' localhost:9200/user '
88
+ GET kibana_sample_data_ecommerce
74
89
75
- # 查看索引的文档总数
76
- CURL -X ' localhost:9200/user/ _count'
90
+ # 查看索引的文档总数
91
+ GET kibana_sample_data_ecommerce/ _count
77
92
78
- # 查看前10条文档,了解文档格式
79
- POST user/_search
80
- {
81
- }
93
+ # 查看前10条文档,了解文档格式
94
+ GET kibana_sample_data_ecommerce/_search
82
95
83
- # _cat indices API
84
- # 查看indices
85
- CURL -X /_cat/indices/kibana*? v& s=index
96
+ # _cat indices API
97
+ # 查看indices
98
+ GET /_cat/indices/kibana*? v& s=index
86
99
87
- # 查看状态为绿的索引
88
- CURL -X /_cat/indices? v& health=green
100
+ # 查看状态为绿的索引
101
+ GET /_cat/indices? v& health=green
89
102
90
- # 按照文档个数排序
91
- CURL -X /_cat/indices? v& s=docs.count:desc
103
+ # 按照文档个数排序
104
+ GET /_cat/indices? v& s=docs.count:desc
92
105
93
- # 查看具体的字段
94
- CURL -X /_cat/indices/kibana*? pri& v& h=health,index,pri,rep,docs.count,mt
106
+ # 查看具体的字段
107
+ GET /_cat/indices/kibana*? pri& v& h=health,index,pri,rep,docs.count,mt
95
108
96
- # How much memory is used per index?
97
- CURL -X /_cat/indices? v& h=i,tm& s=tm:desc
109
+ # 查看索引占用的内存
110
+ GET /_cat/indices? v& h=i,tm& s=tm:desc
98
111
` ` `
99
112
100
- #### 打开/关闭索引
113
+ # ## 打开/关闭索引
101
114
102
115
通过在 ` POST` 中添加 ` _close` 或 ` _open` 可以打开、关闭索引。
103
- 关闭索引
104
-
105
- ``` bash
106
- curl -X POST ' localhost:9200/user/_close'
107
- ```
108
116
109
117
打开索引
110
118
111
119
` ` ` bash
112
- curl -X POST ' localhost:9200/user/_open'
120
+ # 打开索引
121
+ POST kibana_sample_data_ecommerce/_open
122
+ # 关闭索引
123
+ POST kibana_sample_data_ecommerce/_close
113
124
` ` `
114
125
115
- ### 文档
126
+ # # 文档
116
127
117
128
# ### 新增记录
118
129
@@ -372,9 +383,92 @@ $ curl -H 'Content-Type: application/json' 'localhost:9200/user/admin/_search?pr
372
383
}'
373
384
` ` `
374
385
375
- ## 二、Java API
386
+ # # 集群 API
387
+
388
+ > [Elasticsearch 官方之 Cluster API](https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster.html)
389
+
390
+ 一些集群级别的 API 可能会在节点的子集上运行,这些节点可以用节点过滤器指定。例如,任务管理、节点统计和节点信息 API 都可以报告来自一组过滤节点而不是所有节点的结果。
376
391
377
- TODO:待补充...
392
+ 节点过滤器以逗号分隔的单个过滤器列表的形式编写,每个过滤器从所选子集中添加或删除节点。每个过滤器可以是以下之一:
393
+
394
+ - ` _all` :将所有节点添加到子集
395
+ - ` _local` :将本地节点添加到子集
396
+ - ` _master` :将当前主节点添加到子集
397
+ - 根据节点ID或节点名将匹配节点添加到子集
398
+ - 根据IP地址或主机名将匹配节点添加到子集
399
+ - 使用通配符,将节点名、地址名或主机名匹配的节点添加到子集
400
+ - ` master:true` , ` data:true` , ` ingest:true` , ` voting_only:true` , ` ml:true` 或 ` coordinating_only:true` , 分别意味着将所有主节点、所有数据节点、所有摄取节点、所有仅投票节点、所有机器学习节点和所有协调节点添加到子集中。
401
+ - ` master:false` , ` data:false` , ` ingest:false` , ` voting_only:true` , ` ml:false` 或 ` coordinating_only:false` , 分别意味着将所有主节点、所有数据节点、所有摄取节点、所有仅投票节点、所有机器学习节点和所有协调节点排除在子集外。
402
+ - 配对模式,使用 ` * ` 通配符,格式为 ` attrname:attrvalue` ,将所有具有自定义节点属性的节点添加到子集中,其名称和值与相应的模式匹配。自定义节点属性是通过 ` node.attr.attrname: attrvalue` 形式在配置文件中设置的。
403
+
404
+ ` ` ` bash
405
+ # 如果没有给出过滤器,默认是查询所有节点
406
+ GET /_nodes
407
+ # 查询所有节点
408
+ GET /_nodes/_all
409
+ # 查询本地节点
410
+ GET /_nodes/_local
411
+ # 查询主节点
412
+ GET /_nodes/_master
413
+ # 根据名称查询节点(支持通配符)
414
+ GET /_nodes/node_name_goes_here
415
+ GET /_nodes/node_name_goes_*
416
+ # 根据地址查询节点(支持通配符)
417
+ GET /_nodes/10.0.0.3,10.0.0.4
418
+ GET /_nodes/10.0.0.*
419
+ # 根据规则查询节点
420
+ GET /_nodes/_all,master:false
421
+ GET /_nodes/data:true,ingest:true
422
+ GET /_nodes/coordinating_only:true
423
+ GET /_nodes/master:true,voting_only:false
424
+ # 根据自定义属性查询节点(如:查询配置文件中含 node.attr.rack:2 属性的节点)
425
+ GET /_nodes/rack:2
426
+ GET /_nodes/ra* :2
427
+ GET /_nodes/ra* :2*
428
+ ` ` `
429
+
430
+ # ## 集群健康 API
431
+
432
+ ` ` ` bash
433
+ GET /_cluster/health
434
+ GET /_cluster/health? level=shards
435
+ GET /_cluster/health/kibana_sample_data_ecommerce,kibana_sample_data_flights
436
+ GET /_cluster/health/kibana_sample_data_flights? level=shards
437
+ ` ` `
438
+
439
+ # ## 集群状态 API
440
+
441
+ 集群状态 API 返回表示整个集群状态的元数据。
442
+
443
+ ` ` ` bash
444
+ GET /_cluster/state
445
+ ` ` `
446
+
447
+
448
+
449
+ # # 节点 API
450
+
451
+ > [Elasticsearch 官方之 cat Nodes API](https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-nodes.html)——返回有关集群节点的信息。
452
+
453
+ ` ` ` bash
454
+ # 查看默认的字段
455
+ GET /_cat/nodes? v=true
456
+ # 查看指定的字段
457
+ GET /_cat/nodes? v=true& h=id,ip,port,v,m
458
+ ` ` `
459
+
460
+ # # 分片 API
461
+
462
+ > [Elasticsearch 官方之 cat Shards API](https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-shards.html)——shards 命令是哪些节点包含哪些分片的详细视图。它会告诉你它是主还是副本、文档数量、它在磁盘上占用的字节数以及它所在的节点。
463
+
464
+ ` ` ` bash
465
+ # 查看默认的字段
466
+ GET /_cat/shards
467
+ # 根据名称查询分片(支持通配符)
468
+ GET /_cat/shards/my-index-*
469
+ # 查看指定的字段
470
+ GET /_cat/shards? h=index,shard,prirep,state,unassigned.reason
471
+ ` ` `
378
472
379
473
# # 参考资料
380
474
0 commit comments