在 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 是你的实体类,field1field2field3 是你要查询的字段。可以根据实际情况修改。

然后,你可以调用 search() 方法,并传入关键字进行查询。该方法将返回一个包含符合条件的实体对象的列表。

请注意,这只是多字段精确查询的一种方法,你可以根据实际需求进行调整和修改。

SpringBoot Elasticsearch 多字段精确查询 - 使用 MultiMatchQueryBuilder

原文地址: https://www.cveoy.top/t/topic/0wr 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录