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