Подтвердить что ты не робот

Получить все имена индексов и типов из кластера в ElasticSearch

У меня есть мой кластер, и я хочу знать все имена индексов и типов. Я использую Sense.

4b9b3361

Ответ 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": {}
        }
    }