目前(v.1.4.2)可以检查existence of an index(虽然可能不是理想的方式)和close and open an index。我没有看到检查索引是打开还是关闭的方法。
status调用返回一个“IndexClosedException”,它更多地落在异常处理案例中,而不是我正在寻找的信息处理案例。
你怎么检查这个?或者是否有另一种方法可以在没有(可能)传递已经关闭的索引的情况下进行搜索?
答案 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
这应返回open
或close
。我们对索引健康使用相同的策略(红色/黄色/绿色)。
答案 3 :(得分:2)
这是this问题给出的答案,我认为这与预期的接近。
您可以改为使用群集状态API:
GET _cluster/state/metadata/my_index
甚至:
GET _cluster/state/metadata/my_index?filter_path=metadata.indices.*.state