Elasticsearch:multi_match对过滤器没有影响

时间:2016-03-30 09:18:07

标签: elasticsearch

我尽量简短。此搜索不适用multi_match中的搜索关键字。我插入的任何搜索文本我总是得到相同的结果

如果我删除filtered / filter,它会给我一个正确的搜索。为什么呢?

GET /catalog/products/_search
{
   "from":0,
   "size":150,
   "query":{
      "filtered":{
         "query":{
            "multi_match":{
               "query":"text to search",
               "fields":[
                  "title^5",
                  "description"
               ]
            },
            "filter":{
               "and":[
                  {
                     "term":{
                        "category": 2
                     }
                  },
                  {
                     "not":{
                        "term":{
                           "subCategory": 3
                        }
                     }
                  }
               ]
            }
         }
      }
   }
}

1 个答案:

答案 0 :(得分:2)

在查询时将过滤器放在同一级别,如下所示:

GET /catalog/products/_search
{
    "from":0,
    "size":150,
    "query":{
      "filtered":{
        "query":{
          "multi_match":{
             "query":"text to search",
             "fields":[
                "title^5",
                "description"
             ]
          }
        },
        "filter":{
           "and":[
              {
                 "term":{
                    "category": 2
                 }
              },
              {
                 "not":{
                    "term":{
                       "subCategory": 3
                    }
                 }
              }
           ]
        }
      }
    }
}