【问题标题】:elastic search nested filterelasticsearch嵌套过滤器
【发布时间】:2017-07-27 03:52:11
【问题描述】:

这是由 Elastic Search API 返回的文档结构:

{ "process_name":"process01", "beat": { "hostname":"12345","name":"blablabla" }, }

通过 process_name 过滤很容易,但是如何按嵌套在 beat 中的 host_name 过滤呢?

  • 尝试 1 失败

{ "size":10000, "query" : { "bool" : { "should": [ { "match" : { "process_name" : "process01" } }, { "match" : { "process_name" : "process02" } } ], "must": [ { "match" : { beat: { "hostname":"12345" } } } ] } } }

错误信息 1:

(无法反序列化对象类型=class com.logshero.api.SearchApiRequest):

  • 尝试 2 失败

{ "size":10000, "query" : { "bool" : { "should": [ { "match" : { "process_name" : "process01" } }, { "match" : { "process_name" : "process02" } } ], "must": [ { "match" : { "hostname":"12345" } } ] } } }

错误信息 2:

{"命中":{"total":0,"max_score":null,"命中":[]}}

【问题讨论】:

    标签: json elasticsearch nested logz.io


    【解决方案1】:

    您可以使用以下查询。您还必须确保映射中的节拍被定义为嵌套类型。

    {
        "size": 10000,
        "query": {
            "bool": {
                "should": [{
                    "match": {
                        "process_name": "process01"
                    }
                }, {
                    "match": {
                        "process_name": "process02"
                    }
                }],
                "must": [{
                    "match": {
                        "beat.hostname": "12345"
                    }
                }]
            }
        }
    }
    

    谢谢

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-30
      • 2014-12-31
      • 1970-01-01
      相关资源
      最近更新 更多