2015-06-27 141 views

回答

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

会给你所有的指标。

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

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

+0

This Works。尽管有一个查询只列出类型是很好的,但是当我向查询中添加“?pretty”时,它给了我所有类型的所有字段映射的非常好的细分(解决了我的下一个问题)。 - 谢谢。 –

+0

/_cat/indices?v给我这样的错误 - > {“error”:“NullPointerException [null]”,“status”:500} – indb

+1

不要忘记你可以添加'?pretty = true'来缩进可读的JSON –

26

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

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

谢谢。是的,我可以看到解析出这些类型是有意义的。太糟糕了,ES没有提供像_types这样的简单命令。 –

+0

@InformationTechnology - 在这种情况下尝试聚合。 – hubbardr

+0

软件包:jq 描述:轻量级和灵活的命令行JSON处理器 jq就像sed用于JSON数据 - 您可以使用它来分割 ,并使用 筛选和映射和转换结构化数据,这与sed,awk,grep和朋友让你玩 文字。 。它是用便携式C编写的,并且它具有最小的运行时间依赖性 。 。 jq可以将您所需的数据格式转换为您想要的 的数据格式,而您所需要的 程序通常比您期望的 短而简单。 –

7

某些映射太大而无法有效地使用_mapping解析出类型。请考虑一个aggregation。可能会快得多。指数:

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

而对于类型特定指数(或获得在所有索引中所有类型的,只是排除索引名{} myIndex在URL):

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

我当然你也可以写一个单一的agg来返回。

相关问题