restHighLevelClient客户端的使用

简介: restHighLevelClient客户端的使用

一、基本概念

RestHighLevelClient 是es的原生高客户端,ElasticsearchRestTemplate 是es基于Spring集成 用法和JPA类似,如果是有用Spring或者SpringBoot推荐还是ElasticsearchRestTemplate


二、HighLevelRESTClient的使用

1、判断索引是否存在

GetIndexRequest request = new GetIndexRequest(indexName);
boolean exists = restHighLevelClient.indices().exists(request, RequestOptions.DEFAULT);
restHighLevelClient.close();


2、MultiSearch批量查询

public static void multiSearch() {
    var client = getClient();
    MultiSearchRequest msRequest = new MultiSearchRequest();
    SearchRequest request1 = new SearchRequest("movies");
    SearchSourceBuilder builder1 = new SearchSourceBuilder();
    builder1.query(QueryBuilders.matchQuery("title", "you"));
    request1.source(builder1);
    msRequest.add(request1);
    SearchRequest request2 = new SearchRequest("movies");
    SearchSourceBuilder builder2 = new SearchSourceBuilder();
    builder2.query(QueryBuilders.matchQuery("title", "life"));
    request2.source(builder2);
    msRequest.add(request2);
    try {
      MultiSearchResponse responses = client.msearch(msRequest, RequestOptions.DEFAULT);
      Arrays.asList(responses.getResponses()).stream()
      .map(item -> item.getResponse())
      .map(response -> response.getHits())
      .filter(hit -> hit != null)
      .forEach(hit -> hit.forEach(System.out::println));
    } catch (IOException e) {
      e.printStackTrace();
    }finally {
      close(client);
    }
  }
  /**
   * 关闭客户端
   * 
   * @param client
   */
  private static void close(RestHighLevelClient client) {
    try {
      client.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
  /**
   * 获取客户端
   * 
   * @return
   */
  private static RestHighLevelClient getClient() {
    RestHighLevelClient client = new RestHighLevelClient(
        RestClient.builder(new HttpHost("elk-node01", 9200, "http"), new HttpHost("elk-node02", 9200, "http"),
            new HttpHost("elk-node03", 9200, "http")));
    return client;
  }


相关文章
|
Apache
HttpClient实现RPC调用
HttpClient实现RPC调用
47 0
|
4月前
|
安全 Java API
深入探索 org.springframework.http.server.reactive.ServerHttpRequest:Reactive世界中的HTTP请求处理
深入探索 org.springframework.http.server.reactive.ServerHttpRequest:Reactive世界中的HTTP请求处理
135 0
|
负载均衡 Java API
深入了解Feign——优雅的HTTP客户端
在现代的软件开发中,服务间的通信变得越来越重要。微服务架构的兴起使得应用程序的各个组件可以独立开发、部署和维护,从而提高了灵活性和可伸缩性。然而,微服务之间的通信也带来了一些挑战,例如如何管理不同服务之间的调用和数据传输。在这个领域,Feign作为一种优雅的HTTP客户端框架,为我们解决了许多通信相关的问题。
337 0
|
JSON 网络协议 前端开发
关于 WebSocket 和 HTTP 区别的思考以及一个最简单的 WebSocket 的客户端和服务器实现
关于 WebSocket 和 HTTP 区别的思考以及一个最简单的 WebSocket 的客户端和服务器实现
关于 WebSocket 和 HTTP 区别的思考以及一个最简单的 WebSocket 的客户端和服务器实现
|
Java 网络架构 开发者
使用 restTemplate 实现 RPC 远程|学习笔记
快速学习使用 restTemplate 实现 RPC 远程
202 0
|
JSON 前端开发 Java
HTTP连接客户端,选 HttpClient 还是 OkHttp ?
HTTP连接客户端,选 HttpClient 还是 OkHttp ?
941 0
HTTP连接客户端,选 HttpClient 还是 OkHttp ?
|
Java 索引
Transport Client 客户端的使用
Transport Client 客户端的使用
|
应用服务中间件
Netty的http client连接池设计
Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。本文转载自 hetaohapp 的CSDN博客。将为大家分享使用Netty作为http的客户端的场景下,pool该如何进行设计。
13702 0
|
区块链
【Netty】使用 Netty 开发 HTTP 服务器 ( HTTP 请求过滤 )
【Netty】使用 Netty 开发 HTTP 服务器 ( HTTP 请求过滤 )
636 0
【Netty】使用 Netty 开发 HTTP 服务器 ( HTTP 请求过滤 )
netty系列之:搭建客户端使用http1.1的方式连接http2服务器
netty系列之:搭建客户端使用http1.1的方式连接http2服务器