结束目标:连接Elasticsearch和kafka,并将ES索引中正在进行的更改事件发送到kafka。来自kafka,我让听众做进一步的处理。
方法:我使用了Logstash输入和输出插件。这是配置代码。
input {
elasticsearch {
hosts => ["localhost:9200"]
index => "liferay-20116"
}
}
output {
kafka {
topic_id => "elastic-topic-index"
codec => json
}
}
它正在运作,但有一个奇怪的问题。
当我听kafka时,它会读取ES中的所有文档,现在大约有176个文档。
一旦读取,它停止一段时间说2秒,然后再读完整个176个文档!
我不知道是什么问题,这是由于Logstash行为还是Kafka表现得很奇怪?
任何帮助将不胜感激!
答案 0 :(得分:1)
这是此插件的标准行为 - 它将数据匹配推送到给定查询。如果您只想更改文档,唯一的解决方法是建立自己改变的知识 - 例如,您需要为条目设置时间戳,然后将此知识合并到发送给ES的查询中。
答案 1 :(得分:1)
我确实没有使用Logstash。
我正在使用ElasticSearch插件,它会在每次更改时将事件发送为Web套接字。
参考:https://codeforgeek.com/2017/10/elasticsearch-change-feed/