[13]ES常用查询命令

本文集主要是总结自己在项目中使用ES 的经验教训,包括各种实战和调优。


本文主要包含es 相关的各种查询命令,在进行系统调优和系统故障排查等方面还是会用到的。

系统级的查询命令

该模块均来自:http://blog.csdn.net/xialei199023/article/details/48085125

查看集群状态信息: curl -XGET "http://localhost:9200/_cat/health?v"

显示集群系统信息,包括CPU JVM等: curl -XGET http://localhost:9200/_cluster/stats?pretty

显示集群详细信息。包括节点、分片等。 curl -XGET http://localhost:9200/_cluster/state?pretty

显示集群详细信息:curl -XGET http://localhost://localhost:9200/_cluster/pending_task?pretty

查看每个操作返回字段的含义: curl -XGET "192.168.1.101:9200/_cat/heath?help"

指定返回字段:curl -XGET "192.168.1.101:9200/_cat/health?h=cluster,pri,relo&v"

查看集群中节点信息: curl -XGET "192.168.1.101:9200/_cat/nodes?v"

查看每个分片存放数据量等信息:curl -XGET http://localhost:9200/_cat/shards

查看mapping: curl -XGET ‘http://localhost:9200/subscribe/_mapping’?pretty

查看分词情况: curl http://localhost:9200/subscribe/_analyze?analyzer="english" -d'{"text":"helloworld"}'

x-pack激活命令:curl -XPUT 'http://localhost:9200/_xpack/license' -H "Content-Type: application/json" -d @license.json

查看集群相关信息:

curl -XGET http://localhost:9200/?pretty

curl -XGET localhost:9200/_cat/shards

curl -XGET http://localhost:9200/_settings

关闭节点 :关闭指定192.168.1.1节点

curl -XPOST ‘http://192.168.1.1:9200/_cluster/nodes/_local/_shutdown’

curl -XPOST ‘http://localhost:9200/_cluster/nodes/192.168.1.1/_shutdown’

关闭主节点

curl -XPOST ‘http://localhost:9200/_cluster/nodes/_master/_shutdown’

关闭整个集群

curl -XPOST ‘http://localhost:9200/_shutdown?delay=10s’

curl -XPOST ‘http://localhost:9200/_cluster/nodes/_shutdown’

curl -XPOST ‘http://localhost:9200/_cluster/nodes/_all/_shutdown’

delay=10s表示延迟10秒关闭

查看集群中索引信息:curl -XGET "192.168.1.101:9200/_cat/indices?v" //可以查看出文档数和所占存储大小

创建一个信息索引:curl -XPUT "192.168.1.101:9200/index_test"

查看所有index:curl 'localhost:9200/_cat/indices?v'

创建索引:curl -XPUT 'http://localhost:9200/index'

删除mapping:curl -XDELETE 'localhost:9200/index_test/_mapping/test_type'

查看索引的mapping:curl -XGET 'localhost:9200/index_test/_mapping/test_type'

查询节点状态:

curl -XGET ‘http://localhost:9200/_nodes/stats?pretty=true’ 查看当前线程组状态

curl -XGET ‘http://localhost:9200/_nodes/192.168.1.2/stats?pretty=true’

curl -XGET ‘http://localhost:9200/_nodes/process’

curl -XGET ‘http://localhost:9200/_nodes/_all/process’

curl -XGET ‘http://localhost:9200/_nodes/192.168.1.2,192.168.1.3/jvm,process’

curl -XGET ‘http://localhost:9200/_nodes/192.168.1.2,192.168.1.3/info/jvm,process’

curl -XGET ‘http://localhost:9200/_nodes/192.168.1.2,192.168.1.3/_all

curl -XGET ‘http://localhost:9200/_nodes/hot_threads


数据级的查询命令:

curl -i -XGET http://localhost:9200/website/blog/124?pretty -i参数会打印响应头

GET /website/blog/123?_source=title,text 检索文档的一部分

GET /website/blog/123/_source 只获得原数据

curl -i -XHEAD http://localhost:9200/website/blog/123 检查文档是否存在,不会返回响应体,只有HTTP头

多索引查询语句: curl -XGET localhost:9200/test1,test2/_search?pretty -d '{"query":{"match_all":{}}}'

带路由查询语句: curl -XGET “http://localhost:9200/dy/jdbc/CDNMR9G2051780GP?routing=W4575369336327128536

带两个查询条件的命令:curl -XGET http://localhost:9200/dy/weiyongjun1/_search?q=*&routing=W7661183092532399139&title="国家欠70后一个交代你知道吗"

