检查数组是否包含logstash

时间:2017-04-18 08:53:04

标签: logstash

假设我创建了一个这样的字段:

"market": [
            {
              "name":  ["name1","name2","name3","name4","name5" ]
            },
              {"place":["P1","P2","P3"]}
          ]

现在,我想检查字段“name”是否包含值“name3”或“name4”。

我试过这个过滤器。

filter {
elasticsearch {
                hosts => "localhost:9200"
                index=>"admin"
                query => 'market.name:(name3 OR name4)'
                sort => "_id:asc"                       
                fields => {host_machine =>  'host_machine' }
            }
}

但它没有做任何事情(没有崩溃,没有错误信息,只是没有做任何事情)。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

它工作正常..只是市场字段不应该是嵌套类型..在这种情况下(如果它是嵌套的)我们使用query_template选项,如下所示:

"query": {
    "nested" : {
        "path" : "market",
        "query" : {
            "bool" : {
                "filter" : 
                   {"query_string" : {
                       "query" : "market.name:(name3 OR name4)"

                }
           }               
         }
    }
}
}