Spring Boot Elasticsearch 多字段精确匹配指南
在 Spring Boot 中使用 Elasticsearch 进行多字段精确匹配,你可以使用一个 bool 查询来实现。
首先,你需要在你的 Spring Boot 应用程序中配置 Elasticsearch 客户端。你可以使用 Elasticsearch 官方提供的 Java 高级客户端或者 Spring Data Elasticsearch。
接下来,你需要定义一个查询条件,使用多个字段进行精确匹配。你可以使用一个 bool 查询来组合多个精确匹配查询。
以下是一个使用 Spring Data Elasticsearch 的例子:
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
import org.springframework.data.elasticsearch.core.query.NativeSearchQuery;
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
import org.springframework.stereotype.Service;
@Service
public class MySearchService {
@Autowired
private ElasticsearchOperations elasticsearchOperations;
public List<MyDocument> search(String keyword) {
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery()
.must(QueryBuilders.matchQuery('field1', keyword))
.must(QueryBuilders.matchQuery('field2', keyword));
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(boolQueryBuilder)
.build();
return elasticsearchOperations.queryForList(searchQuery, MyDocument.class);
}
}
在上面的例子中,我们定义了一个 BoolQueryBuilder,然后使用 must 方法添加了两个 matchQuery 条件,分别对 field1 和 field2 进行精确匹配。
然后,我们使用 NativeSearchQueryBuilder 构建了一个查询,并将上面的 BoolQueryBuilder 作为查询条件。
最后,我们使用 elasticsearchOperations 执行查询,并获取结果。
请注意,上面的例子假设你已经定义了一个名为 MyDocument 的实体类,它代表了 Elasticsearch 中的文档。
如果你使用的是 Elasticsearch 官方提供的 Java 高级客户端,你可以使用类似的方法构建查询和执行查询。
希望对你有帮助!
原文地址: https://www.cveoy.top/t/topic/0s9 著作权归作者所有。请勿转载和采集!