当前位置: 首页 > article >正文

Elasticsearch7.15版本后新版本的接入

前言

        ES在Elasticsearch7.15后将高级客户端 RestHighLevelClient弃用,同时推出了全新的 Java API Client  Elasticsearch Java API Client ,7.17版本的High Level REST 客户端可以与 8.X 版本以兼容模式运行。

RestHighLevelClient的弃用原因:

        1.客户端太重,相关以来超过30MB。

        2.一致性差,需要大量维护工作。

        3.没有继承json/object类型映射

Elasticsearch Java API 客户端官方定义:

        Elasticsearch Java API 客户端为所有的 Elasticsearch API 提供请求和响应处理。

        它将请求处理转给 Elasticsearch Low Level REST 客户端,这也是 High Level 被废弃而 Low Level  REST 客户端依然健在的原因,Low Level REST 客户端负责处理 Http 连接建立和池化、重试机制等所有传输级别的问题。

        Elasticsearch Java API Client 三个特点:

        1).对象的构建基于构建者模式

        2).可以使用lambda构建嵌套对象,从而编写干净、富有表现力的DSL。

        3).应用程序类能自动映射为Mapping

创建

1.项目工程导包

官方:Installation | Elasticsearch Java API Client [7.17] | Elastic

        <dependency>
            <groupId>co.elastic.clients</groupId>
            <artifactId>elasticsearch-java</artifactId>
            <version>7.17.23</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.17.0</version>
        </dependency>
        <dependency>
            <groupId>jakarta.json</groupId>
            <artifactId>jakarta.json-api</artifactId>
            <version>2.0.1</version>
        </dependency>

2.创建链接

官方:Connecting | Elasticsearch Java API Client [7.17] | Elastic

    @Bean
    public ElasticsearchClient esRestClient() {
        // 创建REST客户端
        RestClient restClient = RestClient.builder(
                new HttpHost("localhost", 9200)).build();

        //创建传输层
        ElasticsearchTransport transport = new RestClientTransport(
                restClient, new JacksonJsonpMapper());
        //创建elasticsearch客户端
        ElasticsearchClient esClient = new ElasticsearchClient(transport);
        try {
            transport.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return esClient;

    }

3.编写测试类

@RunWith(SpringRunner.class)
@SpringBootTest
class SearchApplicationTests {
    @Autowired
    ElasticSearchConfig elasticSearchConfig;

    @Test
    public void contextLoads() throws IOException {
        ElasticsearchClient elasticsearchClient = elasticSearchConfig.esRestClient();
        GetIndexResponse all = elasticsearchClient.indices().get(query -> query.index("new_bank"));
        System.out.printf("all.toString()=");
        System.out.printf(all.toString());
    }

}

结果:

4.查询某一个索引下的数据

@Test
    public void contextLoads() throws IOException {
        ElasticsearchClient elasticsearchClient = elasticSearchConfig.esRestClient();


        GetResponse<Map> response = elasticsearchClient.get(builder -> builder.index("new_bank").id("13"), Map.class);
        Map source = response.source();
        source.forEach((x,y)->{
            System.err.println(x+":"+y);
        });
    }

结果:

 


http://www.kler.cn/a/283166.html

相关文章:

  • 【AI构思渲染】网络直播——建筑绘图大模型生成渲染图
  • C++编程:利用环形缓冲区优化 TCP 发送流程,避免 Short Write 问题
  • Bugku CTF_Web——文件上传
  • 图片画廊 day2 (可复制源码)
  • TensorRT基础知识
  • 【MySQL】数据库表连接简明解释
  • 三级_网络技术_54_应用题
  • FFmpeg 实现从设备端获取音视频流并通过RTMP推流
  • Prometheus+Grafana的安装和入门
  • 云上Oracle 数据库本地备份部署测试
  • Redis/ElaticSearch/kafka入门
  • 《经典图论算法》卡恩(Kahn)算法
  • 【电控笔记z27】相对位置控制(无前馈)
  • 【算法】递归、回溯、剪枝、dfs 算法题练习(N皇后、单词搜索、数独问题;C++)
  • Nginx: 反向代理和动静分离概述
  • 02. 开发前准备,Docker安装MySQL,Redis
  • SpringBoot优雅的封装不同研发环境下(环境隔离)RocketMq自动ack和手动ack
  • python实战二-筛选多个Excel中数据
  • 深度学习论文被评“创新性不足、工作量不够”怎么办?
  • Java毕业设计 基于SSM校园心理咨询服务平台
  • 应对Nginx负载均衡中的请求超时:策略与配置
  • HTTPS 通信时是对称加密还是非对称加密?
  • 基于SpringBoot的医疗服务系统
  • 贝塞尔曲线
  • uniapp小程序怎么判断滑动的方向
  • Redis—基础篇