通过query的查询语句:

curl -XGET 'http://localhost:9200/subscribe_moparticle/moparticle/_search' -d '{

"query" : {

"term" : { "docid" : "9KNV3MB80513003V" }

}

}'


索引类接口

  • 通过下面的接口创建一个索引名称为indexname且包含3个分片、1个副本的索引。

curl -XPUT 'localhost:9200/indexname?pretty' -H 'Content-Type: application/ json' -d'

{

"settings" : {

 "number_of_shards" : 3,

 "number_of_replicas" : 1

}

}'

  • 通过下面的接口删除索引。

curl -XDELETE ' localhost:9200/indexname '

通过该接口就可以删除索引名称为indexname的索引。

通过下面的接口可以删除多个索引。

curl -XDELETE 'localhost:9200/indexname1, indexname2 '

curl -XDELETE ' localhost:9200/indexname*'

通过下面的接口可以删除集群下的全部索引。

curl -XDELETE ' localhost:9200/_all'

curl -XDELETE ' localhost:9200/* '

进行全部索引的删除是很危险的,我们可以通过在配置文件中添加下面的配置信息,来关闭使用_all和使用通配符删除索引的接口,使删除索引只能通过索引的全称进行。

action.destructive_requires_name:true

  • 通过下面的接口获取索引的信息,其中,pretty参数用于格式化输出结果,以便更容易阅读。

curl -XGET ' localhost:9200/indexname?pretty'

  • 通过下面的接口关闭、打开索引。

curl -XPOST ' localhost:9200/indexname/_close'

curl -XPOST ' localhost:9200/indexname/_open'

  • 通过下面的接口获取一个索引中具体type的mapping映射。

curl -XGET ' localhost:9200/indexname/typename/_mapping?pretty'

当一个索引中有多个type时,获得mapping时要加上typename。

  • 通过下面的接口获取索引中一个字段的信息。

curl -XGET 'localhost:9200/indexname/indexname/_mapping/field/fieldname'

  • 通过下面的接口为索引添加别名(_alias)。

curl -XPUT ' localhost:9200/indexname/_alias/aliasname?pretty'

以上接口为索引indexname添加了别名aliasname,添加成功后可以通过别名或索引名访问该索引。

  • 通过下面的接口对索引别名进行批量操作(_aliases)。

curl -XPOST ' localhost:9200/_aliases?pretty'-H 'Content-Type: application/json' -d'{

"actions": [

   { "remove": {"index": "indexname", "alias":"aliasname" }},

   { "add":    { "index": "indexname", "alias": "newalias" }}

]

}'

通过_aliases接口对索引的别名进行添加和移除,remove表示移除,add表示添加。可以同时对多个索引进行操作。

  • 通过下面的接口获取索引的settings。

curl -XGET'localhost:9200/indexname/_settings?pretty'

settings是索引级别的,不需要添加typename。

  • 通过下面的接口进行分析(分析某个字段是如何建立索引的)。

curl-XGET 'localhost:9200/indexname/_analyze?pretty' -H 'Content-Type:application/json' -d'{

"field": "fieldname",

"text": "使用fieldname分词的数据"

}'

该接口返回的是对字符串“使用fieldname分词的数据”使用fieldname的分词方式。

  • 通过下面的接口清除索引上的缓存。

curl-XPOST 'localhost:9200/indexname/_cache/clear?pretty'

  • 通过下面的接口刷新(flush)索引。

curl-XPOST 'localhost:9200/indexname/_flush?pretty'

  • 通过下面的接口刷新(refresh)索引。

curl-XPOST 'localhost:9200/indexname/_refresh ?pretty'

  • 通过下面的接口对索引进行优化:

curl-XPOST 'localhost:9200/indexname/_forcemerge?pretty'

在Elasticsearch5.x之后的版本中使用_forcemerge替换了_optimize命令。


cat接口

cat命令提供了一系列的Elasticsearch集群状态的查询接口。通过执行curl-XGET localhost: 9200/_cat 获取所有的_cat命令:

/_cat/aliases

/_cat/aliases/{alias}

/_cat/templates

/_cat/health

/_cat/nodes

/_cat/allocation

/_cat/count

/_cat/count/{index}

/_cat/indices

/_cat/indices/{index}

/_cat/recovery

/_cat/recovery/{index}

/_cat/pending_tasks

/_cat/thread_pool

/_cat/thread_pool/{thread_pools}/_cat/tasks

