从 ElasticSearch 中该索引中的两个现有字段在所有文档中创建新字段
Creating new Field in all Documents from two existing Field in that index in ElasticSearch
首先,ELK 堆栈是全新的,因此仍在为术语而苦苦挣扎。
我一直在尝试创建一些可视化效果,发现通过 JSON scipt 合并字段有点挑剔,显然不推荐。
例如,我想可视化唯一会话的数量,但会话仅对给定的主机名是唯一的,因此聚合中的这个脚本实现了这一点。
{
"script": {
"source": "doc['hostname.keyword'].value + doc['session_id.keyword'].value",
"lang": "painless"
}
}
所以根据我的研究,我应该做的是在我的 GROK 解析过程中添加另一个字段,以便该字段存在于每个文档中,从而加快搜索速度。
因此,Grok 部分可以通过以下方式完成:
add_field => { "hostname_session_id" => "%{hostname}:%{session_id}" }
所以我缺少的是如何更新索引中已有的所有条目,以便他们在历史上添加该字段,以及在索引也被附加的实时系统上执行此操作的最佳方法是什么?
我的 Grok 目前每天创建一个新索引,我第二天也起床了,所以一个静态索引和另一个仍在附加的索引。
谢谢
您可以使用 update by query API 更新现有文档,使用指定如何生成新字段的脚本。
首先,ELK 堆栈是全新的,因此仍在为术语而苦苦挣扎。
我一直在尝试创建一些可视化效果,发现通过 JSON scipt 合并字段有点挑剔,显然不推荐。
例如,我想可视化唯一会话的数量,但会话仅对给定的主机名是唯一的,因此聚合中的这个脚本实现了这一点。
{
"script": {
"source": "doc['hostname.keyword'].value + doc['session_id.keyword'].value",
"lang": "painless"
}
}
所以根据我的研究,我应该做的是在我的 GROK 解析过程中添加另一个字段,以便该字段存在于每个文档中,从而加快搜索速度。
因此,Grok 部分可以通过以下方式完成:
add_field => { "hostname_session_id" => "%{hostname}:%{session_id}" }
所以我缺少的是如何更新索引中已有的所有条目,以便他们在历史上添加该字段,以及在索引也被附加的实时系统上执行此操作的最佳方法是什么?
我的 Grok 目前每天创建一个新索引,我第二天也起床了,所以一个静态索引和另一个仍在附加的索引。
谢谢
您可以使用 update by query API 更新现有文档,使用指定如何生成新字段的脚本。