Поле даты представлено как целое число

У меня есть сервер Elastic Stack (на Hyper-v ), который принимает данные с помощью команды logstash exec и выполняет на нем аналитику. . Все работает отлично, кроме поля даты, которое отображается в виде числа.

Как мне получить logstash , Elasticsearch или Kibana для распознавания поля дата вместо числа?

Данные представляют собой эпоху Unix время в миллисекундах .


Код:

Данные, выводимые python файл находится в формате JSON . Никакой реальной обработки не происходит, пока он не достигнет elasticsearch .

Конфигурация Logstash:

input {
  exec {
    command => "/home/elliot/BullhornConnector.py JobOrder isOpen,webResponses,submissions,sendouts,interviews,placements,address,numOpenings,employmentType,owner,title,clientCorporation"
    interval => 60
    codec => json
    tags => ["JobOrder"]
  }
  exec {
    command => "/home/elliot/BullhornConnector.py Lead owner,leadSource,firstName,lastName,status,dateAdded"
    interval => 60
    codec => json
    tags => ["Lead"]
  }
  exec {
    command => "/home/elliot/BullhornConnector.py Opportunity owner,isOpen,dealValue,weightedDealValue,clientCorporation,status"
    interval => 60
    codec => json
    tags => ["Opportunity"]
  }
}

output {
  elasticsearch {
    hosts => ["localhost:9200"]
  }
  stdout { codec => rubydebug }
}

Снимки экрана:

Вот скриншот необработанных данных: Raw data display

Обзорная страница шаблона индекса: Data overview on index patterns page

Детальный вид поля: Setting does not allow me to change it.

Спасибо!

1
задан 15 July 2017 в 15:41
3 ответа

Я понял: Что вам нужно сделать, так это использовать плагин фильтра в logstash, в частности плагин date .

Вот фрагмент, который я добавил в свою конфигурацию logstash:

filter {
  date {
    match => [ "dateAdded", "UNIX_MS" ]
    target => "dateAddedCorrected"
  }
}
0
ответ дан 3 December 2019 в 18:29

Если я правильно прочитал документацию ElasticSearch https://www.elastic.co/guide/en/elasticsearch/reference/current/date.html

JSON doesn’t have a date datatype, so dates in Elasticsearch can either be:

strings containing formatted dates, e.g. "2015-01-01" or "2015/01/01 12:10:30".
a long number representing milliseconds-since-the-epoch.
an integer representing seconds-since-the-epoch. 

Итак, ваше поле dateAdded Представленный как «числовой» тип данных логичен: Elasticsearch просто переводил номер JSON в номер ES.

Если я посмотрю на свой собственный экземпляр ELK, я обнаружил, что поле «timestamp» представлено как тип данных «date». Это делается автоматически программой logstash.

За кулисами logstash управляет «шаблоном сопоставления» для определения типов данных полей ES. В вашем случае он наивно переводит тип даты из JSON, а в случае отметки времени он знает, что это дата, поэтому четко определите ее.

Итак, что вам нужно сделать, это определить шаблон сопоставления и использовать logstash, чтобы протолкнуть его в ES с вашими данными.

Документ сопоставления ES находится здесь https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html , и Logstash может управлять им с помощью manage_template и шаблон в выводе elasticsearch https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html#plugins-outputs-elasticsearch-template . Введение в отображение AS https://www.elastic.co/blog/found-elasticsearch-mapping-introduction .

Вы также можете посмотреть на отображение, фактически используемое с

curl -XGET 'localhost:9200/<index>/_mapping?pretty'
3
ответ дан 3 December 2019 в 18:29

Я предполагаю здесь, потому что я не знаком с платформами и программами, о которых вы говорите. Однако на скриншоте вы указали, что изменили тип данных на Duration, но похоже, что тип данных по-прежнему «число», а «формат» - это продолжительность. Если бы мне пришлось продолжать гадать, я бы сказал, что ваша платформа все еще пытается сериализовать ваше поле в виде числа, потому что его тип данных по-прежнему «число». Измените этот тип на «дата», как в поле @timestamp в верхней части снимка экрана, и посмотрите, исправит ли это его.

0
ответ дан 3 December 2019 в 18:29

Теги

Похожие вопросы