想要实时的处理 es 中一个索引里面的数据,然后存入另外一个索引,有什么好的解决方案

2020-12-24 11:38:26 +08:00
 sniperking1234

现在在 es 中,有一个索引 A,我们想对索引 A 中的数据做一些处理,然后把处理过的数据再存到另外一个索引 B 。需要实时进行处理,就是当索引 A 中新增数据的时候,就把新增的数据进行处理,然后存入。由于对 ES 不是很熟悉,请问这种需求有没有好的解决方案吗,求助 ES 大神。

1796 次点击
所在节点    程序员
13 条回复
MinQ
2020-12-24 11:45:10 +08:00
sss495088732
2020-12-24 11:45:11 +08:00
在写入之前处理 new_doc->flink->kafka->flink->es1,es2
MinQ
2020-12-24 11:47:48 +08:00
@sss495088732 我猜他们有可能从文件采集的日志,用的 logstash,可能不知道啥时候写了
Morriaty
2020-12-24 11:49:20 +08:00
es 有个 issue https://github.com/elastic/elasticsearch/issues/1242,类似于 trigger 或者 binlog 的东西,然鹅这个 issue 已经九年了,还是没有 close......

所以目前最好的方案还是程序端双写
sss495088732
2020-12-24 12:00:51 +08:00
@MinQ 嗯嗯.用 logstash 就没法这么做了,只能定时操作感觉 0.0
oneisall8955
2020-12-24 12:34:35 +08:00
双写觉得要补偿了,默认一定会写成功 A 一定能写成功 B,写不成功 B 就是程序逻辑或 A 数据有问题
vemier
2020-12-24 12:46:52 +08:00
logstash 也可以设置多个 outputa
f6x
2020-12-24 12:50:33 +08:00
关键字: transforms
实时将一个 index 处理后存入另一个 index
bringyou
2020-12-24 13:53:41 +08:00
logstash 也可以写入到 kafka
qfdk
2020-12-24 16:29:14 +08:00
pipline ?
sniperking1234
2020-12-24 17:10:40 +08:00
@f6x 请问这个是 es7 的特性吗
f6x
2020-12-24 17:49:39 +08:00
不太清楚什么时候加的, 6 就有了.
完全契合你的需求, 不用额外程序 /模块. 不用臃肿的 logstash.
改字段,重解析字段,各种 aggr 都能直接用.
还是 es 内系统级增量刷新.

@sniperking1234
sniperking1234
2020-12-24 19:17:21 +08:00
@f6x 我找了下文档,好像 es6 中的 transform 和 es7 里面的不一样,es7 中的 transform 是符合我的需求的。是这两个 transform 的确不一样还是我理解上出了问题
https://www.elastic.co/guide/en/elasticsearch/reference/6.8/transform.html
https://www.elastic.co/guide/en/elasticsearch/reference/7.x/transforms.html

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/738529

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX