Используйте числовое поле в качестве даты в агрегировании Kibana date_histogram - PullRequest
0 голосов
/ 04 июля 2018

Я пытаюсь использовать функцию визуализации в Kibana для построения ежемесячного графика date_histogram, который подсчитывает количество сообщений в моей системе. Тип сообщения имеет поле sent_at, которое хранится как number со времени эпохи. Хотя я могу сделать это просто отлично с запросомasticsearch

POST /_all/message/_search?size=0
{
    "aggs" : {
        "monthly_message" : {
            "date_histogram" : {
                "field" : "sent_at",
                "interval" : "month"
            }
        }
    }
}

Я столкнулся с проблемой в Кибане, сказав No Compatible Fields: The "myindex" index pattern does not contain any of the following field types: date

Есть ли способ заставить Кибану использовать поле number в качестве даты?

1 Ответ

0 голосов
/ 05 июля 2018

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

Что вы можете сделать, это добавить еще одно поле с именем sent_at_date в свое отображение, а затем использовать API обновления по запросу, чтобы скопировать поле sent_at в это новое поле и, наконец, воссоздать свой индексный шаблон в Kibana.

Это в основном так:

# 1. add a new field to your mapping
PUT myindex/_mapping/message
{
   "properties": {
      "sent_at_date": {
         "type": "date"
      }
   }
}

# 2. update all your documents
POST myindex/_update_by_query
{
   "script": {
      "source": "ctx._source.sent_at_date = ctx._source.sent_at"
   }
}

И, наконец, воссоздайте свой шаблон индекса в Кибане. Вы должны увидеть новое поле с именем sent_at_date типа date, которое вы можете использовать в Кибане.

...