json - Elasticsearch 嵌套过滤器

标签 json elasticsearch nested logz.io

这是由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:

    (failed to deserialize object type=class com.logshero.api.SearchApiRequest):


  • 尝试失败2
  • { "size":10000, "query" : { "bool" : { "should": [ { "match" : { "process_name" : "process01" } }, { "match" : { "process_name" : "process02" } } ], "must": [ { "match" : { "hostname":"12345" } } ] } } }
    错误消息2:

    {"hits":{"total":0,"max_score":null,"hits":[]}}

    最佳答案

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

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

    谢谢

    关于json - Elasticsearch 嵌套过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42639828/

    相关文章:

    php - mysql在变量为空时插入null

    apache - 语法错误,使用fq(过滤查询)时无法从lucene StandardQueryparser进行解析

    c# - 如何创建一个可以访问创建它的类的成员的嵌套类?

    java - MapStruct嵌套对象,仅当源元素不为null时创建目标对象

    java - 如何为以下 json 创建 POJO?

    java - 在java中解析json rest响应

    json - Visual Studio Code (Ruby) 未捕获的异常 - 无法加载此类文件

    elasticsearch - 在某些字段上禁用索引构建

    elasticsearch - [simple_query_string] 中 START_OBJECT 的未知键

    c++ - 是否有可能从内部(它们是嵌套的)到达外部 QML Repeater 的索引?