在 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 条件,分别对 field1field2 进行精确匹配。

然后,我们使用 NativeSearchQueryBuilder 构建了一个查询,并将上面的 BoolQueryBuilder 作为查询条件。

最后,我们使用 elasticsearchOperations 执行查询,并获取结果。

请注意,上面的例子假设你已经定义了一个名为 MyDocument 的实体类,它代表了 Elasticsearch 中的文档。

如果你使用的是 Elasticsearch 官方提供的 Java 高级客户端,你可以使用类似的方法构建查询和执行查询。

希望对你有帮助!

Spring Boot Elasticsearch 多字段精确匹配指南

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

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