在不丢失脚本字段或字段格式的情况下切换 kibana 中索引模式的时间字段

Switch time field for index pattern in kibana without loosing scripted fields or field formatting

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

有没有办法修改现有的索引时间字段而不丢失脚本 fields/formatting?

这可能可以通过直接使用 /.kibana/index-pattern/index_pattern_name 来解决,但我所有尝试更改 timeFieldName 的尝试最终都直接删除了脚本字段。

最简单的方法似乎是更新相应的文档:

POST /.kibana/index-pattern/YOUR_INDEX_NAME/_update
{
    "doc": {
        "timeFieldName": "NEW_TIME_FIELD_NAME"
    }
}

它应该保留脚本字段。

这似乎不适用于 Kibana 5。 相反,以下是 Kibana 5 的工作方式。

1.找到文档的 {id},其 title 字段对应于您要更改的 index

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 上运行良好。

这就是我在 Kibana 7.7.0 (Elastic Cloud) 上工作的方式:

  1. 查找标题字段对应于您要更改的索引的文档的{id}
GET .kibana/_search
{
  "query": {
    "match": {
      "index-pattern.title": "{NAME_OF_THE_INDEX}"
    }
  }
}
  1. 使用以下代码更改时间字段
POST .kibana/_update/{id}
{
  "doc": {
    "index-pattern": {
      "timeFieldName" : "{NEW_TIME_FIELD_NAME}"
    }
  }
}