Elasticsearch:将关系数据库中的数据提取到 Elasticsearch 集群中
liuxg 发表了文章 • 0 个评论 • 2151 次浏览 • 2022-11-16 09:26
此处提供的代码和方法已经过 MySQL 测试。 他们应该也适用于其他关系数据库。
Logstash Java 数据库连接 (JDBC) 输入插件使你能够从许多流行的关系数据库(包括 MySQL 和 Postgres)中提取数据。 从概念上讲,JDBC 输入插件运行一个循环,该循环定期轮询关系数据库以查找自该循环的最后一次迭代以来插入或修改的记录。
原文链接:https://elasticstack.blog.csdn ... 63743
如何在桶聚合后将桶内元素进行拼接并作为一个新的字段
FFFrp 回复了问题 • 2 人关注 • 1 个回复 • 1991 次浏览 • 2022-11-16 10:26
ES使用了同义词后,检索结果排序总是不准确,如何优化?
qw8613243 回复了问题 • 2 人关注 • 1 个回复 • 2786 次浏览 • 2022-11-12 21:07
如何获取到nested字段值等于keyword字段值的文档
Ombres 回复了问题 • 2 人关注 • 1 个回复 • 1958 次浏览 • 2022-11-03 14:05
统计分片相关的数据量
Ombres 回复了问题 • 2 人关注 • 1 个回复 • 1547 次浏览 • 2022-11-03 13:50
elasticsearch 监控 kibana 和 zabbix 的数据差异比较大
回复ykgarfield 发起了问题 • 1 人关注 • 0 个回复 • 2076 次浏览 • 2022-11-02 11:21
求教如何查询nested子字段值等于keyword类型字段值的文档
Charele 回复了问题 • 2 人关注 • 2 个回复 • 1306 次浏览 • 2022-10-26 15:14
es keyword 数组类型统计
Charele 回复了问题 • 2 人关注 • 1 个回复 • 1273 次浏览 • 2022-10-25 15:22
es的bulk操做,相同的id,可以保证写入数据的顺序性吗?
陈水鱼 回复了问题 • 3 人关注 • 3 个回复 • 3218 次浏览 • 2022-11-11 11:10
ES 如何针对数组类型字段结果进行分页
Charele 回复了问题 • 2 人关注 • 1 个回复 • 1641 次浏览 • 2022-10-19 11:30
elasticsearch角色分离之后,master节点作为协调节点被打挂
Charele 回复了问题 • 3 人关注 • 2 个回复 • 2495 次浏览 • 2022-10-16 19:54
es2.4.1 单节点,java客户端持续提交数据时断断续续的报NoNodeAvailableException
回复lvwendong 发起了问题 • 1 人关注 • 0 个回复 • 2500 次浏览 • 2022-10-10 11:20
ES7.5升级7.17后在写多读少场景下CPU、IO飙升
zmc 发表了文章 • 0 个评论 • 2951 次浏览 • 2022-10-09 19:37
背景
1.ES PAAS管理的集群升级了100+,从7.5升级到7.17 (保证每个大版本最终仅维护一个小版本集群)
2.由于业务使用差异大,也出了不少问题,前面的文章也有提到过Integer类型字段使用terms查询效率低的情况
3.这里再分析一个CPU、IO飙升的场景
现象
1.用户报障:“ES集群写入吞吐量变小了”
2.观察下来发现确实CPU高了,IO也有明显抖动
排查与分析
1.发现YoungGC频率变高了一些,猜测可能是G1GC的问题(我们使用JDK11重新打了ES镜像),经过版本替换,没有明显变化。
参考issue:https://github.com/elastic/ela ... 46169
这可能是另一个场景的case,经过测试,不属于我们的场景。
2.多次执行hot_threads API观察, 发现时不时会出现 update相关函数 消耗的 CPU多。
3.继续使用arthas抓取一段时间的数据,发现是 FST、DocID 读取慢
从图中可以看到Bulk请求执行过程中的getDocID方法占有大量CPU。
4.集群写多读少,使用的是niofs。可知,7.5版本的FST是在堆外,但是_id字段是在堆内。升级到7.17版本后,FST在堆外,该字段也放到了堆外(官方版本应该是7.9就开始放到堆外了)。数据放到堆外,其实也就是文件放到磁盘,读一次之后放到pagecache。
这样也就可以解释了,在upsert类请求多的时候会频繁查询docId,此时如果_id字段没有进入pageCache或者被踢出pageCache,那么就会出现响应慢,并且CPU高、IO高的情况。
5.mmapfs、hybridfs实测是什么情况暂时不明确,目前没有收到搜索类集群CPU、IO方面的报障。
测试验证
将FST、BKD等全部改成放到堆内(开源版需要改造)
可以看到,CPU有显著下降,也相对均衡。(之前蓝色线高,是因为该节点有大量的主分片)
结论
1.update、upsert、get等请求如果十分频繁,_id使用offheap将不会是个好的选择,除非给足够的堆外内存,并且保证尽可能常驻内存。
2.不同的业务场景下使用ES的同一版本也会有不一样的效果。
3.mmapfs、hybridfs在频繁update情况下,实测是什么情况暂时不明确,目前没有收到搜索类集群CPU、IO方面的报障,可能不会有这么明显的差距。(官方描述写入速度仅降低了1.8%)
4.最后吐槽一下,写入不停的情况下,translog的恢复实在是太慢了,由于大分片恢复/rebalance时,translog不会被清理,导致恢复/迁移速度急剧下降...目前各个版本也没什么好的解决方式。