使用数字字段作为Kibana date_histogram聚合中的日期

时间:2018-07-04 18:48:05

标签: elasticsearch kibana aggregation

我正在尝试使用Kibana中的“可视化”功能来绘制每月date_histogram图,该图统计系统中的消息数。消息类型具有一个sent_at字段,该字段自时期以来一直存储为number。 尽管我可以通过Elasticsearch查询做到这一点

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

有没有办法让Kibana使用number字段作为日期?

1 个答案:

答案 0 :(得分:1)

据我所知,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"
   }
}

最后在Kibana中重新创建索引模式。您应该看到可以在Kibana中使用的类型为sent_at_date的名为date的新字段。