0

我使用查询来搜索定义如下:

QueryBuilder queryBuilder = nestedQuery("bodyObject.drawElems",
            boolQuery()
                    .minimumNumberShouldMatch(1)
                    .should(matchQuery("bodyObject.drawElems.drawElemTitle", "problem engagement"))
                    .should(matchQuery("bodyObject.drawElems.drawElemTitle", "problem definition"))
                    .should(matchQuery("bodyObject.drawElems.drawElemTitle", "research"))
                    .should(matchQuery("bodyObject.drawElems.drawElemTitle", "problem resolution")));

minimumNumberShouldMatch的值为1时,我得到了异常结果。但是我将其更改为2或更多,不再有任何点击,尽管我实际上有可以满足至少两个应该条款的文档,例如“问题参与”和“问题定义”。

谁能回答我的问题?还是我的代码有问题?谢谢!

4

1 回答 1

1

我遇到了同样的问题。我认为单个嵌套查询应该能够处理多个匹配项(而不仅仅是一个匹配项),但由于某种原因,它起作用的唯一方法是,如果我对每个我想要匹配的值都有一个单独的嵌套查询。希望您可以将此 JSON 查询转换为完整的对象查询,就像您的问题一样。

{  
   "bool":{  
      "should":[  
         {  
            "nested":{  
               "path":"bodyObject.drawElems",
               "query":{  
                  "match":{  
                     "bodyObject.drawElems.drawElemTitle":"problem engagement"
                  }
               }
            }
         },
         {  
            "nested":{  
               "path":"bodyObject.drawElems",
               "query":{  
                  "match":{  
                     "bodyObject.drawElems.drawElemTitle":"problem definition"
                  }
               }
            }
         },
         {  
            "nested":{  
               "path":"bodyObject.drawElems",
               "query":{  
                  "match":{  
                     "bodyObject.drawElems.drawElemTitle":"research"
                  }
               }
            }
         },
         {  
            "nested":{  
               "path":"bodyObject.drawElems",
               "query":{  
                  "match":{  
                     "bodyObject.drawElems.drawElemTitle":"problem resolution"
                  }
               }
            }
         }
      ],
      "minimum_number_should_match":2
   }
}
于 2014-08-15T21:55:17.127 回答