获取所有索引和类型' ElasticSearch中的集群中的名称

时间:2015-06-27 09:29:50

标签: elasticsearch

我有我的群集,我想知道所有索引和类型'名字在里面。我用Sense。

4 个答案:

答案 0 :(得分:77)

curl -XGET 'http://localhost:9200/_cat/indices?v'

将为您提供所有索引。

curl -XGET 'http://localhost:9200/_mapping?pretty=true'

将为您提供这些索引中的文档类型及其映射。

答案 1 :(得分:31)

yvespeirsman的回答是正确的,但是如果你想看到索引的类型,可以使用jq来获得更紧凑的答案。

curl -s -XGET 'http://localhost:9200/_mapping' | jq 'to_entries | .[] | {(.key): .value.mappings | keys}'

答案 2 :(得分:15)

某些映射太大,无法有效地使用_mapping来解析类型。而是考虑aggregation。可能要快得多。对于索引:

curl -XGET "http://localhost:9200/_search" -d'
{
  "aggs": {
    "indicesAgg": {
      "terms": {
        "field": "_index",
        "size": 200
      }
    }
  },
  "size": 0
}'

对于特定索引的类型(或者获取所有索引的所有类型,只需在URL中排除索引名称{myIndex}):

curl -XGET "http://localhost:9200/myIndex/_search" -d'
{
  "aggs": {
    "typesAgg": {
      "terms": {
        "field": "_type",
        "size": 200
      }
    }
  },
  "size": 0
}'

我确定你也可以写一个单独的agg来同时返回。

答案 3 :(得分:0)

要获取索引内的所有映射:

result = sum(dct['quantity'] for dct in obj if 'items' in dct)