在 Spring Boot 环境下使用 SearchSourceBuilder 进行 AND 和 OR 查询,你可以使用 Elasticsearch 的 Java API 来构建查询。

首先,你需要添加 Elasticsearch 的依赖到你的项目中。在 pom.xml 文件中添加以下依赖:

<dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    <version>7.15.2</version>
</dependency>

然后,你可以使用 SearchSourceBuilder 来构建查询。下面是一个使用 AND 和 OR 查询的示例:

import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.unit.Fuzziness;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class ElasticSearchService {

    @Autowired
    private RestHighLevelClient client;

    public void searchWithAndOrQuery() {
        SearchRequest searchRequest = new SearchRequest('your_index_name');

        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();

        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();

        boolQueryBuilder.must(QueryBuilders.matchQuery('field1', 'value1'));
        boolQueryBuilder.mustNot(QueryBuilders.matchQuery('field2', 'value2'));

        BoolQueryBuilder orQueryBuilder = QueryBuilders.boolQuery();

        orQueryBuilder.should(QueryBuilders.matchQuery('field3', 'value3'));
        orQueryBuilder.should(QueryBuilders.matchQuery('field4', 'value4'));

        boolQueryBuilder.should(orQueryBuilder);

        searchSourceBuilder.query(boolQueryBuilder);

        searchRequest.source(searchSourceBuilder);

        try {
            SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);

            // 处理搜索结果
        } catch (Exception e) {
            // 处理异常
        }
    }
}

在上述示例中,我们首先创建一个 SearchRequest 对象,并指定要搜索的索引名称。然后,我们创建一个 SearchSourceBuilder 对象,并使用 QueryBuilders 构建 BoolQueryBuilder 来构建 AND 和 OR 查询。在 BoolQueryBuilder 中,我们使用 must 方法添加 AND 查询条件,使用 mustNot 方法添加 NOT 查询条件。然后,我们创建一个新的 BoolQueryBuilder 对象来构建 OR 查询条件,并使用 should 方法添加 OR 查询条件。最后,我们将 BoolQueryBuilder 对象设置为 SearchSourceBuilder 的查询条件,并将 SearchSourceBuilder 对象设置为 SearchRequest 的 source。

最后,我们使用 RestHighLevelClient 来执行搜索请求,并处理搜索结果或异常。

请注意,上述示例中的 'your_index_name' 应该替换为你实际的索引名称,'field1'、'value1' 等应该替换为你实际的字段名和查询值。

希望这可以帮助到你!

Spring Boot Elasticsearch 查询:使用 SearchSourceBuilder 实现 AND 和 OR 查询

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

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