我正在尝试使用apache-nifi.putElasticSearch处理器将流数据写入elasticsearch,
PutElasticSearch具有名为" Batch Size"的属性,当我将此值设置为1时,所有事件都将尽快写入elasticsearch。
但如此低的批量大小"当负载很高时,显然不能工作。因此,为了获得合理的吞吐量,我需要将其设置为1000.
我的问题是,PutElasticSearch是否会等到事件的批量大小可用。如果是的话,当有999个事件等待处理器时,它可以等待数小时。
我正在搜索logstash如何在elasticsearch输出插件上执行相同的工作。可能会有一些基于时间实现的刷新逻辑(如果事件正在等待~2秒刷新事件到elasticsearch)..
你有什么想法吗?
编辑:我刚发现logstash实现了此https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html#plugins-outputs-elasticsearch-idle_flush_time:)
如何在nifi上执行相同的功能
答案 0 :(得分:3)
根据代码,batch size
参数是来自传入队列的最大FlowFiles数。
例如,如果值为batch size = 1000
:
1 /如果传入队列包含1001个流文件 - 在一个事务中只需要1000个。
2 /如果传入队列包含999个流文件 - 将在一个事务中获取999个。
一旦传入队列中有内容并且nifi中有可用的线程,一切都将被处理。
的引用: