SpringBoot Elasticsearch 多字段精确查询 - 使用 MultiMatchQueryBuilder
在 Spring Boot 中使用 Elasticsearch 进行多字段精确查询,可以使用 MultiMatchQueryBuilder 类型。
首先,确保已经在 Spring Boot 项目中集成了 Elasticsearch。可以通过添加以下 Maven 依赖实现:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
然后,在需要进行查询的方法中,注入 ElasticsearchTemplate 对象,并使用 MultiMatchQueryBuilder 类型进行查询。以下是一个示例代码:
import org.elasticsearch.index.query.MultiMatchQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
import org.springframework.stereotype.Service;
@Service
public class SearchService {
private final ElasticsearchTemplate elasticsearchTemplate;
@Autowired
public SearchService(ElasticsearchTemplate elasticsearchTemplate) {
this.elasticsearchTemplate = elasticsearchTemplate;
}
public List<YourEntity> search(String keyword) {
MultiMatchQueryBuilder queryBuilder = QueryBuilders.multiMatchQuery(keyword)
.field('field1')
.field('field2')
.field('field3');
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(queryBuilder)
.build();
return elasticsearchTemplate.queryForList(searchQuery, YourEntity.class);
}
}
在上述代码中,YourEntity 是你的实体类,field1、field2 和 field3 是你要查询的字段。可以根据实际情况修改。
然后,你可以调用 search() 方法,并传入关键字进行查询。该方法将返回一个包含符合条件的实体对象的列表。
请注意,这只是多字段精确查询的一种方法,你可以根据实际需求进行调整和修改。
原文地址: https://www.cveoy.top/t/topic/0wr 著作权归作者所有。请勿转载和采集!