亲,只收二进制

logstash的elasticsearch(filter)和redis(filter)的问题

Elasticsearch | 作者 kuang135 | 发布于2020年12月01日 | 阅读数:1428

业务说明:将数据库表A的数据拿出来放到es中,表A有id和name字段,id不唯一;放到es中,id作为doc的_id,name为一个数据不重复的数组。该如何实现?表A中的数据会不断增加,也会不断被修改,有更新时间的字段。
 
我的思路:
1,用logstash将jdbc导入redis,id作为key,name作为value,value类型为set,这样就不会重复;然后将redis更新到es,但是logstash的redis(input插件),key不能动态指定,只能指定一个key,这样就没法实现了。 
2,用logstash直接导入到es:用logstash的elasticsearch(filter插件)处理,根据id查询出es已经存在的数据,拿到name数组,经过“处理”,和当前的name合并为一个不重复的数组,再更新到es,这个“处理”该怎么实现呢?
 
请问我的上述两种思路能不能解决这个问题,如果能,该怎么做?如果不能,有没有其他方法?多谢
已邀请:

kuang135

赞同来自:

刚刚想到一种处理第2种思路的方法,jdbc(input) ->elasticsearch(filter) -> ruby(filter) -> elasticsearch(output),待会试一下行不行

kuang135

赞同来自:

试了一下,这个思路不行,因为logstash是一部分一部分处理数据,而不是一条一条处理。
jdbc input查询出一部分,里面可能有id重复的数据,filter查询es的时候查不到,这样数据总是会丢失

要回复问题请先登录注册