在 kibana 中切换索引模式的时间字段,而不会丢失脚本字段或字段格式



将基于时间的索引添加到 kibana 时,您必须选择将充当时间字段的字段。如果您想从一个字段切换到另一个字段,通常我会删除索引并重新添加。但是您最终会以这种方式丢失脚本字段和归档格式。

有没有办法在不丢失脚本字段/格式的情况下修改现有的索引时间字段?

这可以通过直接弄乱/.kibana/index-pattern/index_pattern_name来完成,但我所有更改timeFieldName的尝试都直接删除了脚本字段。

这就是在 Kibana 7.7.0(弹性云)上对我有用的方法:

  1. 查找其标题字段与要进行更改的索引对应的文档的 {_id}
GET .kibana/_search
{
  "query": {
    "match": {
      "index-pattern.title": "{INDEX_PATTERN_PATTERN_VALUE}"
    }
  }
}

其中{INDEX_PATTERN_PATTERN_VALUE}是实际模式,例如"my-logs-*"。

  1. 复制_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 上对我来说效果很好。

最新更新