我正在尝试使用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
字段作为日期?
答案 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
的新字段。