嵌套查询中的Elasticsearch过滤失败

时间:2019-05-13 10:40:41

标签: elasticsearch postman

我在我的Elasticsearch映射中有一个自定义定义,其中我使用嵌套对象进行搜索。我希望添加一个过滤器以仅搜索特定的ID。当我尝试使用过滤器时,它不起作用。 这是我的搜索查询:

{  
      "_source":"false",
      "query":{  
        "nested":{  
             "path":"custom",
             "query":{  
                "multi_match":{  
                        "fields":["custom.text"],
                        "query" : "foo bar whatever",
                        "fuzziness":"AUTO"

                }
             },
              "filter": {
                "term" : {"Id":"100", "200"}    
             },

             "inner_hits":{
                "highlight":{
                    "fields":{
                        "custom.start_time":{}
                    }
                }
             }
          }
       }
    }

映射:

{
    "mappings":{
            "properties":{
                "Id":{
                    "type":"integer"
                },
                "custom":{
                    "type":"nested",
                    "properties":{
                        "text":{
                            "type":"text"
                        },
                        "start_time":{
                            "type":"text"
                        },
                        "end_time":{
                            "type":"text"
                        }

                    }

                }
        }
    }
}

1 个答案:

答案 0 :(得分:2)

好的,您混合了嵌套和非嵌套。这是一个适合您的查询:

{
  "_source": "false",
  "query": {
    "bool": {
      "filter": [
        {
          "terms": {
            "Id": [
              "100",
              "200"
            ]
          }
        },
        {
          "nested": {
            "path": "custom",
            "query": {
              "multi_match": {
                "fields": [
                  "custom.text"
                ],
                "query": "foo bar whatever",
                "fuzziness": "AUTO"
              }
            },
            "inner_hits": {
              "highlight": {
                "fields": {
                  "custom.start_time": {}
                }
              }
            }
          }
        }
      ]
    }
  }
}