elasticsearch Kibana:将脚本字段设置为时间字段名
我有一个基于时间的Kibana,时间字段是一个名为timestamp的类型[number](例如1599026948)。时间字段名未设置,我需要将其设置为时间戳。由于时间戳的格式(数字)不好,我创建了一个名为datetime的脚本字段,以获得更好的日期格式。 脚本字段的代码日期时间:
elasticsearch Kibana:将脚本字段设置为时间字段名,
elasticsearch,kibana,
elasticsearch,Kibana,我有一个基于时间的Kibana,时间字段是一个名为timestamp的类型[number](例如1599026948)。时间字段名未设置,我需要将其设置为时间戳。由于时间戳的格式(数字)不好,我创建了一个名为datetime的脚本字段,以获得更好的日期格式。 脚本字段的代码日期时间: doc['timestamp'].value * 1000; POST .kibana/_update/MY-INDEX-PATTERN { "doc": { "inde
doc['timestamp'].value * 1000;
POST .kibana/_update/MY-INDEX-PATTERN
{
"doc": {
"index-pattern": {
"timeFieldName" : "datetime"
}
}
}
它的工作原理如下:
Samples
Input Output
1599027119802 Sep 2, 2020 @ 08:11:59.802
1577833200000 Jan 1, 2020 @ 00:00:00.000
1609455599999 Dec 31, 2020 @ 23:59:59.999
当我查看“发现”选项卡时,我得到警告:
“2个碎片中的1个失败您看到的数据可能不完整或错误。”
警告详细信息:
script_exception at shard 0 index MY-INDEX-PATTERN node JgWo2yNxRBeR9mEuYLpK2R
Type script_exeption
Reason runtime error
Script stack org.elasticsearch.search.lookup.LeafDocLookup.get(LeafDocLookup.java:94)
org.elasticsearch.search.lookup.LeafDocLookup.get(LeafDocLookup.java:41)
doc['timestamp'].value * 1000;
^---- HERE
Script doc['timestamp'].value * 1000;
Lang painless
Caused by type illegal_argument_exeption
Caused by reason No field found for [timestamp] in mapping with types []
我无视警告,继续前进。
我需要将时间字段名设置为新字段datetime
我在控制台中尝试了以下代码:
doc['timestamp'].value * 1000;
POST .kibana/_update/MY-INDEX-PATTERN
{
"doc": {
"index-pattern": {
"timeFieldName" : "datetime"
}
}
}
我得到以下结果:
{
"_index" : ".kibana",
"_type" : "_doc",
"_id" : "MY-INDEX-PATTERN",
"_version" : 8,
"result" : "updated",
"_shards" : {
"total" : 2,
"successful" : 2,
"failed" : 0
},
"_seq_no" : 887,
"_primary_term" : 4
}
看起来它起作用了,但当我尝试在仪表板内创建基于时间的组件或只是更改时间过滤器时,它不起作用,我收到与上面相同的警告(2个碎片中的1个失败了..)
我认为时间字段名没有设置为datetime
我觉得我什么都试过了,但都没用。我真的想避免重新编制索引,还是这是唯一的解决方案?我是新来基巴纳的,希望有人能帮助我
-Tobi已解决:Kibana管理员必须重新索引索引,并将时间戳类型设置为date。现在,时间戳在创建模式时可见,可以为时间字段名选择时间戳