У меня есть мой кластер, и я хочу знать все имена индексов и типов. Я использую Sense.
Получить все имена индексов и типов из кластера в ElasticSearch
Ответ 1
curl -XGET 'http://localhost:9200/_cat/indices?v'
предоставит вам все индексы.
curl -XGET 'http://localhost:9200/_mapping?pretty=true'
предоставит вам типы документов в этих индексах вместе с их сопоставлениями.
Ответ 2
Ответ yvespeirsman правильный, но если вы хотите просто просмотреть типы индексов, вы можете использовать jq для получения более компактного ответа.
curl -s -XGET 'http://localhost:9200/_mapping' | jq 'to_entries | .[] | {(.key): .value.mappings | keys}'
Ответ 3
Некоторые сопоставления слишком велики, чтобы эффективно использовать _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, чтобы вернуть оба.
Ответ 4
Чтобы получить все отображения внутри индекса:
GET /{index_name}/_search?size=50
{
"query": {
"match_all": {}
}
}