(二)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 ‘{请求体}’
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
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命令使用
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作为例子,其余一样。
:2.2.3:filter过滤器
filter和query并行度一直,等级一直
{
"query": {"match_all": {}},
"filter": {
"range": { "balance": { "gte":20000, "lte":30000 }
}
}
gte:大于等于
lte:小于等于