elasticsearch 使用数字字段作为Kibana date_直方图聚合中的日期,elasticsearch,kibana,aggregation,elasticsearch,Kibana,Aggregation" /> elasticsearch 使用数字字段作为Kibana date_直方图聚合中的日期,elasticsearch,kibana,aggregation,elasticsearch,Kibana,Aggregation" />

elasticsearch 使用数字字段作为Kibana date_直方图聚合中的日期

elasticsearch 使用数字字段作为Kibana date_直方图聚合中的日期,elasticsearch,kibana,aggregation,elasticsearch,Kibana,Aggregation,我试图使用Kibana中的可视化功能来绘制每月的日期直方图,统计系统中的消息。消息类型有一个sent_at字段,该字段自历元时间起存储为number。 虽然我可以通过elasticsearch查询很好地做到这一点 POST /_all/message/_search?size=0 { "aggs" : { "monthly_message" : { "date_histogram" : { "field" : "se

我试图使用Kibana中的可视化功能来绘制每月的日期直方图,统计系统中的消息。消息类型有一个
sent_at
字段,该字段自历元时间起存储为
number
。 虽然我可以通过elasticsearch查询很好地做到这一点

POST /_all/message/_search?size=0
{
    "aggs" : {
        "monthly_message" : {
            "date_histogram" : {
                "field" : "sent_at",
                "interval" : "month"
            }
        }
    }
}
我在Kibana遇到一个问题,说
没有兼容的字段:“myindex”索引模式不包含以下任何字段类型:date


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

据我所知,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中重新创建索引模式。您应该会看到一个名为
sent\u at_date
的新字段,类型为
date
,您可以在Kibana中使用它