我有一堆存储在elasticsearch中的文档,其中包含字段title
和abstract
。我必须在文档中搜索诸如'word1 word2 ..'
之类的查询。目前我正在使用spring数据
MultiMatchQueryBuilder multiMatchQueryBuilder = new MultiMatchQueryBuilder(query, "abstract", "title");
Iterable<Document> result = documentRepository.search(multiMatchQueryBuilder);
这给了我所有包含
word1
或word2
的文档。如何匹配所有关键字?它应该给我包含查询word1
和word2
中所有单词的文档。基本上,我想要搜索查询中所有关键字的and
而不是or
。 最佳答案
您可以这样指定AND
运算符:
MultiMatchQueryBuilder multiMatchQueryBuilder = new MultiMatchQueryBuilder(query, "abstract", "title")
.operator(Operator.AND); // <---- add this
Iterable<Document> result = documentRepository.search(multiMatchQueryBuilder);