Изменение отображения поля для ВСЕХ LOGSTASH. Созданные индексы.

Я хотел бы изменить тип поля location к географической точке. Я использую ES с Logstash, как вы знаете, индексы генерируются с именем logstash-yyyy-mm-dd

Сначала я создал индекс logstash и назвал его logstash-2016-03-29, вот так:

curl -XPUT 'http://localhost:9200/logstash-2016-03-29'

Затем я изменил отображение для предположительно всех индексов, называемых Logstash-* используя следующее:

curl -XPOST "http://localhost:9200/logstash-*/_mapping/logs" -d '{
"properties" : {
            "location" : { "type":"geo_point" }
        }
}'

И когда я запустил файл конфигурации Logstash, все location поля в индексе logstash-2016-03-29 действительно были типа geo_point,

Однако сегодня автоматически сгенерированный индекс logstash-2016-03-30 имел местоположение поля типа String вместо geo_point, Я думал, что тип должен применяться к любому индексу, который начинается с имени logstash-*, Видимо, я был не прав. Как я могу это исправить, чтобы любой будущий индекс, созданный logstash, который имеет location поле будет иметь этот тип поля установлен в geo_point вместо строки?

Благодарю.

1 ответ

Вы должны определить это, используя шаблон индекса

curl -XPUT localhost:9200/_template/template_2 -d '
{
    "template" : "logstash-",
    "mappings" : {
        "logs" : {
          "properties": {
            "location" : { "type" : "geo_point" }
           }
        }
    }
}

https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-templates.html

Другие вопросы по тегам