我真的很想将这种特定的时间格式转换为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"
}
}
}
}
有人可以告诉我如何包括时间而不让时间中断吗,所以我可以按时在基巴纳过滤。
答案 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
字段索引文档,该字段是具有字段data
和date
的对象数组。此结构与步骤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
中指定。
因此,您有两种选择:
"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"
} ]
}