使用java,如何在elasticsearch中将匹配查询的默认运算符更改为AND?
当使用java api时,如下所示使用java,如何在elasticsearch中将匹配查询的默认运算符更改为AND?,java,
elasticsearch,Java,
elasticsearch,当使用java api时,如下所示 query.must(matchQuery("name", object.getName())); 生成的弹性查询是 "bool":{ "must":[ {"match":{"name":{"query":"De Michael Schuster","operator":"
query.must(matchQuery("name", object.getName()));
生成的弹性查询是
"bool":{
"must":[
{"match":{"name":{"query":"De Michael Schuster","operator":"OR","boost":1.0}}}
.....
现在我正在取回文件,文件名为:德或迈克尔或舒斯特。
我想将运算符更改为和,以匹配整个字符串
我知道我可以使用术语查询,但在我的场景中这不是一个选项
我遇到了这个问题,但没有给出答案-
如何使用Java实现这一点?简单如下:
query.must(matchQuery("name", object.getName()).operator(Operator.AND));
非常感谢你的回答。但当对带有“.”的字符串进行搜索时,它不会返回结果。我有文件名为:“医学博士伊丽莎白·鲍尔”。当我将上述查询与AND运算符一起使用时,它不会返回任何内容(使用或返回多个文档,这是预期的)。但是,当字符串不包含“.”时,它可以与AND运算符完美配合使用。例如,对于字符串“Stefan Drumm”,它返回文档。知道为什么会这样吗?当然,你的回答是正确的,也被接受了,但我在这里迷路了。如果您想让我发布新问题,请告诉我。仅供参考,发布了一个新问题:。您确定要使用
和运算符吗?它将匹配任何包含德、迈克尔和舒斯特的东西,而不考虑顺序和其他标记。“德迈克尔·舒斯特”将比赛,但“舒斯特·迈克尔·德”和“约翰·舒斯特·威廉姆斯·德加布里埃尔·迈克尔”也将比赛。如果您想搜索短语“De Michael Schuster”,也就是说,单词的顺序正好相同,没有其他单词混杂在一起,那么您可能需要使用match_短语
。