23 Rest高级客户端实践(九):批量搜索

文章目录


Java客户端还提供了批量搜索的

1 代码

使用MultiSearchRequest将多个SearchRequest收集起来而已

package study.wyy.esclient.high.search;

import lombok.extern.slf4j.Slf4j;
import lombok.var;
import org.elasticsearch.action.search.MultiSearchRequest;
import org.elasticsearch.action.search.MultiSearchResponse;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.junit.Test;
import study.wyy.esclient.high.BaseTest;

import javax.sound.midi.Soundbank;
import java.io.IOException;

/**
 * @author wyaoyao
 * @description
 * @date 2021/1/14 16:03
 */
@Slf4j
public class MultiSearchTest extends BaseTest {

    @Test
    public void testSync() throws IOException {
        MultiSearchRequest multiSearchRequest = new MultiSearchRequest();
        // 第一个SearchRequest
        SearchRequest searchRequest1 = new SearchRequest();
        searchRequest1.indices("books");
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        searchSourceBuilder.query(QueryBuilders.matchQuery("language","python"));
        searchRequest1.source(searchSourceBuilder);

        // 第二个SearchRequest
        SearchRequest searchRequest2 = new SearchRequest();
        searchRequest2.indices("books");
        SearchSourceBuilder searchSourceBuilder2 = new SearchSourceBuilder();
        searchSourceBuilder2.query(QueryBuilders.matchQuery("language","java"));
        searchRequest2.source(searchSourceBuilder2);

        // 将两个SearchRequest添加到MultiSearchRequest
        multiSearchRequest.add(searchRequest1);
        multiSearchRequest.add(searchRequest2);

        MultiSearchResponse response = client.msearch(multiSearchRequest, RequestOptions.DEFAULT);
        MultiSearchResponse.Item[] responses = response.getResponses();
        log.info("数量: {}",responses.length);
        if(responses != null && responses.length>0){
            for (var item :responses) {
                // 获得之前的SearchResponse对象
                SearchResponse response1 = item.getResponse();
                log.info("response: {}",objectMapper.writer().writeValueAsString(response1));
            }
        }

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值