当我包括小时和分钟时,Kibana无法从elasticsearch获取日期

时间:2019-06-05 20:42:21

标签: elasticsearch kibana

我真的很想将这种特定的时间格式转换为Elasticsearch,以便可以在Kibana中将其绘制成图形。我无法更改此格式。我的elasticsearch数据和映射采用以下格式:

步骤1:设置映射

PUT http://<>.com:5101/myindex6/_doc/1

{
  "mappings": {
    "properties": {
      "date": {
        "type":   "date",
        "format": "HH:mm yyyy-MM-dd"
      },
        "data": {
        "type":   "integer"
      }
    }
  }
}

第2步:添加数据

PUT http://<>.com:5101/myindex6

{
  "test" : [ {
    "data" : "119050300",
    "date" : "10:00 2019-06-03"
  } ]
}

在Kibana中,它不会将其作为日期,也不允许我将其映射为一个日期。但是,如果我删除时间方面并使用日期,而改为使用日期,则效果很好:

数据

{
  "test" : [ {
    "data" : "119050300",
    "date" : "2019-06-03"
  } ]
}

地图

{
  "mappings": {
    "properties": {
      "date": {
        "type":   "date",
        "format": "yyyy-MM-dd"
      },
        "data": {
        "type":   "integer"
      }
    }
  }
}

有人可以告诉我如何包括时间而不让时间中断吗,所以我可以按时在基巴纳过滤。

5 个答案:

答案 0 :(得分:3)

映射和要索引的结构文档之间存在差异。此外,您正在使用的端点似乎已交换。请按照以下步骤操作:

1。创建索引
PUT myindex6
{
  "mappings": {
    "properties": {
      "date": {
        "type":   "date",
        "format": "HH:mm yyyy-MM-dd"
      },
        "data": {
        "type":   "integer"
      }
    }
  }
}
2。索引文件
POST myindex6/_doc/1
{
  "data": "119050300",
  "date": "10:00 2019-06-03"
}

请注意用于创建索引然后用于对文档建立索引的端点。还要注意文档的结构与映射一致。在您的情况下,您正在使用test字段索引文档,该字段是具有字段datadate的对象数组。此结构与步骤1中创建的映射不匹配。

答案 1 :(得分:1)

正如以上答案中已指出的那样,您正在索引的数据与创建的映射不匹配。您需要做的是使用嵌套的测试字段更新映射。

b = df['Names'].eq('D').cumsum()
a = df.groupby(b).cumcount()
df1 = df.set_index([a, b]).unstack().drop(0, axis=1, level=1).sort_index(axis=1, level=1)
df1.columns = [f'{x}_{y}' for x, y in df1.columns]
print (df1)
  Names_1  Values_1 Names_2  Values_2 Names_3  Values_3
0       D       5.0       D       9.0       D       1.0
1       E       1.0       E       6.0       E       5.0
2       F       3.0       F       4.0       F       6.0
3     NaN       NaN       G       3.0     NaN       NaN

然后重新索引您的数据。之后,日期字段将出现在Kibana中。

答案 2 :(得分:0)

每个人都已经指出,索引映射与数据不同,因此您需要更新映射。我强烈建议修改Elasticsearch的{​​{3}},以更好地理解映射及其对索引数据的影响。

另一方面,我看到您仍在使用映射类型。如果您刚刚开始使用ES用例,则最好避免使用它们,因为它们已被弃用,并最终从ES index mapping guide中删除。

答案 3 :(得分:0)

除了一件微小的事情之外,您一切都很好。在映射中,您将日期格式指定为epoch_millis,但在文档中,日期时间在epoch_second中指定。

因此,您有两种选择:

  1. 要么保持映射不变,要么将所有日期时间乘以1000。
  2. 或者您可以使用"format": "epoch_second"更改映射,并保持数据不变。

无论如何,您都需要在之后的Kibana中重新加载索引模式,然后它才能工作。请注意,我在Kibana 4.2上对此进行了测试。

答案 4 :(得分:0)

这就是我认为它将起作用的方式。

PUT http://<>.com:5101/myindex6/_doc/1

{
  "mappings": {
    "properties": {
      "date": {
        "type":   "date",
        "format": "yyyy-MM-dd HH:mm:ss"
      },
        "data": {
        "type":   "integer"
      }
    }
  }
}
PUT http://<>.com:5101/myindex6

{
  "test" : [ {
    "data" : "119050300",
    "date" : "2019-06-03T10:00:00Z"
  } ]
}