ElasticSearch High Level REST API(4)多搜索

Multi-Search多搜索请求

Multi-Search可同时添加多个search搜索请求,并行地在一个http请求中执行多个搜索请求,相较多次单请求查询可提升查询效率。ES客户端通过mget方法实现多请求搜索:

@GetMapping("multiSearch")
public void multiSearch() {
    MultiSearchRequest request = new MultiSearchRequest();
    SearchRequest firstRequest = new SearchRequest("appblog");
    SearchSourceBuilder firstBuilder = new SearchSourceBuilder();
    firstBuilder.query(QueryBuilders.matchQuery("loglvl", "ERROR"));
    firstBuilder.sort("@timestamp", SortOrder.DESC);
    firstBuilder.from(0);
    firstBuilder.size(5);
    firstRequest.source(firstBuilder);
    request.add(firstRequest);
    SearchRequest secondRequest = new SearchRequest();
    SearchSourceBuilder secondBuild = new SearchSourceBuilder();
    secondBuild.query(QueryBuilders.matchQuery("name", "Joe.Ye"));
    secondRequest.source(secondBuild);
    request.add(secondRequest);
    try {
        MultiSearchResponse multiResponse = client.msearch(request, RequestOptions.DEFAULT);
        MultiSearchResponse.Item firstItem  = multiResponse.getResponses()[0];
        if (firstItem.getFailure() != null) {
            System.out.println("First search request fail!");
        }
        SearchResponse firstResponse = firstItem.getResponse();
        for (SearchHit documentFields : firstResponse.getHits().getHits()) {
            System.out.println("First search response: " + documentFields.getSourceAsString());
        }
        MultiSearchResponse.Item secondItem = multiResponse.getResponses()[1];
        if (secondItem.getFailure() != null) {
            System.out.println("Second search request fail!");
        }
        SearchResponse secondResponse = secondItem.getResponse();
        for (SearchHit documentFields : secondResponse.getHits().getHits()) {
            System.out.println("Second search response: " + documentFields.getSourceAsString());
        }
        client.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}
上一篇 ElasticSearch High Level REST API(3)Scroll 滚屏
下一篇 ElasticSearch High Level REST API(5)使用模板搜索
目录
文章列表
1 Spring Boot使用@ConfigurationProperties加载配置文件
Spring Boot使用@ConfigurationProperties加载配置文件
2
AWS Cli通过 InstanceId 获取所在可用区
AWS Cli通过 InstanceId 获取所在可用区
3
玩转Redis-HyperLogLog统计微博日活月活
玩转Redis-HyperLogLog统计微博日活月活
4
Android NDK基础20:C++_类大小_友元函数_运算符重载
Android NDK基础20:C++_类大小_友元函数_运算符重载
5
React Native学习之RN与原生通信
React Native学习之RN与原生通信
最新评论
一位WordPress评论者
一位WordPress评论者
2月12日
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。