将基于时间的索引添加到 kibana 时,您必须选择将充当时间字段的字段。如果您想从一个字段切换到另一个字段,通常我会删除索引并重新添加。但是您最终会以这种方式丢失脚本字段和归档格式。
有没有办法在不丢失脚本字段/格式的情况下修改现有的索引时间字段?
这可以通过直接弄乱/.kibana/index-pattern/index_pattern_name
来完成,但我所有更改timeFieldName
的尝试都直接删除了脚本字段。
这就是在 Kibana 7.7.0(弹性云)上对我有用的方法:
- 查找其标题字段与要进行更改的索引对应的文档的 {_id}
GET .kibana/_search
{
"query": {
"match": {
"index-pattern.title": "{INDEX_PATTERN_PATTERN_VALUE}"
}
}
}
其中{INDEX_PATTERN_PATTERN_VALUE}
是实际模式,例如"my-logs-*"。
- 复制
_id
字段值并使用以下代码更改时间字段(将{_id}
替换为该值)
POST .kibana/_update/{_id}
{
"doc": {
"index-pattern": {
"timeFieldName" : "{NEW_TIME_FIELD_NAME}"
}
}
}
最简单的方法似乎是更新相应的文档:
POST /.kibana/index-pattern/YOUR_INDEX_NAME/_update
{
"doc": {
"timeFieldName": "NEW_TIME_FIELD_NAME"
}
}
它应保留脚本字段。
这似乎不适用于 Kibana 5。相反,以下是在 Kibana 5 上的工作方式。
1. 查找其title
字段对应于您要进行更改index
的文档的 {id}
GET .kibana/index-pattern/_search
{
"_source" : "_id",
"query" : {
"match" : {
"title": "{NAME_OF_THE_INDEX}"
}
}
}
2. 使用以下代码更改时间字段
POST /.kibana/index-pattern/{id}/_update
{
"doc": {
"timeFieldName" : "{NEW_TIME_FIELD_NAME}"
}
}
这在 Kibana 5 上对我来说效果很好。