如何在Elasticsearch中查询获取所有已关闭的索引?
你提出的需求完全可以实现,不需要通过排序参数实现筛选,有两种常用的落地方式:
- 方案1:使用
_cat/indices接口原生过滤能力(推荐,适配ES 6.x及以上所有版本)
直接调用如下请求即可返回所有处于关闭状态的索引:
GET _cat/indices?v&status=close
Elasticsearch的_cat系列API原生支持按返回字段做等值过滤,直接把需要过滤的字段名作为请求参数,传入要匹配的目标值即可完成筛选,不需要额外做二次处理。你之前使用的s=status是排序参数,仅负责对返回结果按status字段排序,无法实现筛选效果。
- 方案2:终端管道过滤(适配所有ES版本,适合命令行操作场景)
如果你是通过curl在终端调用ES接口,可以通过grep直接筛选匹配关闭状态的结果:
curl -X GET "http://<你的ES节点地址>:9200/_cat/indices?v" | grep " close "
如果你需要获取JSON格式的关闭索引元数据,也可以调用集群状态接口筛选:
GET _cluster/state/metadata?filter_path=metadata.indices.*.state
返回结果中state字段值为close的索引即为已关闭的索引。
内容的提问来源于stack exchange,提问作者Kaan Sercan Görür
相关产品推荐
相关产品推荐

