当我包含小时和分钟时,Kibana 无法从 elasticsearch 中获取日期
Kibana fails to pick up date from elasticsearch when I include the hour and minute
我真的很努力将这个特定的时间格式导入到 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"
}
}
}
}
谁能告诉我如何包含时间而不中断时间,这样我就可以在 kibana 中按时间进行过滤。
您正在索引的映射和结构文档之间存在差异。您正在使用的端点似乎也被交换了。按照以下步骤操作:
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 中创建的映射不匹配。
正如上述答案中所指出的,您索引的数据与创建的映射不匹配。您需要做的是使用嵌套的测试字段更新您的映射。
{
"mappings": {
"properties": {
"test": {
"type": "nested",
"properties": {
"date": {
"type": "date",
"format": "HH:mm yyyy-MM-dd"
},
"data": {
"type": "integer"
}
}
}
}
}}
然后 re-index 你的数据。之后日期字段将出现在 Kibana 中。
正如大家已经指出的,您的索引映射与您的数据不同,因此您需要更新映射。我强烈建议修改 Elasticsearch 的 index mapping guide 以更好地理解映射及其对索引数据的影响。
另外,我看到您仍在使用映射类型。如果您刚刚开始使用 ES 用例,最好避免使用它们,因为它们将被弃用并最终从 ES [source].
中删除
一切都很好,除了一件小事。在您的映射中,您将日期格式指定为 epoch_millis
,但在您的文档中,日期时间在 epoch_second
中指定。
所以你有两个选择:
- 要么保持映射不变,然后将所有日期时间乘以 1000 倍
- 或者您使用
"format": "epoch_second"
更改映射并保持数据不变。
无论如何,之后您需要在 Kibana 中重新加载您的索引模式,它才会起作用。请注意,我在 Kibana 4.2 上对此进行了测试。
这就是我认为它会起作用的方式。
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"
} ]
}
我真的很努力将这个特定的时间格式导入到 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"
}
}
}
}
谁能告诉我如何包含时间而不中断时间,这样我就可以在 kibana 中按时间进行过滤。
您正在索引的映射和结构文档之间存在差异。您正在使用的端点似乎也被交换了。按照以下步骤操作:
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 中创建的映射不匹配。
正如上述答案中所指出的,您索引的数据与创建的映射不匹配。您需要做的是使用嵌套的测试字段更新您的映射。
{
"mappings": {
"properties": {
"test": {
"type": "nested",
"properties": {
"date": {
"type": "date",
"format": "HH:mm yyyy-MM-dd"
},
"data": {
"type": "integer"
}
}
}
}
}}
然后 re-index 你的数据。之后日期字段将出现在 Kibana 中。
正如大家已经指出的,您的索引映射与您的数据不同,因此您需要更新映射。我强烈建议修改 Elasticsearch 的 index mapping guide 以更好地理解映射及其对索引数据的影响。
另外,我看到您仍在使用映射类型。如果您刚刚开始使用 ES 用例,最好避免使用它们,因为它们将被弃用并最终从 ES [source].
中删除一切都很好,除了一件小事。在您的映射中,您将日期格式指定为 epoch_millis
,但在您的文档中,日期时间在 epoch_second
中指定。
所以你有两个选择:
- 要么保持映射不变,然后将所有日期时间乘以 1000 倍
- 或者您使用
"format": "epoch_second"
更改映射并保持数据不变。
无论如何,之后您需要在 Kibana 中重新加载您的索引模式,它才会起作用。请注意,我在 Kibana 4.2 上对此进行了测试。
这就是我认为它会起作用的方式。
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"
} ]
}