当我们的ES集群搭建完成以后,我怎么能看到集群中各个节点状态以及主节点和健康情况呢,如下讲解使用curl命令来与ES集群进行交互、分别有查询主节点情况、集群状态、以及创建索引查看索引、查看分片以及对ES集群进行查询请求等操作。

CURL语法讲解

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格式的请求主体

Elasticsearch基本查询语句

//查看_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'

Elasticsearch CURD语法

CURD 请求方式 主体 说明
Create PUT /index/_create/id 指定Document ID,创建文档,如果ID已存在,则失败
Create POST /index/_create/id 指定Document ID,创建文档,如果ID已存在,则失败
Create POST /index/_doc 自动生成ID,不会重复,重复提交则创建多个文档,文档版本都为1
Index PUT /index/_doc/id 如果ID不存在,则创建新的文档,如果ID存在,则删除现有文档后创建新的文档,版本+1,ID相同
Index POST /index/_doc/id 如果ID不存在,则创建新的文档,如果ID存在,则删除现有文档后创建新的文档,版本+1,ID相同
Read GET /index/_doc/id 查看Document ID为1的文档
Update POST /index/_doc/id 文档必须存在,否则更新失败,只能增量修改字段,不能减少字段,字段值可以随意修改,版本加1
Delete Delete /index/_doc/id 文档必须存在,否则删除返回"not_found"
Delete Delete /index 删除索引,索引内的文档也会被随之而删除,要删除的索引必须存在,否则返回 "404"

Create创建索引及文档

Create一个文档时,Elasticsearch支持自动生成文档ID和指定文档ID两种方式。

1.通过调用 POST /index/_doc 语法,系统自动生成文档Document ID。此种方法,即使创建的JSON文档重复,Document ID也不一致,如果重复使用POST多次提交,Elasticsearch将会创建多个内容重复但ID不一致的文档。

2.通过调用 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创建索引文档或更新

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为读取文档内容,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更新文档

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删除文档

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'

Bulk API 批量操作

1.支持在一次API调用中,对不同索引进行操作
2.支持四种操作 Index、Create、Update、Delete
3.可以在 URI 中指定 Index,也可以在请求的 Playoad 中进行
4.操作中单条语句操作失败,不会影响后续操作
5.返回结果包含了每一条的执行结果


#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的文档

使用 bulk api 批量操作的每条语句都会进行返回结果,如下

MGET 批量读取

Elasticsearch中提供了 mget 批量读取的方式,批量操作,减少了网络连接所产生的开销。提高性能


GET _mget
{
"docs":[ //docs为mget格式
{
"_index": "bulk_index", //指定要读取文档的索引
"_id" : 1 //指定读取文档的ID
},
{
"_index": "bulk_index", //同一索引内的不同ID联合读取
"_id" : 2
},
{
"_index": "index", //不同索引中的不同ID联合读取
"_id" : 1
}
]
}

结果如下:

MSEARCH 批量查询

msearch全称 Multi Serach API是一个可以进行条件匹配查询的语法

GET /<index>/_msearch

介绍 mserach官方解释说从单个API中获取多个搜索结果,请求的格式类似于批量API格式,并使用换行符分隔的JSON(NDJSON)格式。最后一行数据必须以换行符 \n 结尾。每个换行符前面都可以有一个回车符 \r。向此端点发送请求时,Content-Type标头应设置为application/x-ndjson

路径参数 (可选,字符串)索引名称的逗号分隔列表或通配符表达式,用于限制请求。

请求主体

1.aggregations聚合 (可选,对象)指定聚合。

2.from 来自 (可选,整数)起始文档偏移量。预设为0。

3.max_concurrent_searches同时最多查询 (可选,整数)指定多重搜索API将执行的并发搜索的最大数量,此默认值基于数据节点的数量和默认搜索线程池大小。

4.max_concurrent_shard_requests (可选,整数)指定每个子搜索请求将在每个节点上执行的并发分片请求的最大数量。此参数应用于保护单个请求,以防止集群过载(例如,默认请求将命中集群中的所有索引,如果每个节点的分片数量很高,则可能导致分片请求被拒绝)。默认为5。在某些情况下,并发请求无法实现并行性,因此这种保护将导致性能下降。例如,在仅期望很少数量的并发搜索请求的环境中,可能有助于将该值增加到更大的数目。

5.preference (可选,字符串)指定应该对其执行操作的节点或分片。默认为随机。

6.query (可选,查询对象)使用查询DSL定义搜索定义。

7.routing (可选,字符串)以指定的主分片为目标。

8.search_type (可选,字符串)搜索操作的类型。可用选项:

query_then_fetch

dfs_query_then_fetch

9.size (可选,整数)要返回的点击数。默认为10。

响应正文 responses (数组)包括与原始多重搜索请求中的顺序匹配的每个搜索请求的搜索响应和状态代码。如果特定搜索请求完全失败,error则将返回带有消息和相应状态代码的对象,代替实际的搜索响应。

实例 标头部分包括要搜索的一个或多个索引,search_type,首选项和路由。该正文包括典型的搜索正文请求(包括查询,聚合,来源,大小等)。


