Список всех полей в индексе elasticsearch?

Как получить список всех полей, которые присутствуют в индексе (т.е. поля, которые встречаются в индексированных документах, а не только в сопоставлении)?

Ответ 1

Начиная с 1.3, у вас есть мета-поле _ field_names.

{
  "aggs": {
    "Field names": {
      "terms": {
        "field": "_field_names", 
        "size": 10
      }
    }
  }
}

Ответ 2

Объяснение:

Не думайте, что есть способ сделать именно это. Но так как все в индексе автоматически попадает в отображение, мы знаем, что отображение содержит по крайней мере каждое поле в индексе. Оттуда вы можете прокручивать каждое поле в сопоставлении и запускать подсчет количества результатов в индексе, который имеет это поле. Если счетчик больше 0, то это поле существует; если счетчик равен 0, то это поле не является частью индекса. Поскольку мы знаем, что каждое поле индекса будет существовать в вашем отображении, это должно охватывать все возможности.

Некоторые примеры вызовов API:

# Get the mapping
$ curl -XGET 'http://localhost:9200/index/type/_mapping?pretty'

# Count a field
$ curl -XGET 'http://localhost:9200/index/type/_count' -d '
{
    "query" : {
        "constant_score" : {
            "filter" : {
                "exists" : { "field" : "name_from_mapping" }
            }
        }
    }
}'

Документация:

Ответ 4

Я мог бы подумать о создании плагина "elasticsearch-index-fieldlist", аналогичного https://github.com/jprante/elasticsearch-index-termlist, если на самом деле нет простого способа получить в списке полей, присутствующих в индексе...

Ответ 5

Вы можете получить список имен полей, используя SQL-запрос

пример

GET _sql?format=txt
{
  "query": "DESC index_name"
}

Выход

                        column                        |     type      |    mapping    
------------------------------------------------------+---------------+---------------
description                                           |VARCHAR        |text           
description.autosuggest                               |VARCHAR        |text           
description.keyword                                   |VARCHAR        |keyword        
address                                               |STRUCT         |object