Как отобразить значения широты и долготы в 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.