Преобразование полей из строки в дату в Logstash

Я пытаюсь индексировать электронные письма в elasticsearch с помощью logstash

Мой файл conf выглядит так:

sudo bin/logstash -e 'input
{ imap 
{ host => "imap.googlemail.com" 
password => "********" 
user => "********@gmail.com" 
port => 993 
secure => "true" 
check_interval => 10 
folder => "Inbox" 
verify_cert => "false" } } 
output 
{ stdout 
{ codec => rubydebug } 
elasticsearch 
{ index => "emails" 
document_type => "email" 
hosts => "localhost:9200" } }'

Проблема в том, что два поля выходных данных анализируются как поля String, но они должны быть полями «даты».

Формат полей следующий:

"x-dbworld-deadline" => "31-Jul-2019"
"x-dbworld-start-date" => "18-Nov-2019"

Как преобразовать эти два поля в поля даты?

Спасибо!


person Haythem Huiji    schedule 09.12.2019    source источник


Ответы (1)


Как насчет создания сопоставления индекса на Elasticsearch.

Это может выглядеть так:

PUT date-test-191211
{
  "mappings": {
    "_doc": {
      "properties": {
        "x-dbworld-deadline": {
          "type": "date",
          "format": "dd-MMM-yyyy"
        },
        "x-dbworld-start-date": {
          "type": "date",
          "format": "dd-MMM-yyyy"
        }
      }  
    }
  }
}

Затем эти поля распознаются как формат даты:

результат: [mappings.jpg]

person occidere    schedule 11.12.2019