OpenSearch中含[]的JSON字段名在Logstash Ruby插件中无法编辑的问题
Logstash处理含方括号字段名的解决方案
问题场景
输入到Logstash的对象结构如下:
"MyObject": { "normalField": "asdf", "additionalData:long:subObject[0]": "banking", "additionalData:long:subObject[1]": "banking" }
当尝试通过Ruby插件移除additionalData:long:subObject[1]字段时,直接执行event.remove('additionalData:long:subObject[1]')会失效——Logstash会将字段名中的[1]解析为数组路径,而非字段名的一部分,导致无法定位到目标字段。且数据来自Kafka并已通过codec => json完成解析,无法在JSON解析前做正则替换。
可行解决方案
方案1:使用mutate插件的特殊字段引用语法
Logstash的mutate插件支持用方括号包裹完整字段名,以此规避路径解析逻辑,直接定位带特殊字符的字段:
mutate { remove_field => ["[additionalData:long:subObject[1]]"] }
方案2:Ruby插件中直接操作事件哈希
通过event.to_hash获取原始字段哈希,直接删除目标键,这种方式不受字段路径解析的影响:
event.to_hash.delete('additionalData:long:subObject[1]')
方案3:Ruby插件中使用带方括号的字段引用
在event.remove中用方括号包裹完整字段名,明确告诉Logstash这是一个完整字段名而非路径:
event.remove("[additionalData:long:subObject[1]]")
验证字段名
若不确定字段的原始名称,可在Ruby插件中打印所有字段键进行确认:
event.to_hash.each_key do |key| puts "Field name: #{key}" end
内容的提问来源于stack exchange,提问作者user2168435
相关产品推荐
相关产品推荐

