在不丢失脚本字段或字段格式的情况下切换 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) 上工作的方式:
- 查找标题字段对应于您要更改的索引的文档的{id}
GET .kibana/_search
{
"query": {
"match": {
"index-pattern.title": "{NAME_OF_THE_INDEX}"
}
}
}
- 使用以下代码更改时间字段
POST .kibana/_update/{id}
{
"doc": {
"index-pattern": {
"timeFieldName" : "{NEW_TIME_FIELD_NAME}"
}
}
}
将基于时间的索引添加到 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) 上工作的方式:
- 查找标题字段对应于您要更改的索引的文档的{id}
GET .kibana/_search
{
"query": {
"match": {
"index-pattern.title": "{NAME_OF_THE_INDEX}"
}
}
}
- 使用以下代码更改时间字段
POST .kibana/_update/{id}
{
"doc": {
"index-pattern": {
"timeFieldName" : "{NEW_TIME_FIELD_NAME}"
}
}
}