elasticsearch - 为文档中的所有字段添加顶级键
问题描述
我有被摄取的文件,其结构如下。请注意,在这种情况下,键名可以并且将会改变,我无法提前知道它们会是什么。
{
"event": "unauthorised",
"logger": "django.request",
"level": "warning",
"endpoint": "",
"query": null,
"status": 401,
"timestamp": "2021-09-17T12:45:56.224792Z"
}
我需要添加一个顶级密钥来获得以下信息:
{
"newkey": {
"event": "unauthorised",
"logger": "request",
"level": "warning",
"endpoint": "",
"query": null,
"status": 401,
"timestamp": "2021-09-17T12:45:56.224792Z"
}
}
这在 filebeat 端很容易做到,但我无法访问那里,所以我试图在摄取管道中做到这一点。
json 处理器add_to_root
似乎是一个不错的起点,但field
参数不采用通配符,而且似乎没有办法移动所有内容。
我一直在尝试脚本处理器,例如循环键:
"processors": [
{
"script": {
"source": "for(item in ctx._source){item = 'newkey.' + item._key; ctx._source.remove(item)}",
"lang": "painless"
}
}
]
但没有任何成功。
解决方案
推荐阅读
- xquery - Xquery - 计算元素
- linux - 在Linux中获取给定日期的前一个工作日的功能
- amazon-web-services - 指向新实例的 AWS 弹性 IP 不起作用
- java - 可运行 jar 中的资源文件位置
- node.js - S3 存储桶中的项目未连接到 EC2 实例中的节点服务器
- ruby-on-rails - Rails break 方法不断循环
- excel - 最大返回 0 excel
- angular - 嵌套订阅的 Angular Typescript 返回类型
- ios - 如何以编程方式打开 Apple 提醒应用程序?
- python - 如何将列转换为数值数据?