如何在ElasticSearch中获取已关闭索引的列表?

时间:2014-02-20 19:21:18

标签: elasticsearch

我最近通过Elasticsearch中的Head插件关闭了一个索引。 我没有删除它。

我想重新打开它,但上帝禁止我忘记我关闭了哪个索引。

如何获取我关闭的所有索引的列表?

我试过了:

curl -s localhost:9200/_stats  | grep logstash-2013.12.05
curl -s localhost:9200/_status | grep logstash-2013.12.05

但没有运气。

8 个答案:

答案 0 :(得分:10)

您可以使用:

http://yourserver:9200/_cluster/state/blocks?pretty

对于Elasticsearch来说,将它贴在这个页面上会很不错:https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-open-close.html

答案 1 :(得分:7)

当要求: / _cluster /状态/元数据

您可以从每个可以请求状态的索引中获取索引列表: metadata.indices [ “your_index”]。状态

我也在我的插件中使用它,它对我有用: http://www.gridshore.nl/esgui/

答案 2 :(得分:4)

到目前为止,没有任何API可以执行此操作。但您可以编写脚本来确定关闭哪个索引。

检查API:

    curl -XGET http://localhost:9200/_cluster/health/logstash-2014.02.21?pretty

这是索引的状态

指数已开启:

{
     "cluster_name" : "ABC",
     "status" : "green",
     "timed_out" : false,
     "number_of_nodes" : 1,
     "number_of_data_nodes" : 1,
     "active_primary_shards" : 1,
     "active_shards" : 1,
     "relocating_shards" : 0,
     "initializing_shards" : 0,
     "unassigned_shards" : 0
}

指数已结束:

{
    "cluster_name" : "ABC",
    "status" : "green",
    "timed_out" : false,
    "number_of_nodes" : 1,
    "number_of_data_nodes" : 1,
    "active_primary_shards" : 0,
    "active_shards" : 0,
    "relocating_shards" : 0,
    "initializing_shards" : 0,
    "unassigned_shards" : 0
}

根据信息,您可以通过 active_primary_shards 确定索引状态。 希望这可以帮到你。

答案 3 :(得分:4)

从Elasticsearch 5开始,您可以对目录输出进行排序

GET /_cat/indices?v&s=status:asc

会给你 enter image description here

答案 4 :(得分:2)

添加一个打印已关闭索引列表的命令(没有别的),我正在谷歌上搜索。

curl -s -XGET 'http://localhost:9200/_cat/indices?h=status,index' | awk '$1 == "close" {print $2}'
  • -s会使卷曲静音,因此它不会显示状态栏
  • h=status,index param说_cat命令只打印两列
  • awk过滤器将在状态为 close
  • 时打印索引名称

另请参阅:https://www.elastic.co/guide/en/elasticsearch/reference/2.4/cat-indices.html

显然_cat命令的更新版本更强大..排序,过滤,你命名它。请参阅:https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-indices.html

答案 5 :(得分:1)

如果您在这里唯一的问题是看到哪个索引已关闭,即您可以使用的管理任务,例如ElasticSearh头插件:

http://yourserver:9200/_plugin/head/

不要忘记最后一次斜线。如果您无法安装它(例如在某些托管的ElasticSearch上),或者由于其他原因无法安装它,或者想要以编程方式操作索引,您可以使用其他建议来使用API​​找到它。

P.S。:/ _cluster / state / metadata实际上可能非常长,例如如果您使用动态映射。

答案 6 :(得分:1)

使用Curl GET _cat / indices,$ 2将显示索引的状态。

答案 7 :(得分:0)

http://es_endpoints.com:9200/index-pattern-*/_settings?expand_wildcards=closed

从ES源代码中获取IndicesOptions.java的答案:

public static IndicesOptions fromParameters(Object wildcardsString, Object ignoreUnavailableString, Object allowNoIndicesString, IndicesOptions defaultSettings) {
    if (wildcardsString == null && ignoreUnavailableString == null && allowNoIndicesString == null) {
        return defaultSettings;
    }

    boolean expandWildcardsOpen = false;
    boolean expandWildcardsClosed = false;
    if (wildcardsString == null) {
        expandWildcardsOpen = defaultSettings.expandWildcardsOpen();
        expandWildcardsClosed = defaultSettings.expandWildcardsClosed();
    } else {
        String[] wildcards = nodeStringArrayValue(wildcardsString);
        for (String wildcard : wildcards) {
            if ("open".equals(wildcard)) {
                expandWildcardsOpen = true;
            } else if ("closed".equals(wildcard)) {
                expandWildcardsClosed = true;
            } else if ("none".equals(wildcard)) {
                expandWildcardsOpen = false;
                expandWildcardsClosed = false;
            } else if ("all".equals(wildcard)) {
                expandWildcardsOpen = true;
                expandWildcardsClosed = true;
            } else {
                throw new IllegalArgumentException("No valid expand wildcard value [" + wildcard + "]");
            }
        }
    }

    //note that allowAliasesToMultipleIndices is not exposed, always true (only for internal use)
    return fromOptions(
            nodeBooleanValue(ignoreUnavailableString, "ignore_unavailable", defaultSettings.ignoreUnavailable()),
            nodeBooleanValue(allowNoIndicesString, "allow_no_indices", defaultSettings.allowNoIndices()),
            expandWildcardsOpen,
            expandWildcardsClosed,
            defaultSettings.allowAliasesToMultipleIndices(),
            defaultSettings.forbidClosedIndices(),
            defaultSettings.ignoreAliases()
    );
}