快速检查弹性搜索索引是否会返回搜索命中

时间:2015-01-28 15:58:47

标签: elasticsearch

我们针对一些索引针对弹性搜索源运行命令,如下所示:

curl -XGET 'http://es-server:9200/logstash-2015.01.28,logstash-2015.01.27/_search?pretty' -d @/a_query_file_in_json_format

大部分时间都很好用,我们可以解析我们需要的结果。

然而,当指数处于不良状态时 - 可能在索引中存在滞后,或者某些分片正在起作用 - 上面的查询将不会返回任何结果,并且它是不可能的知道是否因为没有匹配的记录或索引在某种程度上不稳定。

我一直在看elastic search indices recovery API,但有点不知所措。是否有一些我可以运行的查询会给出“是/否答案”,目前是否可以依赖这些指数进行搜索?'

1 个答案:

答案 0 :(得分:1)

您有多种方法可以获取此信息。

1)您可以在索引级别使用cluster health API,如下所示:

GET _cluster/health/my_index?level=indices

这将输出集群的状态,其中包含有关索引my_index的状态和分片的信息:

{
   "cluster_name": "elasticsearch_thomas",
   "status": "yellow",
   "timed_out": false,
   "number_of_nodes": 1,
   "number_of_data_nodes": 1,
   "active_primary_shards": 5,
   "active_shards": 5,
   "relocating_shards": 0,
   "initializing_shards": 0,
   "unassigned_shards": 5,
   "indices": {
      "my_index": {
         "status": "yellow",
         "number_of_shards": 5,
         "number_of_replicas": 1,
         "active_primary_shards": 5,
         "active_shards": 5,
         "relocating_shards": 0,
         "initializing_shards": 0,
         "unassigned_shards": 5
      }
   }
}

2)如果您想要一个不那么详细的答案,或只想过滤某些特定信息,您可以依靠_cat API,它允许您自定义输出。但是,输出不再是JSON。

例如,如果您只想要索引的名称和健康状态,则以下请求将起到作用:

GET _cat/indices/my_index?h=index,health&v

输出:

index    health 
my_index yellow

请注意,仅显示列标题是因为详细标记(前一个请求中的v GET参数)。

要获得可用列的完整列表,请使用help参数:

GET _cat/indices?help