Импорт Geo Point (Lat, Lng) из MySQL в Elasticsearch

0

Я пытаюсь импортировать данные из MySQL в индекс Elastic, используя следующий скрипт Logstash (ELK v 6.22):

input {
  jdbc {
    jdbc_driver_library => "E:\ELK 6.22\logstash-6.2.2\bin\mysql-connector-java-5.1.45-bin.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_connection_string => "jdbc:mysql://localhost:3306/fbk"
    jdbc_user => "root"
    jdbc_password => ""
    statement => "SELECT fbk_repeat._URI AS URI, _SUBMISSION_DATE AS SUBMISSION_DATE, DEVICEID, LOCATION_LAT, LOCATION_LNG, SECTOR, COMMENTS, ACTION_TAKEN, PURPOSE
                    FROM
                    fbk_core
                    INNER JOIN fbk_repeat ON fbk_core._URI = fbk_repeat._PARENT_AURI"
  }
}



filter {

#    mutate { convert => {"LOCATION_LAT" => "float"} }
#    mutate { convert => {"LOCATION_LNG" => "float"} }
#    mutate { rename => {"LOCATION_LAT" => "[location][lat]"} }
#    mutate { rename => {"LOCATION_LNG" => "[location][lon]"} }

    mutate {
        # Location and lat/lon should be used as is, this is as per logstash documentation
        # Here we are tying to create a two-dimensional array in order to save data as per Logstash documentation

         add_field => { "[location][lat]" => [ "%{LOCATION_LAT}" ] }
         add_field => { "[location][lon]" => [ "%{LOCATION_LNG}" ] }
         convert => [ "[location]", "float" ]
    }


#    date {
#        locale => "eng"
#        match => ["_SUBMISSION_DATE", "yyyy-MM-dd HH:mm:ss", "ISO8601"]
#        target => "SUBMISSION_DATE"
#           } 

}

output{
   elasticsearch {
   hosts => ["localhost:9200"] 
   index => "feedback"
   document_id => "%{URI}"
   document_type => "feedbackdata"
   manage_template => true

   # user => "elastic"
   # password => "changeme"


}
  stdout { codec => rubydebug { metadata => true } }
   # stdout { codec => dots }
}

Как только данные импортируются, я не мог найти какое-либо поле Geo Point в Kibana, чтобы иметь возможность отображать данные на карте, может ли кто-нибудь руководствоваться тем, что должно быть неправильным.

Спасибо!

Данные Изображение 174551

  • 0
    Возможно, вам нужен список полей индекса (см .astic.co/guide/en/kibana/6.2/… ). Также я не понимаю, что вы пытаетесь сделать с convert => [ "[location]", "float" ] . У меня нет другой идеи, может быть, вы могли бы добавить к своему вопросу образец данных и, возможно, отображение индекса?
  • 0
    @baudsp добавил данные, можете ли вы рассказать о сопоставлении индекса? Я полагаю, что сопоставление индексов автоматически выполняется ES, если он явно не определен, пожалуйста, исправьте меня, если ошиблись
Показать ещё 1 комментарий
Теги:
elasticsearch
kibana
logstash

1 ответ

0

Elasticsearch может автоматически выполнять сопоставление, но не для всех полей. Вы должны установить такое сопоставление, например:

PUT index
{
  "mappings": {
    "type": {
      "properties": {
        "location": {
          "properties": {
            "coordinates": {
              "type": "geo_point"
            }
          }
        },
        "field": {
          "properties": {
            "date": {
              "format": "yyyy-MM-dd'T'HH:mm:ss.SSSZ",
              "type": "date"
            }
          }
        }
      }
    }
  }
}

Адаптируйте это, чтобы обрабатывать ваши данные.

Не забудьте создать шаблон индекса в Kibana.

  • 0
    Можете ли вы перечислить шаги, то есть 1. Создать индекс 2. Создать сложное отображение, как Geo Point 3. ...?
  • 0
    Есть только один шаг, прецедент PUT создаст индекс с заданным отображением. Просто замените «index» и «type» на ваши и запустите это. Если вы приведете мне пример ваших данных, я могу попытаться дать вам точное отображение. После этого вам нужно будет только установить шаблон индекса в Kibana.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню