
elasticsearch
Elasticsearch 分片分配失败
Elasticsearch • Charele 回复了问题 • 2 人关注 • 1 个回复 • 165 次浏览 • 2022-05-07 20:11
Elasticsearch 技术短视频分享持续更新中.......
Elasticsearch • laoyang360 发表了文章 • 0 个评论 • 127 次浏览 • 2022-05-06 07:14
ES脚本中有对象创建导致的性能慢
Elasticsearch • Ombres 回复了问题 • 2 人关注 • 1 个回复 • 311 次浏览 • 2022-04-19 11:07
elastic / support-diagnostics诊断工具使用问题
回复开源项目 • 匿名用户 回复了问题 • 2 人关注 • 2 个回复 • 268 次浏览 • 2022-04-07 11:35
logstash推送数据到es执行两次脚本
Logstash • medcl 回复了问题 • 2 人关注 • 1 个回复 • 635 次浏览 • 2022-04-02 13:28
elasticsearch根据某个filed对不同index做差集,能否实现
Elasticsearch • Charele 回复了问题 • 3 人关注 • 1 个回复 • 343 次浏览 • 2022-04-01 15:44
elasticsearch如何开启access日志
Elasticsearch • medcl 回复了问题 • 3 人关注 • 1 个回复 • 410 次浏览 • 2022-03-30 11:42
elasticsearch [[node.max_local_storage_nodes] (was [1])
Elasticsearch • yimusidian 回复了问题 • 2 人关注 • 2 个回复 • 433 次浏览 • 2022-03-25 16:07
elasticsearch 分索引后如何快速更新指定数据?
Elasticsearch • liujiacheng 回复了问题 • 2 人关注 • 1 个回复 • 343 次浏览 • 2022-03-24 09:41
Lucene源码和历史版本的问题
默认分类 • pzw9696 回复了问题 • 2 人关注 • 1 个回复 • 396 次浏览 • 2022-03-13 17:46
有了这两个小脚本,不需要再傻乎乎地手动安装 Elasticsearch了
Elasticsearch • spoofer 发表了文章 • 0 个评论 • 659 次浏览 • 2022-03-11 19:40
在学习 ES 前一般都需要安装 ES,虽然 ES 可以开箱即用,但如果要学习分布式特性的时候,需要安装多个节点,这个时候还是有点工作量的。下面提供两个小脚本,一个是在 Ubuntu 中安装 3 节点的 ES 伪集群,一个是在 docker 中安装3节点 ES 集群。除了安装 ES 外,脚本还提供了对应版本的 Kibana、Cerebro 0.9.4 的安装。
1、在 Ubuntu 中安装 ES 7.13
这里我们采取下载 ES 安装包并且解压安装的方式,并没有走 Ubuntu apt 的方式。ES 的安装非常简单,这里先献上安装脚本。
下面介绍比较重要的配置项:
-
discovery.seed_hosts 在开箱即用的情境下(本机环境)无需配置,ES 会自动扫描本机的 9300 到 9305 端口。一旦进行了网络环境配置,这个自动扫描操作就不会执行。discovery.seed_hosts 配置为 master 候选者节点即可。如果需要指定端口的话,其值可以为:["localhost:9300", "localhost:9301"]
-
cluster.initial_master_nodes 指定新集群 master 候选者列表,其值为节点的名字列表。如果配置了 node.name: my_node_1,所以其值为 ["my_node_1"],而不是 ip 列表 !
- network.host 和 http.port 是 ES 提供服务的监听地址和端口,线上一定不能配置 ip 为 0.0.0.0,这是非常危险的行为!!!
怎么样来理解这个 discovery.seed_hosts 和 cluster.initial_master_nodes 呢?
cluster.initial_master_nodes 是候选者列表,一般我们线上环境候选者的数量比较少,毕竟是用来做备用的。而且这个配置只跟选举 master 有关,也就是跟其他类型的节点没有关系。就算你有100个数据节点,然后经常增加或者剔除都不需要动这个列表。
discovery.seed_hosts 这个可以理解为是做服务或者节点发现的,其他节点必须知道他们才能进入集群~ 一般配置为集群的master 候选者的列表。
但是这些 master 候选者(组织联系人)可能经常变化,那怎么办呢?这个配置项除了支持 ip 外还支持域名 ~所以可以用域名来解决这个问题,其他节点的配置上写的是域名,域名解析到对应的 ip,如果机器挂了,新的节点 ip 换了,就把域名解析到新的ip即可,这样其他节点的配就不用修改了。所以非 master 候选节点要配 discovery.seed_hosts (组织联系人)
除了修改 ES 服务配置外,还需要配置 JVM 的配置,我们主要配置服务占用的堆内存的大小。JVM 配置需要以下几点:
- 这两个 jvm 的配置必须配置一样的数值。启动时就分配好内存空间,避免运行时申请分配内存造成系统抖动。
- Xmx不要超过机器内存的 50%,留下些内存供 JVM 堆外内存使用
- 并且Xmx不要超过 32G。建议最大配置为 30G。接近 32G,JVM 会启用压缩对象指针的功能,导致性能下降。具体可以参考:a-heap-of-trouble。
安装成功后,可以访问: ES:localhost:9211
Kibana: localhost:5601
cerebro: localhost:9800
2、在docker 中安装 ES 7.13
在做一切工作之前,我们必须安装 docker。如果你已经安装好了 docker、docker-compose,可以访问我为你准备的 docker-compose.yaml 文件。
如果你没有安装 docker,完整的教程可以参考在 docker 中安装 ES 文档。
下载此文件,将文件保存为 docker-compose.yaml 后,进入这个文件的目录,执行以下指令即可:
docker-compose up
如果你没有下载镜像文件,docker-compose 会自动帮你下载镜像,并且启动容器。
如果 docker-compose 启动失败,说是无权限链接 docker 的话,其报错如下:
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock:
Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json?all=1&filters=%7B%22label%22%3A%7B%22com.docker.compose.project%3Ddocker_es%22%3Atrue%7D%7D&limit=0":
dial unix /var/run/docker.sock: connect: permission denied
可以运行以下指令临时修改:
sudo chmod 666 /var/run/docker.sock
其原因是因为你的 docker 用了 root 启动了。
最后可以访问:
cerebro:ip:9000
Kibana:ip:5601
Elasticsearch: ip:9200,ip:9202,ip:9203
其他学习资料
在 docker image 中安装 Elasticsearch 插件
最后附上我写的小册,欢迎刚入门的朋友来订阅~
熬了几个月的夜,我的ES小册终于发布啦,适合初学者或者有点基础的同学学习~
Elasticsearch • spoofer 发表了文章 • 2 个评论 • 1209 次浏览 • 2022-03-01 12:19
本小册分为 4 个部分,将由浅入深为你介绍 Elasticsearch 7.x 中的核心技术。主要知识点包括基本概念、常用 API 的使用实践、核心特性的底层原理与思想、集群管理与调优、源码阅读等知识。整个小册的思维导图如下:
你会学到什么?
本小册将会从非常浅显的概念开始与你学习 Elasticsearch 7.x 中的常用 API,在熟悉使用 Elasticsearch 后,我们将会对 Elasticsearch 中部分重要的特性、概念的底层实现原理进行介绍。在了解这些原理后,我们将学习如何部署、运维线上小规模集群,并且与你一起搭建一个简单的 ELK 系统。最后我们会搭建源码阅读的环境并且与你一起阅读部分模块的源码。
所以,通过本小册 4 大部分的学习,你可以收获:
- 熟练使用 Elasticsearch 来解决搜索需求;
- 强化 Elasticsearch 集群运维、调优的能力;
- 通晓 Elasticsearch 核心技术的底层实现;
- 牢固掌握源码阅读与调试的技巧。
也就是说,学完本课程后,你不仅可以掌握 ElasticSearch 相关的技术,还可以帮助你根据业务的特点快速构建出相应的搜索业务、数据分析、日志系统。真正实现学以致用。
适宜人群
- 对 Elasticsearch 或搜索引擎感兴趣的同学。
- 有了解和使用过 Elasticsearch,现在想进一步了解 Elasticsearch 的同学。
- 准备从事数据搜索、分析相关工作的同学。
- 从事 Elasticsearch 集群运维的同学。
elasticsearch scroll查询的原理没太懂
Elasticsearch • caster_QL 回复了问题 • 12 人关注 • 4 个回复 • 24339 次浏览 • 2022-02-24 15:50
segments的version_map_memory指标具体表示什么
Elasticsearch • Charele 回复了问题 • 3 人关注 • 2 个回复 • 587 次浏览 • 2022-02-21 16:43
兼容不同版本的查询响应结果的 Count 结构
Elasticsearch • medcl 发表了文章 • 0 个评论 • 3 次浏览 • 2022-02-21 16:08
发布一个免费的 Elasticsearch 多集群监控和管理平台 - 极限数据平台
Elasticsearch • medcl 发表了文章 • 18 个评论 • 2883 次浏览 • 2021-11-22 18:48
随着单个 Elasticsearch 集群规模的越来越大,大家要么在拆集群的路上,要么是已经是多套集群了, 据路边社消息,一个公司超过5个集群的情况已经变得非常普遍,而管理多个集群着实是有点痛苦,比如常规的玩法可能是一套集群一个 Kibana,集群一多,切换来切换去就有点懵圈了有木有?
作为一个优雅的程序员或者运维管理员,是可忍孰不可忍啊。
另外,多个集群的监控也是一个麻烦事,目前常见的几种监控如:
- 使用 Kibana 自带的监控
- 使用 Prometheus + Grafana
- 使用 Zabbix
Kibana 自带的监控可以很好的满足单个集群的监控场景,不过集群规模大了之后,经常会出现指标丢失的问题,如果使用单独的监控集群,需要修改每个节点的配置,集群都需要重启,对于已经上了生产的集群,有点不方便,另外多集群监控需要商业授权。
那 Prometheus 呢, 一个 Elasticsearch 集群如果要监控起来,首先需要部署一个 Exporter 来暴露集群指标,然后部署一套Prometheus 来采集 Elasticsearch 指标,采集完了之后再部署一套 Grafana 来进行报表分析,不同的集群要做好切换,简单的事情,搞复杂了,整个监控体系偏重,维护成本高。
Zabbix 和 Prometheus 的场景差不多,就不赘述了。
那么问题来了,有没有一个更加简单方便的多集群监控和管理方案呢,并且要支持不同版本的集群,最好是 v2、v5、v6、v7 以及最新的 v8 都能统统接管,哈哈,没错了,这里给大家介绍一个我们极限实验室团队最近开发出来的一款免费的多集群监控和管理工具-极限数据平台,目前版本 v0.1,新鲜出炉。
废话不多少,咱们直接看图说话:
首先是多集群的纳管,目前从 1.0 到最新的 8.0 统统都可以接进来。
然后就是集群的监控拉,要多简单有多简单,就是一个开关的事情,注册集群的时候,启用即开启监控,目标集群啥都不用动,费那劲干啥。
监控界面如图:
集群概览,总体情况一目了然。
各个节点信息,分门别类。
各个索引级别的信息,挨个查看。
多个集群之间的监控查看一键切换,非常方便。
查看监控的时候,发现不对劲,要操作一下集群,直接调出控制台,如下图:
常用的操作命令,可以保存起来,方便下次使用。
别再保存在记事本里面了,下次又找不到,直接加载执行就好了。
好了,你要是用 Elasticsearch 不知道这个工具,那就 out 了,赶快耍起来吧。
下载地址:
http://release.elasticsearch.cn/console/snapshot/
安装巨简单,简直懒得说,一个二进制可执行文件,一个 yml 配置文件,里面修改 Elasticsearch 地址,结束。
可以在这里查看 介绍和 Demo 演示视频
最后,欢迎关注极限实验室,获取更多 Elasticsearch 免费工具及业界资讯的第一手消息。
Elastic 中国开发者大会 2021 开启了,预热铁粉票已开抢,手慢无!
活动 • liaosy 发表了文章 • 0 个评论 • 825 次浏览 • 2021-11-11 17:45
【杭州站】Elastic & 阿里云 Meetup 6月5号
活动 • liaosy 发表了文章 • 0 个评论 • 1237 次浏览 • 2021-05-22 17:38
活动介绍
本次Meetup杭州站由阿里云和Elastic联合举办,邀请来自滴滴、安恒信息、阿里云的资深技术专家探讨在搜索、安全、内核优化等方向的实践与创新,以及发布由数十位优秀技术开发者共创而成的实战指南,共同分享 Elasticsearch技术大咖的一线经验与深度思考。
报名方式
链接:https://www.bagevent.com/event/7449056
扫码:
活动时间
2021年06月05日 13:00-17:30
活动地址
浙江省杭州市余杭区阿里巴巴西溪园区访客中心 206-S越秀书院
活动流程
13:00~13:15 签到入座
13:15~13:30 开发者共创书籍《Elastic Stack 实战手册V1.0》发布
13:30~14:30 滴滴Elasticsearch内核优化之路
韩宝君 滴滴Elasticsearch资深开发工程师/ES社区Contributor
14:30~15:30 Elasticsearch在SIEM的应用与实践
汤乐奇 安恒信息AiLPHA大数据资深研发经理
15:30~16:30 Elasticsearch Serverless 云原生时代的创新实践
马华标(城破) 阿里巴巴高级技术专家/阿里云ES内核研发负责人
16:30~17:20 圆桌交流
17:20~17:30 抽奖合影
活动奖品
阿里云双肩包、T恤、Elastic定制礼物
阿里云ACE
阿里云ACE即全称 Alibaba Cloud Engineer,是意为阿里云的工程师、代表着云计算的建设者。同时“ACE”又是扑克牌中的“A”,因此阿里云ACE也寓意着是云计算领域王牌的一群人。在线上,ACE拥有专属的页面和29个社群,承载论坛及专栏等内容; 在线下,ACE通过组织丰富的活动,包括技术沙龙、TechDay、Meetup、官方互动等来形成本地化的开发者的学习、社交平台。
通过ACE组织的各种活动,ACE用户可以结识本地的开发者,收获前沿知识,积累行业经验,并加深对阿里云的了解。
活动交流及杭州ACE同城会钉群
活动海报
2021 Elastic 中文社区深圳线下 Meetup 重磅重启,讲师招募进行中!
活动 • howardhuang 发表了文章 • 0 个评论 • 1180 次浏览 • 2021-05-21 15:49
《腾讯Elasticsearch海量规模背后的内核优化剖析》答疑
Elasticsearch • howardhuang 发表了文章 • 37 个评论 • 5845 次浏览 • 2020-05-09 17:05
今天下午的《腾讯Elasticsearch海量规模背后的内核优化剖析》分享 大家反映强烈,由于时间关系,大家的问题没能及时答复,这里集中解答,大家如果还有其它疑问也可以持续提问。感谢大家的关注! 另外腾讯云上有内核增强版的ES服务,包含了我们所有的内核优化项,欢迎大家体验! 团队也在持续招聘,欢迎简历来砸:danielhuang@tencent.com; johngqjiang@tencent.com
今天下午的《腾讯Elasticsearch海量规模背后的内核优化剖析》分享 大家反映强烈,由于时间关系,大家的问题没能及时答复,这里集中解答,大家如果还有其它疑问也可以持续提问。感谢大家的关注! 另外腾讯云上有内核增强版的ES服务,包含了我们所有的内核优化项,欢迎大家体验! 团队也在持续招聘,欢迎简历来砸:danielhuang@tencent.com; johngqjiang@tencent.com
【深圳ES Meetup】李猛:DB与ES结合,是业务系统实践值得探讨的事
活动 • nodexy 发表了文章 • 2 个评论 • 3919 次浏览 • 2019-11-09 17:41
【线下活动-分享主题征集-武汉】 2019年3月 Elastic&尚德机构技术沙龙
活动 • medcl 回复了问题 • 3 人关注 • 1 个回复 • 4297 次浏览 • 2019-02-22 15:42
elastic / support-diagnostics诊断工具使用问题
回复开源项目 • 匿名用户 回复了问题 • 2 人关注 • 2 个回复 • 268 次浏览 • 2022-04-07 11:35
elasticsearch根据某个filed对不同index做差集,能否实现
回复Elasticsearch • Charele 回复了问题 • 3 人关注 • 1 个回复 • 343 次浏览 • 2022-04-01 15:44
elasticsearch如何开启access日志
回复Elasticsearch • medcl 回复了问题 • 3 人关注 • 1 个回复 • 410 次浏览 • 2022-03-30 11:42
elasticsearch [[node.max_local_storage_nodes] (was [1])
回复Elasticsearch • yimusidian 回复了问题 • 2 人关注 • 2 个回复 • 433 次浏览 • 2022-03-25 16:07
elasticsearch 分索引后如何快速更新指定数据?
回复Elasticsearch • liujiacheng 回复了问题 • 2 人关注 • 1 个回复 • 343 次浏览 • 2022-03-24 09:41
elasticsearch scroll查询的原理没太懂
回复Elasticsearch • caster_QL 回复了问题 • 12 人关注 • 4 个回复 • 24339 次浏览 • 2022-02-24 15:50
segments的version_map_memory指标具体表示什么
回复Elasticsearch • Charele 回复了问题 • 3 人关注 • 2 个回复 • 587 次浏览 • 2022-02-21 16:43
elasticsearch IllegalArgumentException[Operation term is newer than the current term; current term[2
回复Elasticsearch • locatelli 回复了问题 • 2 人关注 • 1 个回复 • 454 次浏览 • 2022-02-15 11:17
match_phrase_prefix返回结果如何使越靠前的单词占有的权重越高,排序更靠前
回复Elasticsearch • xiaowuge 回复了问题 • 4 人关注 • 3 个回复 • 752 次浏览 • 2022-01-25 09:01
Elasticsearch 技术短视频分享持续更新中.......
Elasticsearch • laoyang360 发表了文章 • 0 个评论 • 127 次浏览 • 2022-05-06 07:14
有了这两个小脚本,不需要再傻乎乎地手动安装 Elasticsearch了
Elasticsearch • spoofer 发表了文章 • 0 个评论 • 659 次浏览 • 2022-03-11 19:40
在学习 ES 前一般都需要安装 ES,虽然 ES 可以开箱即用,但如果要学习分布式特性的时候,需要安装多个节点,这个时候还是有点工作量的。下面提供两个小脚本,一个是在 Ubuntu 中安装 3 节点的 ES 伪集群,一个是在 docker 中安装3节点 ES 集群。除了安装 ES 外,脚本还提供了对应版本的 Kibana、Cerebro 0.9.4 的安装。
1、在 Ubuntu 中安装 ES 7.13
这里我们采取下载 ES 安装包并且解压安装的方式,并没有走 Ubuntu apt 的方式。ES 的安装非常简单,这里先献上安装脚本。
下面介绍比较重要的配置项:
-
discovery.seed_hosts 在开箱即用的情境下(本机环境)无需配置,ES 会自动扫描本机的 9300 到 9305 端口。一旦进行了网络环境配置,这个自动扫描操作就不会执行。discovery.seed_hosts 配置为 master 候选者节点即可。如果需要指定端口的话,其值可以为:["localhost:9300", "localhost:9301"]
-
cluster.initial_master_nodes 指定新集群 master 候选者列表,其值为节点的名字列表。如果配置了 node.name: my_node_1,所以其值为 ["my_node_1"],而不是 ip 列表 !
- network.host 和 http.port 是 ES 提供服务的监听地址和端口,线上一定不能配置 ip 为 0.0.0.0,这是非常危险的行为!!!
怎么样来理解这个 discovery.seed_hosts 和 cluster.initial_master_nodes 呢?
cluster.initial_master_nodes 是候选者列表,一般我们线上环境候选者的数量比较少,毕竟是用来做备用的。而且这个配置只跟选举 master 有关,也就是跟其他类型的节点没有关系。就算你有100个数据节点,然后经常增加或者剔除都不需要动这个列表。
discovery.seed_hosts 这个可以理解为是做服务或者节点发现的,其他节点必须知道他们才能进入集群~ 一般配置为集群的master 候选者的列表。
但是这些 master 候选者(组织联系人)可能经常变化,那怎么办呢?这个配置项除了支持 ip 外还支持域名 ~所以可以用域名来解决这个问题,其他节点的配置上写的是域名,域名解析到对应的 ip,如果机器挂了,新的节点 ip 换了,就把域名解析到新的ip即可,这样其他节点的配就不用修改了。所以非 master 候选节点要配 discovery.seed_hosts (组织联系人)
除了修改 ES 服务配置外,还需要配置 JVM 的配置,我们主要配置服务占用的堆内存的大小。JVM 配置需要以下几点:
- 这两个 jvm 的配置必须配置一样的数值。启动时就分配好内存空间,避免运行时申请分配内存造成系统抖动。
- Xmx不要超过机器内存的 50%,留下些内存供 JVM 堆外内存使用
- 并且Xmx不要超过 32G。建议最大配置为 30G。接近 32G,JVM 会启用压缩对象指针的功能,导致性能下降。具体可以参考:a-heap-of-trouble。
安装成功后,可以访问: ES:localhost:9211
Kibana: localhost:5601
cerebro: localhost:9800
2、在docker 中安装 ES 7.13
在做一切工作之前,我们必须安装 docker。如果你已经安装好了 docker、docker-compose,可以访问我为你准备的 docker-compose.yaml 文件。
如果你没有安装 docker,完整的教程可以参考在 docker 中安装 ES 文档。
下载此文件,将文件保存为 docker-compose.yaml 后,进入这个文件的目录,执行以下指令即可:
docker-compose up
如果你没有下载镜像文件,docker-compose 会自动帮你下载镜像,并且启动容器。
如果 docker-compose 启动失败,说是无权限链接 docker 的话,其报错如下:
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock:
Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json?all=1&filters=%7B%22label%22%3A%7B%22com.docker.compose.project%3Ddocker_es%22%3Atrue%7D%7D&limit=0":
dial unix /var/run/docker.sock: connect: permission denied
可以运行以下指令临时修改:
sudo chmod 666 /var/run/docker.sock
其原因是因为你的 docker 用了 root 启动了。
最后可以访问:
cerebro:ip:9000
Kibana:ip:5601
Elasticsearch: ip:9200,ip:9202,ip:9203
其他学习资料
在 docker image 中安装 Elasticsearch 插件
最后附上我写的小册,欢迎刚入门的朋友来订阅~
熬了几个月的夜,我的ES小册终于发布啦,适合初学者或者有点基础的同学学习~
Elasticsearch • spoofer 发表了文章 • 2 个评论 • 1209 次浏览 • 2022-03-01 12:19
本小册分为 4 个部分,将由浅入深为你介绍 Elasticsearch 7.x 中的核心技术。主要知识点包括基本概念、常用 API 的使用实践、核心特性的底层原理与思想、集群管理与调优、源码阅读等知识。整个小册的思维导图如下:
你会学到什么?
本小册将会从非常浅显的概念开始与你学习 Elasticsearch 7.x 中的常用 API,在熟悉使用 Elasticsearch 后,我们将会对 Elasticsearch 中部分重要的特性、概念的底层实现原理进行介绍。在了解这些原理后,我们将学习如何部署、运维线上小规模集群,并且与你一起搭建一个简单的 ELK 系统。最后我们会搭建源码阅读的环境并且与你一起阅读部分模块的源码。
所以,通过本小册 4 大部分的学习,你可以收获:
- 熟练使用 Elasticsearch 来解决搜索需求;
- 强化 Elasticsearch 集群运维、调优的能力;
- 通晓 Elasticsearch 核心技术的底层实现;
- 牢固掌握源码阅读与调试的技巧。
也就是说,学完本课程后,你不仅可以掌握 ElasticSearch 相关的技术,还可以帮助你根据业务的特点快速构建出相应的搜索业务、数据分析、日志系统。真正实现学以致用。
适宜人群
- 对 Elasticsearch 或搜索引擎感兴趣的同学。
- 有了解和使用过 Elasticsearch,现在想进一步了解 Elasticsearch 的同学。
- 准备从事数据搜索、分析相关工作的同学。
- 从事 Elasticsearch 集群运维的同学。
兼容不同版本的查询响应结果的 Count 结构
Elasticsearch • medcl 发表了文章 • 0 个评论 • 3 次浏览 • 2022-02-21 16:08
Elasticsearch8.0新特性概览
Elasticsearch • liujiacheng 发表了文章 • 1 个评论 • 3077 次浏览 • 2022-02-14 16:30
8.x 重要更新
-
Rest API相比较7.x而言做了比较大的改动(比如彻底删除_type),为了降低用户的升级成本,8.x会暂时的兼容7.x的请求。兼容方式:
REST API compatibility | Elasticsearch Guide [8.0] | Elastic
-
默认开启安全配置(三层安全),并极大简化了开启安全需要的工作量,可以这么说:7.x开启安全需要10步复杂的步骤比如CA、证书签发、yml添加多个配置等等,8.x只需要一步即可)。
elasticsearch-create-enrollment-token | Elasticsearch Guide [8.0] | Elastic
- 存储空间优化:对倒排文件使用新的编码集,对于keyword、match_only_text、text类型字段有效,有3.5%的空间优化提升,对于新建索引和segment自动生效。
- 优化geo_point,geo_shape类型的索引(写入)效率:15%的提升。
-
新特性:支持上传pyTorch模型,在ingest的时候使用。比如在写入电影评论的时候,如果我们想要知道这个评论的感情正负得分,可以使用对应的AI感情模型对评论进行运算,将结果一并保存在ES中。
Overview | Machine Learning in the Elastic Stack [8.0] | Elastic
- 技术预览版KNN API发布,(K邻近算法),跟推荐系统、自然语言排名相关。之前的KNN是精确搜索,在大数据集合的情况会比较慢,新的KNN提供近似KNN搜索,以提高速度。https://www.elastic.co/guide/en/elasticsearch/reference/8.0/knn-search.html
- 对ES内置索引的保护加强了:elastic用户默认只能读,如果需要写权限的时候,需有allow_restrict_access权限。
-
其他更新
Elasticsearch breaking changes | Elastic Installation and Upgrade Guide [8.0] | Elastic
Elasticsearch 与SQL-style Join 前篇
Elasticsearch • liaosy 发表了文章 • 1 个评论 • 591 次浏览 • 2022-01-18 19:27
Elasticsearch 与SQL-style Join 前篇
1.上下文
Elasticsearch(后面简称ES)作为火热的开源&分布式&Json文档形式的搜索引擎在互联网行业被广泛应用. 作为一种NoSQL数据存储服务, ES的侧重点放在了扩展性(Scalability) 与可用性(Availability)上, 提供了极快的搜索与索引文档能力(省略各种对ES的赞美.....就如同你知道的.....主要提供搜索的能力!) 然而, 来自SQL世界的我们, 日常被各种关系性数据充斥着, 使用ES常常疑惑为什么大量MySql中适用的法则在ES中行不通: 不同于SQL的ES DSL语言风格, 搜到/搜不到想要的结果集, 复杂的聚合分析,众多正在不断演进的新功能与永远记不完的APIs....... 本文不会对ES的基本功能作太多的讲解, 侧重放在了对SQL中的join查询与ES提供的join方案的对比与分析上, 基于本人的实践经验, 提供了数种可行的跨索引关联查询方案
本文分为"前篇"与"后篇" ,分别覆盖了不同的ES中实现SQL-style join的技术方案
2.引子
2.1 建议
- 不要用Mysql上的规则去理解一款NoSql DB(Elastic search)
- Join查询与简单的"向多个索引查询数据"并不等价: join查询体现一个"数据关联",后文将重点描述
- 有时候, 为了达到某些效果, 可能意味着"pay some price" (e.g 空间换时间)
2.2 Join查询
开始正文前, 聊聊什么是join查询, join查询在绝大数情况下是SQL中的概念, SQL-style join查询是体现关系型数据库中"关系"的重要方式, 通过驱动表与被驱动表的字段关联, 表与表之间建立了联系方式, 并可以把多个表中的字段值一起返回到结果集:
- 表与表之间有关联性(由连接字段确定)
- 结果集中体现了这种关联性
看到这....或许你会疑惑为什么在解释join查询时反复强调"关联"二字, 相信你应该熟悉SQL中的笛卡尔积现象, 如果不通过连接字段对数据进行筛选, 那么表与表之间连接后产生的"宽表"的数据量会是一个很恐怖的数字(表A行数X表B行数X表C行数.....以此类推), 业务往往需要对产生的结果集进行二次数据筛选, 最后才能从大量的数据中找到少量感兴趣的信息. 而通过指定SQL-style中的join关联关系(e.g table A.字段1 =tableB.字段1)就能在SQL服务中就完成数据筛选, 并且返回的结果集中体现了这种关联性, 降低了业务上筛选相关的工作量.
作为一款 Nosql 且 Schemaless的数据存储, ElasticSearch没有对数据的结构进行强限制, 对客户端而言,返回的结果集都是由弱类型的json对象组成. ES没有像SQL DB那样做到对join查询的友好支持. 但是数据与数据之间的关联在ES中同样非常重要!(或许在任何数据存储服务中都重要). 本文前后篇通过对比讨论 "denormalization(反范式)" , "应用层join", "ES nested query" ,"ES has parent/child query", "ES服务层join(open distro开源生态下)"这些技术的方式(部分将在后篇描述), 探讨join查询在不同环境下的有效解决方案.
3. 方案
3.0 前言: 需解决的问题
如果需要在ES中实现一个SQL:
select * from tablea a join tableb b
on a.field1 =b.field1 order by a.create_time desc
等价查询效果, 并且应用层能通过分页的方式滚动查询到所有数据
3.1 方案一: denormalization(反范式)
这可能是最"直接"的方案了, 通过修改数据模型来“flatten”数据,每个ES文档在被index时就已经有了所需要的全部关联数据.
如果是搭建异构索引场景(可理解为RDS从库), 根据关联关系的不同(1 to N, N to M)索引的文档量最高将会是 2乘以 tablea行数乘以 tableb行数(有点笛卡尔积的感觉). Denormalization通过建立"超级宽"的索引维系了1 to N 或 N to M的关联关系, 应用层与ES不需要做任何join处理, 因为一个文档已经拥有了客户端需要的全部数据(数据层面上已经做到了聚合)
对于平时与关系型数据库打交道的童鞋而言, 建 "超级宽表" 映射的索引与数据冗余可能是一件"非正常"的行为, 第一反应就是数据的冗余与空间资源浪费. 但是这种方案的确是目前广泛使用的建立数据关联关系的解决方案(如同前文说的------不要用Mysql上的规则去理解ES).
3.1.1 优势
- 应用端 & ES端都不需要做任何join操作(一个ES文档有全部客户端想要的数据)
- 分布式环境下因聚合结果集相关操作产生的延迟问题得到有效解决
- 在空间资源足够下, 方案可行性高(至少有信心吼一句"能做到")
3.1.2 挑战
- 数据的冗余与空间资源浪费(空间换时间)
- 如何梳理业务模型与flatten数据: 关系型数据中通过外键,schema约束, 查询语句(join)等方式建立的关联关系要被体现到ES的索引mapping中
- 应用层(访问ES的服务)需要的编码调整(有些工程会在dao层做统一适配处理)
- 更新操作涉及到的数据大幅度增加: 原本一个涉及单表单行update SQL可能会牵扯到多个文档中的某个字段, 且每个文档占用的空间资源更高
- 新增文档的频率会更高: 理由同上
总结: Denormation方案的通用性高, 并且能够满足快速搜索的需求(最快的查询关联数据的方式), 但是额外的存储资源使用带来的相应开销问题与数据模型梳理上的问题会带来挑战
3.2 方案二: ES SQL join(open distro开源生态)
xpack 增加了有限度的SQL支持
然而...不支持join语法....
安装扩展插件获取更强的SQL支持能力(open distro)
LINK
更为强大的SQL支持(包括join语法)
挑战:
- 额外的ES插件(第三方插件对ES不同版本的兼容性?)
- 业务方调整(语句改为SQL-style, 且要使用open distro提供的JDBC相关依赖)
- open distro是一整套ES工具集(AWS上自带集成)
- 对该产品特性的学习LINK
3.3 方案三: 应用层join
通过应用工程对不同索引的多次访问,在组装结果集的过程中建立数据的关联关系
3.3.1 实现方式
可以仿照MySQL的join实现方式: 例如为了实现
select * from tablea a join tableb b
on a.field1 =b.field1 where a.field2 in ('value1','value2','value3') order by a.create_time desc
这句SQL的等效查询
应用层可以:
- 1 选择 tablea 对应的异构索引作为驱动索引, 通过结构化查询, 获取field2 为'value1','value2','value3' 的文档中_id值(N个)
- 2 以文档field1作为连接条件, 从被驱动索引(tableb对应的异构索引)中找到字段field1满足条件( a.field1 =b.field1)的文档
- 3 用获取到的文档拼接结果集返回
如果配合ES terms-lookup 则为:
/**从tablea fetch符合条件的文档集**/
GET tablea/_search
{
"query": {
"terms": {
"field2": [
"value1",
"value2",
"value3"
]
}
}
}
/**假使仅获得一个文档且_id值为6666**/
GET tableb/_search
{
"query": {
"terms": {
"field1": {
"index" : "tablea",
"type" : "_doc",
"id" : "6666",
"path" : "field1"
}
}
}
}
/**利用ES terms-lookup进行连接查询**/
以上查询在应用层可用ES high-level-client实现, 数据的拼接,过滤, 循环查询等挑战都需要在应用层克服(难)
3.3.2 该方案面临几个挑战
- 如果文档数过多(被驱动表/驱动表中任意一张表获取的文档过多) -> 内存,网络等资源占用过高
- 应用层join引发的多次请求
- 应用层join引发的ES服务端压力
- 应用层代码的改动: 驱动表的选择, join的实现, 应用层缓存数据的压力...
- 一套稳定的join机制的实现会很复杂......
4. End
本文分为前篇与后篇, 我会在后篇文章中对这些技术进行进一步描述与对比, 并且引入可实践的方案.
原稿作者:Yukai糖在江湖
原稿链接:https://blog.csdn.net/fanduifandui/article/details/117264084
【年度盛会】Elastic 中国开发者大会 2021 八折购票火热进行中
活动 • liaosy 发表了文章 • 0 个评论 • 476 次浏览 • 2021-12-29 11:06
【1月8日】Elastic 中国开发者大会 2021 日程新鲜出炉!福利票抢先购!
Elasticsearch • liaosy 发表了文章 • 0 个评论 • 489 次浏览 • 2021-12-27 21:46
重要的事情说三遍
- Elastic 中国开发者大会 2021 的精彩日程现已上线!
- Elastic 中国开发者大会 2021 的精彩日程现已上线!
- Elastic 中国开发者大会 2021 的精彩日程现已上线!
关于本次大会
Elastic 中国开发者大会 2021 是由 Elastic 官方、Elastic 中文社区和极限科技联合主办的开发者大会,作为中国国内唯一一个专门讨论 Elasticsearch 开源技术的大会,是中国最权威和最具实力干货的技术大会,其专业性和内容的质量一直以来在业内都是有口皆碑。本次大会邀请的演讲嘉宾有来自 Elastic 官方、Google、腾讯、阿里巴巴、字节跳动、vivo等众多公司的技术专家,为中国广大的 Elasticsearch 开发者提供一个技术交流和学习切磋的地方,汇集业界众多的成功案例,集思广益,发散思维,促进社区和行业的进步。
更多详细介绍请参见大会官网:
关于大会议程
精彩内容不容错过,八折购票火热进行中(折扣码: 80OFF),扫码购买。
发布一个免费的 Elasticsearch 多集群监控和管理平台 - 极限数据平台
Elasticsearch • medcl 发表了文章 • 18 个评论 • 2883 次浏览 • 2021-11-22 18:48
随着单个 Elasticsearch 集群规模的越来越大,大家要么在拆集群的路上,要么是已经是多套集群了, 据路边社消息,一个公司超过5个集群的情况已经变得非常普遍,而管理多个集群着实是有点痛苦,比如常规的玩法可能是一套集群一个 Kibana,集群一多,切换来切换去就有点懵圈了有木有?
作为一个优雅的程序员或者运维管理员,是可忍孰不可忍啊。
另外,多个集群的监控也是一个麻烦事,目前常见的几种监控如:
- 使用 Kibana 自带的监控
- 使用 Prometheus + Grafana
- 使用 Zabbix
Kibana 自带的监控可以很好的满足单个集群的监控场景,不过集群规模大了之后,经常会出现指标丢失的问题,如果使用单独的监控集群,需要修改每个节点的配置,集群都需要重启,对于已经上了生产的集群,有点不方便,另外多集群监控需要商业授权。
那 Prometheus 呢, 一个 Elasticsearch 集群如果要监控起来,首先需要部署一个 Exporter 来暴露集群指标,然后部署一套Prometheus 来采集 Elasticsearch 指标,采集完了之后再部署一套 Grafana 来进行报表分析,不同的集群要做好切换,简单的事情,搞复杂了,整个监控体系偏重,维护成本高。
Zabbix 和 Prometheus 的场景差不多,就不赘述了。
那么问题来了,有没有一个更加简单方便的多集群监控和管理方案呢,并且要支持不同版本的集群,最好是 v2、v5、v6、v7 以及最新的 v8 都能统统接管,哈哈,没错了,这里给大家介绍一个我们极限实验室团队最近开发出来的一款免费的多集群监控和管理工具-极限数据平台,目前版本 v0.1,新鲜出炉。
废话不多少,咱们直接看图说话:
首先是多集群的纳管,目前从 1.0 到最新的 8.0 统统都可以接进来。
然后就是集群的监控拉,要多简单有多简单,就是一个开关的事情,注册集群的时候,启用即开启监控,目标集群啥都不用动,费那劲干啥。
监控界面如图:
集群概览,总体情况一目了然。
各个节点信息,分门别类。
各个索引级别的信息,挨个查看。
多个集群之间的监控查看一键切换,非常方便。
查看监控的时候,发现不对劲,要操作一下集群,直接调出控制台,如下图:
常用的操作命令,可以保存起来,方便下次使用。
别再保存在记事本里面了,下次又找不到,直接加载执行就好了。
好了,你要是用 Elasticsearch 不知道这个工具,那就 out 了,赶快耍起来吧。
下载地址:
http://release.elasticsearch.cn/console/snapshot/
安装巨简单,简直懒得说,一个二进制可执行文件,一个 yml 配置文件,里面修改 Elasticsearch 地址,结束。
可以在这里查看 介绍和 Demo 演示视频
最后,欢迎关注极限实验室,获取更多 Elasticsearch 免费工具及业界资讯的第一手消息。
极限网关入门视频教程已发布
Elasticsearch • medcl 发表了文章 • 4 个评论 • 575 次浏览 • 2021-11-21 11:41
Elastic 中国开发者大会 2021 开启了,预热铁粉票已开抢,手慢无!
活动 • liaosy 发表了文章 • 0 个评论 • 825 次浏览 • 2021-11-11 17:45
给Zblogphp插上Elasticsearch的翅膀
Elasticsearch • 森 发表了文章 • 0 个评论 • 626 次浏览 • 2021-10-11 23:00
通过python脚本迁移ES的template模板
Elasticsearch • 森 发表了文章 • 0 个评论 • 715 次浏览 • 2021-09-30 09:30
通过python脚本迁移ES的template模板
通过python脚本迁移ES的template模板,从192.168.0.1 迁移到 192.168.0.2
import base64
import json
import requests
def putTemplate(templateName, templateDslJson):
print("{0} 索引模板正在迁移中".format(templateName))
res = requests.put("http://192.168.0.2:9200/_template/{0}".format(templateName), json=templateDslJson)
print(res.status_code)
print(res.content)
def getTemplateDslJson():
username = "elastic"
password = "123456"
user_info_str = username + ":" + password
user_info = base64.b64encode(user_info_str.encode()) # 这个得到是个字节类型的数据
headers = {
"Authorization": "Basic {0}".format(user_info.decode()) # 这个就是需要验证的信息
}
url = "http://192.168.0.1:9200/_template/*_template"
res = requests.get(url, headers=headers)
print(res.status_code)
return json.loads(res.content)
if __name__ == '__main__':
jsonTemplate = getTemplateDslJson()
if isinstance(jsonTemplate, dict):
for templateName in jsonTemplate:
templateDslJson = jsonTemplate[templateName]
putTemplate(templateName, templateDslJson)
Elastic日报 第1272期 (2021-07-08)
Elastic日报 • BKing 发表了文章 • 0 个评论 • 678 次浏览 • 2021-07-08 20:18
【杭州站】Elastic & 阿里云 Meetup 6月5号
活动 • liaosy 发表了文章 • 0 个评论 • 1237 次浏览 • 2021-05-22 17:38
活动介绍
本次Meetup杭州站由阿里云和Elastic联合举办,邀请来自滴滴、安恒信息、阿里云的资深技术专家探讨在搜索、安全、内核优化等方向的实践与创新,以及发布由数十位优秀技术开发者共创而成的实战指南,共同分享 Elasticsearch技术大咖的一线经验与深度思考。
报名方式
链接:https://www.bagevent.com/event/7449056
扫码:
活动时间
2021年06月05日 13:00-17:30
活动地址
浙江省杭州市余杭区阿里巴巴西溪园区访客中心 206-S越秀书院
活动流程
13:00~13:15 签到入座
13:15~13:30 开发者共创书籍《Elastic Stack 实战手册V1.0》发布
13:30~14:30 滴滴Elasticsearch内核优化之路
韩宝君 滴滴Elasticsearch资深开发工程师/ES社区Contributor
14:30~15:30 Elasticsearch在SIEM的应用与实践
汤乐奇 安恒信息AiLPHA大数据资深研发经理
15:30~16:30 Elasticsearch Serverless 云原生时代的创新实践
马华标(城破) 阿里巴巴高级技术专家/阿里云ES内核研发负责人
16:30~17:20 圆桌交流
17:20~17:30 抽奖合影
活动奖品
阿里云双肩包、T恤、Elastic定制礼物
阿里云ACE
阿里云ACE即全称 Alibaba Cloud Engineer,是意为阿里云的工程师、代表着云计算的建设者。同时“ACE”又是扑克牌中的“A”,因此阿里云ACE也寓意着是云计算领域王牌的一群人。在线上,ACE拥有专属的页面和29个社群,承载论坛及专栏等内容; 在线下,ACE通过组织丰富的活动,包括技术沙龙、TechDay、Meetup、官方互动等来形成本地化的开发者的学习、社交平台。
通过ACE组织的各种活动,ACE用户可以结识本地的开发者,收获前沿知识,积累行业经验,并加深对阿里云的了解。