minimum_should_match与嵌套对象

时间:2015-09-18 08:34:59

标签: elasticsearch nested

我遇到一些最小的问题应该匹配条款查询。

在我的文档中,我有人嵌套对象的以下映射

"people": {
   "type": "nested",
   "properties": {
      "name": {
         "type": "string",
         "index": "not_analyzed"
       }
     }
}

我尝试使用minimum_should_match嵌套查询。此代码驻留在嵌套范围内:

"bool": {
    "should": [
     {
       "terms": {
          "people.name": [
                 "Anna",
                 "Mark",
                 "Joe"
                 ],
           "minimum_should_match": "100%",
            "boost": 3
           }
        }
    ]
}

即使具有这三个名称的文档在我的索引中,我也没有结果。

问题是否与人员数据的嵌套结构有关? 对于名字匹配较高的文档,我希望获得高分。

我已经尝试了"execution" : "or",我得到了

QueryParsingException[[my_db] [terms] query does not support [execution]

我找到的唯一解决方案是将每个名称与应该范围内的不同术语分开。

这会影响查询的复杂性吗?有时我必须找到30个名字的文件。

1 个答案:

答案 0 :(得分:0)

试试这个:

"query": {
    "bool": {
        "should": [
            {"nested":
                {"path": "people",
                    "query": {
                        "terms" : {
                            "people.name" :["Anna", "Joe"]
                        }                           
                    }
                }
            }
        ]
      }
    }