Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logstash:在Elasticsearch中向不同类型发送不同的json字段_Json_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Logstash - Fatal编程技术网 elasticsearch,logstash,Json,elasticsearch,Logstash" /> elasticsearch,logstash,Json,elasticsearch,Logstash" />

Logstash:在Elasticsearch中向不同类型发送不同的json字段

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","

我将以下格式的JSON数据发送到logstash实例 侦听http端点

{
    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{}