检查elasticsearch索引是打开还是关闭

时间:2015-01-05 12:57:25

标签: elasticsearch

目前(v.1.4.2)可以检查existence of an index(虽然可能不是理想的方式)和close and open an index。我没有看到检查索引是打开还是关闭的方法。

status调用返回一个“IndexClosedException”,它更多地落在异常处理案例中,而不是我正在寻找的信息处理案例。

你怎么检查这个?或者是否有另一种方法可以在没有(可能)传递已经关闭的索引的情况下进行搜索?

4 个答案:

答案 0 :(得分:5)

使用GET /_cat/indices/my_index?v,你会得到类似的回复:

health status index     pri rep docs.count docs.deleted store.size pri.store.size 
yellow open   my_index    5   1          2            0      5.3kb          5.3kb 

您可以看到status列。

答案 1 :(得分:4)

虽然_cat端点对人类来说很好,但如果你想要更多脚本/程序友好的东西,你可以做类似......

查找单个索引:

curl -GET 'http://es-host:9200/_cluster/state' | jq '.metadata.indices["index_name"].state'

列出所有指数:

curl -GET 'http://es-host:9200/_cluster/state' | jq '.metadata.indices | to_entries | .[] | {index: .key, state: .value.state}'

答案 2 :(得分:2)

获取单个索引的打开/关闭答案的最简洁方法是使用cat indices API作为目标索引,并将返回的列限制为仅包含status

curl http://localhost:9200/_cat/indices/some_index?h=status

这应返回openclose。我们对索引健康使用相同的策略(红色/黄色/绿色)。

答案 3 :(得分:2)

这是this问题给出的答案,我认为这与预期的接近。

您可以改为使用群集状态API:

GET _cluster/state/metadata/my_index

甚至:

GET _cluster/state/metadata/my_index?filter_path=metadata.indices.*.state