【发布时间】:2015-06-27 09:29:50
【问题描述】:
我有我的集群,我想知道其中的所有索引和类型的名称。我使用 Sense。
【问题讨论】:
标签: elasticsearch
我有我的集群,我想知道其中的所有索引和类型的名称。我使用 Sense。
【问题讨论】:
标签: elasticsearch
curl -XGET 'http://localhost:9200/_cat/indices?v'
会给你所有的索引。
curl -XGET 'http://localhost:9200/_mapping?pretty=true'
将为您提供这些索引中的文档类型及其映射。
【讨论】:
?pretty=true 以获得缩进可读的JSON
yvespeirsman 的答案是正确的,但如果您只想查看索引的类型,可以使用 jq 来获得更简洁的答案。
curl -s -XGET 'http://localhost:9200/_mapping' | jq 'to_entries | .[] | {(.key): .value.mappings | keys}'
【讨论】:
某些映射太大而无法有效地使用_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 来返回两者。
【讨论】:
获取索引内的所有映射:
GET /{index_name}/_search?size=50
{
"query": {
"match_all": {}
}
}
【讨论】: