Как отобразить значения широты и долготы в geo_point, преобразуя базу данных с помощью входного плагина JDBC в Logstash, который будет использоваться в Kibana?

Я регистрирую базу данных Mariadb в упругом поиске, используя входной плагин jdbc в logstash. Цель состоит в том, чтобы сделать некоторые географические отчеты, используя Kibana.

Данные индексируются, но я не могу использовать индексированные долготу и широту, чтобы создавать отчеты, показывающие, что в индексе нет типа "geo_point".

Я попытался настроить плагин jdbc для понимания географических значений, но, похоже, это не его работа, но я должен изменить отображения полей индекса в упругом поиске.

Могу ли я изменить сопоставления индекса после создания? как?

0 ответов

Вы можете добавить новое поле в индекс с типом geo_point с помощью API сопоставления PUT: https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-put-mapping.html

Затем в конфигурации logstash вы можете добавить дополнительный фильтр, чтобы добавить это поле. Предполагая, что вы добавили новое поле с именем "location" и выбрали "lan" и "lot" в фильтре запросов sql, должно быть так:

input {
  jdbc {
    ...
  }
}
filter {
    if [lat] and [lon] {
          mutate {
                    add_field => { "[location][lat]" => "%{[lat]}" }
                    add_field => { "[location][lon]" => "%{[lon]}" }
          }
          mutate {
                  convert => {"[location][lat]" => "float"}
                  convert => {"[location][lon]" => "float"}
          }
    }
}

output {
  elasticsearch {
    ...
  }
}

Примечание: работает в версии 7.2.

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