现在在 es 中,有一个索引 A,我们想对索引 A 中的数据做一些处理,然后把处理过的数据再存到另外一个索引 B 。需要实时进行处理,就是当索引 A 中新增数据的时候,就把新增的数据进行处理,然后存入。由于对 ES 不是很熟悉,请问这种需求有没有好的解决方案吗,求助 ES 大神。
1
MinQ 2020-12-24 11:45:10 +08:00
|
2
sss495088732 2020-12-24 11:45:11 +08:00
在写入之前处理 new_doc->flink->kafka->flink->es1,es2
|
3
MinQ 2020-12-24 11:47:48 +08:00
@sss495088732 我猜他们有可能从文件采集的日志,用的 logstash,可能不知道啥时候写了
|
4
Morriaty 2020-12-24 11:49:20 +08:00
es 有个 issue https://github.com/elastic/elasticsearch/issues/1242,类似于 trigger 或者 binlog 的东西,然鹅这个 issue 已经九年了,还是没有 close......
所以目前最好的方案还是程序端双写 |
5
sss495088732 2020-12-24 12:00:51 +08:00
@MinQ 嗯嗯.用 logstash 就没法这么做了,只能定时操作感觉 0.0
|
6
oneisall8955 2020-12-24 12:34:35 +08:00 via Android
双写觉得要补偿了,默认一定会写成功 A 一定能写成功 B,写不成功 B 就是程序逻辑或 A 数据有问题
|
7
vemier 2020-12-24 12:46:52 +08:00
logstash 也可以设置多个 outputa
|
8
f6x 2020-12-24 12:50:33 +08:00
关键字: transforms
实时将一个 index 处理后存入另一个 index |
9
bringyou 2020-12-24 13:53:41 +08:00
logstash 也可以写入到 kafka
|
10
qfdk 2020-12-24 16:29:14 +08:00 via iPhone
pipline ?
|
11
sniperking1234 OP @f6x 请问这个是 es7 的特性吗
|
12
f6x 2020-12-24 17:49:39 +08:00
不太清楚什么时候加的, 6 就有了.
完全契合你的需求, 不用额外程序 /模块. 不用臃肿的 logstash. 改字段,重解析字段,各种 aggr 都能直接用. 还是 es 内系统级增量刷新. @sniperking1234 |
13
sniperking1234 OP @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 |