Logstash:在Elasticsearch中向不同类型发送不同的json字段
我将以下格式的JSON数据发送到logstash实例 侦听http端点Logstash:在Elasticsearch中向不同类型发送不同的json字段,json,
elasticsearch,logstash,Json,
elasticsearch,Logstash,我将以下格式的JSON数据发送到logstash实例 侦听http端点 { client: "c", pageInfo: ["a","b","c"], restInfo: ["r","s","t"] } 我的目标是将此输入作为同一索引中的两种不同类型发送到elasticsearch端点;比如说 PUT elasticsearchhost:port/myindex/pageInfo { client: "c", pageInfo: ["a","b","
{
client: "c",
pageInfo: ["a","b","c"],
restInfo: ["r","s","t"]
}
我的目标是将此输入作为同一索引中的两种不同类型发送到elasticsearch端点;比如说
PUT elasticsearchhost:port/myindex/pageInfo
{ client: "c", pageInfo: ["a","b","c"] }
PUT elasticsearchhost:port/myindex/restInfo
{ client: "c", restInfo: ["r","s","t"] }
我在logstash(分割、变异、grok)中尝试了一些过滤器,但我不知道如何执行这个非常具体的分割,或者如果我必须在输出部分修改我的配置,您将需要使用
克隆来克隆事件,然后修改克隆
例如:
filter {
clone { clones => ["pageInfo", "restInfo" ] }
if [type]=="pageInfo" {
mutate {
remove_field => "restInfo"
}
}
if [type] == "restInfo" {
mutate {
remove_field => "pageInfo"
}
}
}
然后在您的elasticsearch
输出中,确保包含document\u type=>“%{type}”
谢谢,它可以工作!通过这种方式,它创建了与同一事件相关的三个实体;有没有办法只使用一个克隆并在“if”语句中引用原始消息?原始消息的原始类型值是什么?原始事件的类型是您在输入时设置的任何类型。您还可以执行else if,然后执行最终的else{drop{}