ElasticSearch 8(2),算法面试经典100题

8、ELK技术栈介绍
9、Logstash部署与使用
10、ElasticSearch 7.x 版本使用 BulkProcessor 实现批量添加数据
11、ElasticSearch 8.x 弃用了 High Level REST Client,移除了 Java Transport Client,推荐使用 Elasticsearch Java API
12、ElasticSearch 8.x 使用 snapshot(快照)进行数据迁移
13、ElasticSearch 8.x 版本如何使用 SearchRequestBuilder 检索
14、ElasticSearch 8.x 使用 High Level Client 以 HTTPS 方式链接,SSL 证书、主机名验证器 各是什么,如何忽略
15、ElasticSearch 8.x 创建父子文档,用Join类型字段以及用has_child、has_parent 检索

ElasticSearch,创始人 Shay Banon(谢巴农)
本文主要讲解ElasticSearch 高级搜索实战,来满足复杂的业务场景,还是用 Kibana 来操作。


文章目录

前言

最近在公司迁移项目到云服务期间,有一个项目迁移需要升级 ElasticSearch。原先用的是 ElasticSearch 6.8 版本的,迁移到云服务之后由于云服务限制,只能升级到了 ElasticSearch 8.x 版本了,对于一些别依赖来说,比如:jdbc driver、redis client 或者 mq client 可能会有些许 API 变化,所以项目中代码改动不大,但是 ElasticSearch 只要升一级,你的项目中极大可能就是 代码上下一片红,惨不忍睹啊,所以一般非必要不升级啊!

一、ElasticSearch 先后弃用另个客户端

ElasticSearch 7.0.0 版本开始,ElasticSearch 官方就不建议使用 TransportClient 客户端了,推荐使用 High Level REST Client 客户端了。
官方快速通道 ,想了解更多的小伙伴可以移步官方文档,慢慢品读,顺便锻炼英语阅读能力。
ElasticSearch官方通知

The TransportClient is deprecated in favour of the Java High Level REST Client and will be removed in Elasticsearch 8.0.
TransportClient 是不赞成的,推荐使用 Java High Level REST Client,并且将要在 Elasticsearch 8.0 移除


然后接下来,从 ElasticSearch 7.15.0 版本开始,ElasticSearch 官方就不建议使用 High Level REST 客户端了,推荐使用 ElasticSearch-java 客户端了。
官方快速通道 ,想了解更多的小伙伴可以移步官方文档,慢慢品读,顺便锻炼英语阅读能力。

ElasticSearch官方通知
The High Level REST Client is deprecated in favour of the Java API Client。
High Level REST Client是不赞成的,推荐使用 JAVA api 客户端,不过 High Level REST Client 7.17 版本可以和 ElasticSearch 8.x 兼容模式下使用。

一、为什么要弃用 TransportClient 呢?

在 Elasticsearch 7.0.0 版本后不建议使用 TransportClient了,为什么呢?是因为它在分布式集群中的使用方式不够灵活且不够健壮。TransportClient 使用内部集群协议进行通信,这会导致以下问题:

  1. 集群版本兼容问题:Transport Client 必须与 ElasticSearch 集群的确切版本匹配,如果有版本不匹配则会出现兼容问题,对版本特别敏感。
  2. 单点故障:Transport Client 需要连接到特定的节点,如果连接的节点发生故障,客户端则无法自动重新连接到集群的其他节点。
  3. 不推荐的跨版本使用: Transport Client 在集群版本升级时可能会遇到问题,因为它需要与集群完全匹配,跨版本使用会引发不兼容性问题,所以使用还不是很灵活。

但 Transport Client 也有有点的,比如:

  1. 低延迟:与集群内部直接通信,可能具有比 REST 客户端更低的延迟。
  2. 直接与集群通信:能够直接在集群内部进行通信和交互。

所以综合考虑,为了更好地兼容不同版本的集群、更灵活地处理节点故障和更广泛地支持 REST Api,在 ElasticSearch 7.x 版本开始使用 High Level REST Client 进行操作了。

二、为什么要弃用 High Level REST Client 呢?

那在 ElasticSearch 7.15.0 版本开始,官方又不建议使用 High Level REST Client 了,为什么呢?因为它是基于原生的 REST API,而这些 API 在某些情况下限制了某些功能的性能优化。与此同时,官方也推出了 Elasticsearch Java 客户端(Java 客户端)作为替代方案。这个新客户端旨在提供更好的性能、更好的稳定性,并且更易于维护和开发。
缺点如下:

  1. 性能损耗:由于是基于 REST API 的封装,可能存在性能上的一些损耗,比如相比原生的 Java 客户端可能有更高的延迟。
  2. 功能限制:High Level REST Client 对于一些高级或较新的功能可能提供支持不够或者存在一些限制。

优点如下:

  1. 易用性高:High Level REST Client 封装了底层的 REST API,提供了了更直观、更易用的开发方法调用 ElasticSearch 的功能。
  2. 开发效率
  3. 较好的兼容性

虽然 High Level REST Client 在易用性和开发效率方面有优势,但是为了获得更好的性能、更好的稳定性,并且获得更多的特性支持,官方建议从 Elasticsearch 7.15.0 版本开始,使用新的 Java 客户端进行操作。

三、Elasticsearch Java API 如何使用

3.1 pom 依赖

co.elastic.clients elasticsearch-java 8.7.1 com.fasterxml.jackson.core jackson-databind 2.12.3 org.projectlombok lombok 1.18.22 provided

3.2 ES Client 初始化

注意:修改 ES 的用户名密码

/**
* 初始化客户端
* @return
*/
private static ElasticsearchClient initClient(){
String hostname = “192.168.*.*”;
int port = 9200;
String username = “your username”;
String password = “your password”;
// 基本的用户名密码认证
BasicCredentialsProvider basicCredentialsProvider = new BasicCredentialsProvider();
basicCredentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(username, password));
RestClientBuilder restClientBuilder = RestClient.builder(new HttpHost(hostname, port, “http”));
restClientBuilder.setHttpClientConfigCallback(httpAsyncClientBuilder ->
httpAsyncClientBuilder.setDefaultCredentialsProvider(basicCredentialsProvider));
RestClient restClient = restClientBuilder.build();
ElasticsearchTransport transport = new RestClientTransport(restClient, new JacksonJsonpMapper());

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数大数据工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)
img

基本涵盖了95%以上大数据开发知识点,真正体系化!**

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)
[外链图片转存中…(img-JmQgStji-1712515939091)]

  • 51
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值