ElasticSearch常用API查询语句

西蒙
2023-02-02 / 0 评论 / 44 阅读 / 正在检测是否收录...

ElasticSearch作为海量数据存储和搜索查询工具,有着大量的API操作,这里总结下常用的API查询语句,方便使用。

状态查询

查询索引节点分片状态

根据索引名称my_index查询索引对应的分片和节点存储分布情况:

GET _cat/shards?index=my_index&s=node,store:desc&v

假设你的集群有3个节点,分片设计为3个主分片1个副分片,返回结果:

indexshardprirepstatedocsstoreipnode
my_index0pSTARTED7464830.7gb127.0.0.11648036502000024932
my_index0rSTARTED7604230.5gb127.0.0.11648036502000024932
my_index1pSTARTED7364830.7gb127.0.0.1164803650200003421
my_index1rSTARTED7204230.5gb127.0.0.1164803650200003421
my_index2pSTARTED7164830.7gb127.0.0.1164803650200001833
my_index2rSTARTED7004230.5gb127.0.0.1164803650200001833

其中index代表索引名称,shard代表分片,prirep代表分片类型,p是主分片,r是副分片。

state表示分片状态,docs代表文档数,store代表存储的数据大小,ip是机器的IP,node代表集群节点编号。

通过这个查询可以了解索引的分片和节点分布是否均衡。从分片设计的角度来说,每个分片的存储大小最好在30~50G左右,并保证每个节点的分片能均匀分布。

查看索引信息

查看具体某个索引my_index的信息状态:

GET _cat/indices?index=my_index&v

返回的结果:

healthstatusindexuuidprirepdocs.countdocs.deletedstore.sizepri.store.size
greenopenmy_indexsxfaef232_U312344DO034233Q912384320876gb438gb

其中特别关注的有health,green代表索引状态正常,red代表不可用,yellow代表有异常。

缓存清除

清除全部缓存:

POST /_cache/clear

清除特定索引的缓存:

POST /my_index/_cache/clear
POST /my_index1,my_index2/_cache/clear

清除特定类型缓存:

通过设置fielddata,query,request参数为true来清除特定类型的缓存

POST /my-index/_cache/clear?fielddata=true  
POST /my-index/_cache/clear?query=true      
POST /my-index/_cache/clear?request=true

获取分片分配原因

获取有关分片分配问题的信息:

GET _cluster/allocation/explain?pretty

重新分片

对未分配的分片进行重新分片:

POST _cluster/reroute?retry_failed=true

聚合查询

去重统计

统计某个字段去重后的数量,主要用到cardinality函数。

这里举个例子,统计uid去重后的数量。

GET /example_index/_search
{
  "size": 0,
  "aggs": {
    "uid_dictinct_count": {
      "cardinality": {
        "field": "uid"
      }
    }
  }
}

返回结果:

"aggregations" : {
    "uid_dictinct_count" : {
      "value" : 4634
    }
}

这里统计出来的4634就是example_index这个index中uid去重后的数量。

统计数值

对某个字段数据进行总数、最大值、最小值、平均值、总和的统计。

GET /example_index/_search
{
  "size": 0,
  "aggs": {
    "length_stats": {
      "stats": {
        "field": "length"
      }
    }
  }
}

返回的结果:

"aggregations" : {
    "length_stats" : {
      "count" : 15232,
      "min" : 6.0,
      "max" : 132.0,
      "avg" : 67.52,
      "sum" : 534211.0
    }
}
0

评论 (0)

取消