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;
  }


相关文章
|
4月前
|
存储 NoSQL Java
Jedis客户端介绍
【10月更文挑战第12天】
|
网络协议 算法 Java
gRPC 客户端调用服务端需要连接池吗?
gRPC 客户端调用服务端需要连接池吗?
|
JSON 前端开发 Java
HTTP连接客户端,选 HttpClient 还是 OkHttp ?
HTTP连接客户端,选 HttpClient 还是 OkHttp ?
1059 0
HTTP连接客户端,选 HttpClient 还是 OkHttp ?
|
Java 索引
Transport Client 客户端的使用
Transport Client 客户端的使用
|
应用服务中间件
Netty的http client连接池设计
Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。本文转载自 hetaohapp 的CSDN博客。将为大家分享使用Netty作为http的客户端的场景下,pool该如何进行设计。
13742 0
|
数据库 索引
RestClient操作文档
基础配置 新增文档 查询文档 删除文档 修改文档 批量导入文档 总结
106 0
java166-socket服务端和客户端连接
java166-socket服务端和客户端连接
84 0
java166-socket服务端和客户端连接
|
NoSQL 安全 Java
Jedis 客户端
Jedis 基于 Java 实现,是 shell 程序连接 Redis 数据库最常使用的工具。提供了比较全面的 Redis 命令的支持。
230 0
|
Windows
Netty的webSocket服务端的安全性的一些限制
Netty的webSocket服务端的安全性的一些限制
535 0
netty系列之:自建客户端和HTTP服务器交互
netty系列之:自建客户端和HTTP服务器交互