$ cat requests
{"index" : "test", "index"}
{"query" : {"match_all" : {}}, "from" : 0, "size" : 10}
{"index" : "test", "search_type" : "dfs_query_then_fetch"}
{"query" : {"match_all" : {}}}
{}
{"query" : {"match_all" : {}}} {"query" : {"match_all" : {}}}
{"search_type" : "dfs_query_then_fetch"}
{"query" : {"match_all" : {}}}

常见错误返回

问题 原因
无法连接 网络故障或集群挂了
连接无法关闭 网络故障或节点出错
429 集群过于繁忙
4xx 请求体格式错误
500 集群内部错误

来源:马哥Linux运维

https://mp.weixin.qq.com/s/qZq_EV9q1LUUzOZeTzhA-g

Elasticsearch基本CURD操作语法讲解的更多相关文章

  1. PID控制器的数字实现及C语法讲解

    PID控制器的数字实现及C语法讲解 概述 为方便学习与交流,根据自己的理解与经验写了这份教程,有错误之处请各位读者予以指出,具体包含以下三部分内容: (1)  PID数字化的推导过程(实质:微积分的近 ...

  2. ElasticSearch+Kibana 索引操作

    ElasticSearch+Kibana 索引操作 一 前言 ElasticiSearch 简介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引 ...

  3. ElasticSearch之 控制相关度原理讲解

    控制相关度 相关度评分背后的理论 如何计算评分的 Lucene 使用布尔模型(Boolean model) 查找匹配文档 并主要的借鉴了 词频/逆向文档频率(term frequency/invers ...

  4. MySQL 的 CURD 操作

    0. 说明 CURD 操作通常是使用关系型数据库系统中的结构化查询语言(Structured Query Language,SQL)完成的 CURD 定义了用于处理数据的基本原子操作 CURD 代表创 ...

  5. innobackupex 相关语法讲解【转】

    innobackupex 相关语法讲解 连接服务器 The database user used to connect to the server and its password are speci ...

  6. 轻量级ORM框架Dapper应用二:使用Dapper实现CURD操作

    在上一篇文章中,讲解了如何安装Dapper,这篇文章中将会讲解如何使用Dapper使用CURD操作. 例子中使用到的实体类定义如下: using System; using System.Collec ...

  7. ElasticSearch之CURL操作(有空再去整理)

    https://www.cnblogs.com/jing1617/p/8060421.html ElasticSearch之CURL操作 CURL的操作    curl是利用URL语法在命令行方式下工 ...

  8. TP中CURD操作

    CURD操作 CURD操作也就是模型操作数据表的基本操作.C(Create).U(Update).R(Read).D(Delete)操作就是增删改查操作. 6.1.增加操作 回想一下在mysql中增加 ...

  9. Laravel框架中的数据库CURD操作、连贯操作、链式操作的用法

    Laravel是一套简洁.优雅的PHP Web开发框架(PHP Web Framework).它可以让你从面条一样杂乱的代码中解脱出来:它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁.富于 ...

随机推荐

  1. 水题挑战4: luogu P1280 尼克的任务

    题目描述 尼克每天上班之前都连接上英特网,接收他的上司发来的邮件,这些邮件包含了尼克主管的部门当天要完成的全部任务,每个任务由一个开始时刻与一个持续时间构成. 尼克的一个工作日为 \(n\) 分钟,从 ...

  2. IOCP 模型2 AcceptEx

    // IOCP2.cpp : Defines the entry point for the console application. // #include "stdafx.h" ...

  3. pytorch加载语音类自定义数据集

    pytorch对一下常用的公开数据集有很方便的API接口,但是当我们需要使用自己的数据集训练神经网络时,就需要自定义数据集,在pytorch中,提供了一些类,方便我们定义自己的数据集合 torch.u ...

  4. day83:luffy:添加购物车&导航栏购物车数字显示&购物车页面展示

    目录 1.添加购物车+验证登录状态 2.右上方购物车图标的小红圆圈数字 3.Vuex 4.购物车页面展示-后端接口 5.购物车页面展示-前端 6.解决一个购物车数量显示混乱的bug 1.添加购物车+验 ...

  5. php拓展 swoole 安装

    1.git clone https://gitee.com/swoole/swoole.git 2.cd swoole 3./usr/local/php7/bin/phpize 4../configu ...

  6. 论文解读 - Composition Based Multi Relational Graph Convolutional Networks

    1 简介 随着图卷积神经网络在近年来的不断发展,其对于图结构数据的建模能力愈发强大.然而现阶段的工作大多针对简单无向图或者异质图的表示学习,对图中边存在方向和类型的特殊图----多关系图(Multi- ...

  7. javascript中什么是函数

    函数的定义 在javascript中函数是一段可以被执行或调用任意次数的JavasScript代码,在数据类型中属于"function".函数也拥有属性和方法,因此函数也是对象. ...

  8. vs code远程开发

    VS Code如何配置远程开发 你是如何远程开发的?还在使用FTP/SFTP同步文件?那你out了,有了宇宙第一IDE:VS就不需要这么麻烦了,一起学习一下吧. 第一步,安装Remote SSH插件 ...

  9. 四、API Gateway相关------微服务构架设计模式

  10. Go语言内存分配(详述 转)

    一.内存管理简介 1.1 虚拟内存 虚拟内存是当代操作系统必备的一项重要功能,对于进程而言虚拟内存屏蔽了底层了RAM和磁盘,并向进程提供了远超物理内存大小的内存空间.我们看一下虚拟内存的分层设计. 上 ...