欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

(二)ElasticSearch的命令使用

程序员文章站 2022-05-19 10:04:57
...

1:ES在linux使用curl工具查询

1.1curl

curl 是centos自带的利用 URL 语法在命令行方式下工作的开源文件传输工具,使用 curl 可以简单 实现常见的 get/post 请求。

1.2:curl的shell使用

curl
-x 指定 http 的请求方法有: HEAD GET POST PUT DELETE
-d 指定要传输的数据
-H 指定 http 请求头信息

1.3:curl -X

查询所有
curl -XGET http://localhost:9200/_index/_type/1?pretty 
1:代表版本
2:?pretty,在任意的查询 url 中添加 pretty 参数,es 会美化获取 json 结果。`
请求体基本同kibana中的请求体
curl -XGET “http://localhost:9200/_index/_type/1?pretty“ -d ‘{请求体}’

(二)ElasticSearch的命令使用

2:结合kibana使用ES

安装下载自行百度

2.1常用运维命令

命令后+

?v	     会显示列名,查看更直观
?help	 查看帮助

2.1.1:get _cluster/health :查看集群状态

kibana查看集群状态

get _cluster/health
get _cluster/health/_index也可以查看某一索引的状态

curl查看集群状态

$ curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
{
  "cluster_name" : "testcluster",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 2,
  "number_of_data_nodes" : 2,
  "active_primary_shards" : 5,
  "active_shards" : 10,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0
}
集群健康状态是status:green,yellow和red。
在分片层次上,一个red状态表明这个指定的分片没有分配,yellow表示主分片分配但副本没有分配,green表示所有的分片都已经分配。
 "number_of_nodes" :                      # 集群所有节点数
 "number_of_data_nodes" :                 # 集群所有数据节点数 
 "active_primary_shards" :                # 集群所有索引的主分片数
 "active_shards" :                         # 集群所有索引的主分片数
 "relocating_shards" :                     # 表示当前集群分片从一个节点转移到另一个节点的分片数,这个值一般情况为0,但是可能会增加,当ES集群不平衡时会存在这种情况,比如一个新节点的加入或一个几点关闭。
 "initializing_shards" :                   # 表示分片在创建初期的分片数
 "unassigned_shards" :                     # 未分配分片数
 "delayed_unassigned_shards":              # 延迟的没有分配数据的分片
 "number_of_pending_tasks" :               # pending状态的任务
索引级别的状态由分片的最差状态决定。集群状态由最差的索引状态控制。

2.1.2:GET /_nodes/stats:查看节点索引性能状态

refresh.total:总刷新计数。刷新总数的计数。
refresh.total_time_in_millis:刷新总时间。汇总所有花在刷新的时间(以毫秒为单位进行测量)。
merges.current_docs:目前的合并。合并目前正在处理中。
merges.total_docs:合并总数。合并总数的计数。
merges.total_stopped_time_in_millis。合并花费的总时间。合并段的所有时间的聚合

JVM模块运行的重要指标如下:

mem:内存使用情况。堆和非堆进程和池的使用情况统计信息。
threads:当前使用的线程和最大数量。
gc:垃圾收集。算和垃圾收集所花费的总时间。

2.1.3:ES的cat 操作,查看ES的各种数据:get _cat

ES的cat API的官方文档
(二)ElasticSearch的命令使用

2.1.3.1:get _cat/indices:ES集群索引状态查看
get _cat/indices

结果解释

1)pri:主分配, rep:副本分片
3)docs.count :文档数
4)docs.delete :  删除文档数
5)store.size全部分片存储大小
6)pri store size,  主分片存储大小
2.1.3.2: GET _cat/nodes:集群主从节点状态查看
GET _cat/nodes?v	:查看各节点状态
get  _cat/master?v	:查看当前集群的主节点
2.1.3.2:get _cat/master?v :查看当前集群的主节点
id                  			   host  		ip             			 node
AhlyPtZYTta1AVH_7mUSbQ 			  node1 		192.168.113.101 		master-1
2.1.3.3:GET _cat/nodes?v :查看各节点状态,内存消耗

列出所有node, 并展示node所在机器的运行状态信息.
es的内存对ES的状态影响

heap.percent 堆内存占用百分比
ram.percent 内存占用百分比,达到100%查看内存优化
cpu CPU占用百分比
master *表示节点是集群中的主节点
name 节点名

es的内存占用大小对es稳定性的影响
ES内存优化以及分析

现在让我们假设您有一个集群,它有三个节点,整体内存压力要高得多。在这个例子中,三个节点中的两个节点在很长一段时间内非常有规律地最大化,一个节点始终徘徊在垃圾收集开始的75%左右。

High memory pressure
高内存压力从两个方面影响集群性能:当内存压力升至75%及以上时,可用内存会减少,但是您的集群现在还需要花费一些CPU资源来通过垃圾收集回收内存。垃圾收集进行时,这些*处理器资源不可用于处理用户请求。因此,随着系统资源越来越受限,用户请求的响应时间会增加。如果内存压力持续上升并接近100%,则会使用更激进的垃圾收集形式,这反过来会极大地影响集群响应时间。

High response times
在我们的例子中索引响应时间度量显示,高内存压力会对性能产生显著影响。由于三个节点中的两个节点多次最大化其内存,并在100%内存压力下稳定30到45分钟,因此索引响应时间在23:00、00:00和01:00左右急剧增加。未显示的搜索响应时间也有所增加,但没有那么显著。只有蓝色的节点持续显示出健康得多的记忆压力,很少超过75%,才能维持较低的响应时间。

如果高内存压力对性能的影响不可接受,您需要增加群集大小或减少工作负载
2.1.3.4:GET _cat/allocation?v:各节点机器存储信息
shards 节点所承载的分片数
disk.indices 索引占用的空间大小
disk.used 节点所在机器已使用磁盘空间
disk.avail 节点可用磁盘大小
ip 节点所属机器IP地址
node 节点名
2.1.3.5:GET _cat/shards?v:列出集群中所有分片
index 索引名称
shard 分片序号
prirep p表示该分片是主分片, r 表示该分片是复制分片
store 该分片占用存储空间
node 所属节点节点名
docs 分片存放的文档数
2.1.3.6: GET /_cat/thread_pool:各节点线程池信息查看

输出每个节点集群范围的线程池统计信息,默认情况下返回正在活动,队列和被拒绝的统计信息,若拒绝或者队列过多,查看资源。

2.2:ES的查询query命令使用

query查询官网介绍

2.2.1:demo实例

请求体:

{
 "query":
 	 {"match_all": {}
 	 }, 
 	 "size": 1
  }'
query:告诉我们定义查询
match_all:运行简单类型查询指定搜索中的所有文档
size:从 from 开始,返回多个文档
from:指定文档索引从哪里开始,默认从 0 开始

2.2.2:ES的过滤器使用

2.2.1:bool布尔过滤器
must:要求所有条件都要满足(类似于&&)
should:任何一个满足就可以(类似于||)
must_not:所有条件都不能满足(类似于! (&&))

以must作为例子,其余一样。
(二)ElasticSearch的命令使用

:2.2.3:filter过滤器

filter和query并行度一直,等级一直

{
"query": {"match_all": {}},
"filter": {
 	 "range": { "balance": { "gte":20000, "lte":30000 } 
		}
}
gte:大于等于
lte:小于等于