Apache Nifi PutElasticsearch可以永远等待填充批量大小?

时间:2017-06-06 06:31:18

标签: apache elasticsearch apache-nifi

我正在尝试使用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上执行相同的功能

1 个答案:

答案 0 :(得分:3)

根据代码,batch size参数是来自传入队列的最大FlowFiles数。

例如,如果值为batch size = 1000

1 /如果传入队列包含1001个流文件 - 在一个事务中只需要1000个。

2 /如果传入队列包含999个流文件 - 将在一个事务中获取999个。

一旦传入队列中有内容并且nifi中有可用的线程,一切都将被处理。

的引用:

PutElasticsearch.java

ProcessSession.java