在elasticsearch中使用过滤器内的minimum_match

时间:2014-06-02 15:01:19

标签: elasticsearch

我正在尝试建立一个弹性调用,我想在幕布区域内设置一些过滤器,我想做的是:

{
    "query" : {
        "filtered" : {
            "query"  : {
                "match_all" : { }
            },
            "filter" : {
                "and" : [
                    {
                        "bool" : {
                            "must" : {
                                "terms" : {
                                    "my_filter"     : [1, 2, 4],
                                    "minimum_match" : 3
                                }
                            }
                        }
                    },
                    {
                        "geo_distance" : {
                            "location" : "56.20123,14.3240234",
                            "distance" : "30km"
                        }
                    }
                ]
            }
        }
    }
}

然而,当我尝试这一切时,我得到的是“过滤器中的条款不允许minimum_match,有什么方法可以解决这个问题吗?

我尝试使用bool作为查询,但我不允许过滤那个

1 个答案:

答案 0 :(得分:1)

请与查询一起尝试minimum_match。如下

{
   "query": {
      "filtered": {
         "query": {
            "match_all": {}
         },
         "filter": {
            "and": {
               "filters": [
                  {
                     "query": {
                        "terms": {
                                "my_filter"     : [1, 2, 4],
                                "minimum_match" : 3
                        }
                     }
                  },
                  {
                     "geo_distance": {
                        "location": "56.20123,14.3240234",
                        "distance": "30km"
                     }
                  }
               ]
            }
         }
      }
   }
}