/_cat/nodeattrs

/_cat/master

/_cat/snapshots/{repository}

/_cat/segments

/_cat/segments/{index}

/_cat/fielddata

/_cat/fielddata/{fields}

/_cat/shards

/_cat/shards/{index}

/_cat/plugins

/_cat/repositories

在上述接口中可以添加的参数如下。

  • 参数v(verbose):让输出的信息显示表头信息。

curl -XGET 'localhost:9200/_cat/master?v'

id host ip node

xLslDXvxQHKVnWCKJROG7g 192.168.0.75 192.168.0.75 vm75

如果不添加参数v,则不显示上面的表头信息“id”“host”“ip”“node”。

  • 参数help:输出该命令可以显示的列。

curl -XGET 'localhost:9200/_cat/master?help'

id | |node id

host | h |host name

ip | |ip address

node | n |node name

在上述结果中,第1列表示_cat/master命令可以返回的字段名称,第2列是简称,第3列是字段的描述。

  • 参数h:可以指定返回的字段。

$ curl -XGET 'localhost:9200/_cat/master?v&h=host,ip,node'

host ip node

192.168.0.75 192.168.0.75 vm75

3.查看集群的状态

  • 查看集群健康状态的接口。

curl -XGET 'localhost:9200/_cluster/health?pretty'

curl -XGET ' localhost:9200/_cluster/health?level=indices&pretty'

curl -XGET ' localhost:9200/_cluster/health?level=shards&pretty'

接口1是集群的状态;接口2不仅包含集群的状态,还包含索引级的状态;接口3是更细粒度的分片级的状态。

  • 查看集群状况的接口(_cluster/state)。

curl -XGET 'localhost:9200/_cluster/state?pretty'

  • 查看集群统计信息的命令(_cluster/stats)。

curl-XGET 'localhost:9200/_cluster/stats?pretty'

在返回的结果中包含了在集群中包含的索引个数、节点信息、分片信息、内存信息、CPU信息、缓存信息等。

  • 查看一个索引的统计信息的命令。

curl -XGET ' localhost:9200/indexname/_stats?pretty'

返回一个索引的各项统计信息,包括:索引的大小、数据条数、查询次数、查询耗时、分片数、merger数、刷新次数(flush和refresh)、查询缓存的大小等跟索引相关的统计信息。

  • 查看集群挂起的任务接口(_cluster/pending_tasks),并返回集群中待执行的任务。

curl -XGET 'localhost:9200/_cluster/pending_tasks?pretty'

4.查看节点的状态

  • 查看节点信息的接口。

curl -XGET ' localhost:9200/_nodes?pretty'

返回集群中各个节点的详细信息例如:集群名称、节点名称、节点所在服务器的操作系统、JVM、用到的Elasticsearch模块等节点信息。

  • 查看节点统计信息的接口。

curl -XGET ' localhost:9200/_nodes/stats?pretty'

返回集群中各个节点的统计信息,例如:查询次数、写索引次数、merge 次数及耗时、索引大小、分片数等统计信息。

  • 查看节点中的热线程。

curl -XGET 'localhost:9200/_nodes/{nodeID}/hot_threads?pretty'

返回集群中所有节点的热线程,如果加上node id,则返回该节点的热线程。

Elasticsearch虽然提供的接口功能非常强大,但是在使用上并不是很友好,本书的作者之一刘淏开源了两个Elasticsearch插件sp-console和sp-tools。

  • sp-console(https://github.com/psfu/es-sp-console)封装了cat的命令,体验非常友好,在使用上完全仿照Linux的界面,可以查看历史的查询结果及出错信息,并支持上下键切换历史命令等。
  • sp-tools(https://github.com/psfu/es-sp-tools)是一个权限和日志管理工具,可以通过Cookie中的密钥来维护登录状态,插件支持IP白名单和黑名单,也可以通过sp-console来控制其启动与关停,更新IP白名单和黑名单等信息;其日志记录模块经过大量优化,对系统占用非常友好。

参考链接:http://blog.csdn.net/z69183787/article/details/70142101

https://mp.weixin.qq.com/s?__biz=MzAwNTQ4MTQ4NQ==&mid=2453561845&idx=1&sn=979894f5566113e3bad60380c8398405&chksm=8cd13497bba6bd8150643a5bcf56bd9a562dc90f76d1afa5618f9ca27f278a6a22080f81c2e1&scene=21#wechat_redirect

你可能感兴趣的:([13]ES常用查询命令)