当我们的ES集群搭建完成以后,我怎么能看到集群中各个节点状态以及主节点和健康情况呢,如下讲解使用curl命令来与ES集群进行交互、分别有查询主节点情况、集群状态、以及创建索引查看索引、查看分片以及对ES集群进行查询请求等操作。
RESTful API:
curl -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>'
-X:指定请求方式
<VERB>:GET,POST,PUT,DELETE 一般请求为GET、提交变更为POST、上传文件为PUT、删除操作为DELETE
<PROTOCOL>:协议,一般为HTTP协议
<HOST>:主机,可为主机的IP地址或Hostname
<PORT>:主机端口
<PATH>:路径,主机端口后的路径,如下几个路径:/_cat, /_search, /_cluster /_cat路径覆盖了大多数的信息内容,/_search为搜索所有的索引和文档类型
<QUERY_STRING>:查询字符串匹配规则
-d:指定主体内容
<BODY>:json格式的请求主体
//查看_cat支持的信息
kibana: GET /_cat
bash: curl -XGET -u elastic:26tBktGolYCyZD2pPISW 'http://192.168.31.215:9201/_cat'
//查看主节点信息
kibana: GET /_cat/master?v
bash: curl -XGET -u elastic:26tBktGolYCyZD2pPISW 'http://192.168.31.215:9201/_cat/master?v'
//查看集群所有节点
kibana: GET /_cat/nodes?v
bash: curl -XGET -u elastic:26tBktGolYCyZD2pPISW 'http://192.168.31.215:9201/_cat/nodes?v'
//查看所有索引信息
kibana: GET /_cat/indices?v
bash: curl -XGET -u elastic:26tBktGolYCyZD2pPISW 'http://192.168.31.215:9201/_cat/indices?v'
//查看单个索引信息
kibana: GET /_cat/indices/movies?v
bash: curl -XGET -u elastic:26tBktGolYCyZD2pPISW 'http://192.168.31.215:9201/_cat/indices/movies?v'
//查看所有分片信息
kibana: GET /_cat/shards?v
bash: curl -XGET -u elastic:26tBktGolYCyZD2pPISW 'http://192.168.31.215:9201/_cat/shards?v'
//查看单个索引分片信息
kibana: GET /_cat/shards/movies?v
bash: curl -XGET -u elastic:26tBktGolYCyZD2pPISW 'http://192.168.31.215:9201/_cat/shards/movies?v'
//查看集群健康状态
kibana: GET /_cat/health?v
kibana: GET _cluster/health
bash: curl -XGET -u elastic:26tBktGolYCyZD2pPISW 'http://192.168.31.215:9201/_cat/health?v'
bash: curl -XGET -u elastic:26tBktGolYCyZD2pPISW 'http://192.168.31.215:9201/_cluster/health?pretty'
//查看插件
kibana: GET /_cat/plugins?v
bash: curl -XGET -u elastic:26tBktGolYCyZD2pPISW 'http://192.168.31.215:9201/_cat/plugins?v'
//查看所有索引文档总数
kibana: GET _all/_count
bash: curl -XGET -u elastic:26tBktGolYCyZD2pPISW 'http://192.168.31.215:9201/_all/_count?pretty'
//查看指定索引文档总数
kibana: GET movies/_count
bash: curl -XGET -u elastic:26tBktGolYCyZD2pPISW 'http://192.168.31.215:9201/movies/_count?pretty'
//查看所有模板
kibana: GET _cat/templates
bash: curl -XGET -u elastic:26tBktGolYCyZD2pPISW 'http://192.168.31.215:9201/_cat/templates?v'
//查看状态为绿的索引
kibana: GET /_cat/indices?v&health=green
bash: curl -XGET -u elastic:26tBktGolYCyZD2pPISW 'http://192.168.31.215:9201/_cat/indices?v&health=green'
//查看movies索引元数据
kibana: GET movies
bash: curl -XGET -u elastic:26tBktGolYCyZD2pPISW 'http://192.168.31.215:9201/movies?pretty'
//按照文档数量排序索引
kibana: GET _cat/indices?v&s=docs.count:desc
bash: curl -XGET -u elastic:26tBktGolYCyZD2pPISW 'http://192.168.31.215:9201/_cat/indices?v&s=docs.count:desc'
//查看各个索引占用内存大小并进行排序
kibana:
bash: curl -XGET -u elastic:26tBktGolYCyZD2pPISW 'http://192.168.31.215:9201/_cat/indices?v&h=i,tm&s=tm:desc'
CURD请求方式主体说明CreatePUT/index/_create/id指定Document ID,创建文档,如果ID已存在,则失败CreatePOST/index/_create/id指定Document ID,创建文档,如果ID已存在,则失败CreatePOST/index/_doc自动生成ID,不会重复,重复提交则创建多个文档,文档版本都为1IndexPUT/index/_doc/id如果ID不存在,则创建新的文档,如果ID存在,则删除现有文档后创建新的文档,版本+1,ID相同IndexPOST/index/_doc/id如果ID不存在,则创建新的文档,如果ID存在,则删除现有文档后创建新的文档,版本+1,ID相同ReadGET/index/_doc/id查看Document ID为1的文档UpdatePOST/index/_doc/id文档必须存在,否则更新失败,只能增量修改字段,不能减少字段,字段值可以随意修改,版本加1DeleteDelete/index/_doc/id文档必须存在,否则删除返回"not_found"DeleteDelete/index删除索引,索引内的文档也会被随之而删除,要删除的索引必须存在,否则返回 "404"。
Create一个文档时,Elasticsearch支持自动生成文档ID和指定文档ID两种方式。
POST /index/_doc
语法,系统自动生成文档Document ID。此种方法,即使创建的JSON文档重复,Document ID也不一致,如果重复使用POST多次提交,Elasticsearch将会创建多个内容重复但ID不一致的文档。POST /index/_create/id
或PUT /index/_create/id
语法,则手动指定生成Document ID,此种方法,如果我们指定ID的文档已存在,则创建失败,反正创建文档。实例 自动生成 Document ID
#Kibana语法
POST /index/_doc
{
"name": "WeiLiang Xu",
"Blogs": "abcops.cn",
"Is male": true,
"age": 25
}
#Bash语法
curl -XPOST -u elastic:26tBktGolYCyZD2pPISW -H "Content-Type:application/json" 'http://192.168.31.215:9201/index/_doc?pretty' -d '
{
"name": "WeiLiang Xu",
"Blogs": "abcops.cn",
"Is male": true,
"age": 25
}
POST 请求指定 Document ID
#Kibana POST请求语法
POST /index/_create/1
{
"name": "WeiLiang Xu",
"Blogs": "abcops.cn",
"Is male": true,
"age": 25
}
#Bash POST请求语法
curl -XPOST -u elastic:26tBktGolYCyZD2pPISW -H "Content-Type:application/json" 'http://192.168.31.215:9201/index/_create/1?pretty' -d '
{
"name": "WeiLiang Xu",
"Blogs": "abcops.cn",
"Is male": true,
"age": 25
}'
PUT请求指定 Document ID
#Kibana PUT请求语法
PUT /index/_create/1
{
"name": "WeiLiang Xu",
"Blogs": "abcops.cn",
"Is male": true,
"age": 25
}
#Bash PUT请求语法
curl -XPUT -u elastic:26tBktGolYCyZD2pPISW -H "Content-Type:application/json" 'http://192.168.31.215:9201/index/_create/1?pretty' -d '
{
"name": "WeiLiang Xu",
"Blogs": "abcops.cn",
"Is male": true,
"age": 25
}'
Index语法可以有两种HTTP请求方式,分别是 POST
和PUT
,这种请求方法通过调用 /index/_doc/id
语法,指定了 Document ID来创建文档,如果Document
ID不存在,则创建为新的文档,如果ID存在,则删除现有ID后创建新的文档,Document Version会进行 + 1。
Index方式的原理是:如果文档已存在,先删除原有文档,然后再进行新增文档,版本+1。
实例
#Kibana操作
POST /index/_doc/6 #PUT语法只需要把 POST 改为 PUT即可
{
"name": "WeiLiang Xu",
"Blogs": "abcops.cn",
"Is male": true,
"age": 25
}
#Bash操作
curl -XPUT -u elastic:26tBktGolYCyZD2pPISW -H "Content-Type:application/json" 'http://192.168.31.215:9201/index/_doc/6?pretty' -d '
{
"name": "WeiLiang Xu",
"Blogs": "abcops.cn",
"Is male": true,
"age": 25
}'
Read为读取文档内容,Read使用的HTTP请求方式为 GET ,
#Kibana操作
GET /index/_doc/1 #操作index索引中Document ID为1的文档
#Bash操作
curl -XGET -u elastic:26tBktGolYCyZD2pPISW 'http://192.168.31.215:9201/index/_doc/1?pretty'
#更多的GET语法见文章顶部
Update方法与Index不同的是,Update在更新文档的时候不会删除原来的文档,而是真正的更新数据。 Update更新的文档必须真实存在,Update更新只能对字段进行增量修改,对字段值可以进行随意更改,不能对文档字段进行减少更新。如果你需要减少字段,则使用Index去操作文档。
实例
#Kibana操作
POST /weiliang/_update/1
{
"doc": {
"name": ["weiliang Xu","xueiliang"],
"JobS": "Linux DevOps",
"Age": 25,
"gender": "man"
}
}
#Bash操作
curl -XPOST -u elastic:26tBktGolYCyZD2pPISW -H "Content-Type:application/json" 'http://192.168.31.215:9201/weiliang/_update/1?pretty' -d '
{
"doc": {
"name": ["weiliang Xu","xueiliang"],
"JobS": "Linux DevOps",
"Age": 25,
"gender": "man"
}
}'
Delete可以指定Document ID删除文档,也可以直接删除索引,删除索引,索引内的文档都随之被删除。
#Kibana操作
DELETE /weiliang/_doc/1 #删除指定文档
DELETE /weiliang #删除索引
#Bash操作
curl -XDELETE -u elastic:26tBktGolYCyZD2pPISW -H "Content-Type:application/json" 'http://192.168.31.215:9201/weiliang/_doc/1?pretty'
curl -XDELETE -u elastic:26tBktGolYCyZD2pPISW -H "Content-Type:application/json" 'http://192.168.31.215:9201/weiliang?pretty'
Index
、Create
、Update
、Delete
实例
#Kibana操作
POST _bulk
{ "create" : { "_index" : "bulk_index", "_id" : "1" } } //创建了索引为 bulk_index ,id为1的文档
{ "Job" : "Linux Ops" } //文档内容为字段 "Job" 值 "Linux Ops"
{ "delete" : { "_index" : "bulk_index", "_id" : "2" } } //删除索引为 bulk_index 中 id 为 2的文档,因为我们暂时还没有 id 为2的文档,所以此次执行返回 not_found,但是不影响后续语句执行
{ "update" : { "_id": "1", "_index" : "bulk_index" } } //增量更新了 bulk_index 中 id 为 1 的文档,注意这里的写法是 _id 在前,_index 在后
{ "doc" : {"name" : "xuweiliang"} }
{ "index" : {"_index" : "bulk_index", "_id" : "1" } } //Index方式操作了 bulk_index 索引的 id 为 1 的文档,把文档内容改了如下
{ "name" : "xuweiliang" }
{ "create" : { "_index" : "bulk_index", "_id" : "2" } } //在 bulk_index 索引中 创建了一个 id 为 2 的文档
{ "name" : "xuweiliang" , "Age" : 25 }
{ "delete" : { "_index" : "bulk_index", "_id" : "2" } } //删除了 bulk_index 索引中 id 为 2的文档
Elasticsearch中提供了 mget 批量读取的方式,批量操作,减少了网络连接所产生的开销。提高性能
实例
本文系作者在时代Java发表,未经许可,不得转载。
如有侵权,请联系nowjava@qq.com删除。