使用NiFi来提取Elasticsearch索引

时间:2017-11-20 19:12:07

标签: elasticsearch apache-nifi

我正在使用NiFi(最近转向它,它似乎符合我的需要)。我们最近建立了一个Spark / Hadoop集群,并且已经使用Elasticsearch大约2年了。我的目标是将Elasticsearch中的特定索引转换为HDFS(特别是syslog)。我正在进行异常检测的机器学习项目,但是想要从HDFS处理数据以加快速度。

所以,一点背景 - 我们的syslog索引每天都不同(logstash-syslog-2017-11-20,等等)。我只需要来自syslog的消息,所以基本上我想做的是:

ES -> NiFi -> Parse JSON to give me back text -> write each message to its own line in a text file. 

最后,在我的HDFS中,我有每个索引(日)的消息文本文件,例如:

syslog-2017-11-19
syslog-2017-11-20
syslog-2017-11-21

等等....

我对几件事感到难过:

  1. 构建此组件需要哪些组件?我看到有GenerateFlowFile,我认为我需要使索引名称动态化。

  2. 由于我想要提取整个索引,我想我需要使用" ScrollElasticSearchHttp",但我不确定。还有其他选择,但我不知道什么是最好的。使用PySpark时,我使用ES-Hadoop连接器进行简单查询以获取整个索引,但必须将滚动大小增加到10k,以使其运行更快。只是对我应该使用的处理器感到困惑。

  3. 如果有人能够让我知道这个(什么处理器,连接器等)的结构我需要从syslog从ES到我的HDFS获取消息的索引,这将是很好的。还在学习这个,所以请原谅我对此的无知。非常感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

还有ListenBeats处理器。您可以将Logstash重定向到NiFi,Nifi可以写入EL和HDF。这将使NiFi成为您的关键路径。

也有可能编写自己的处理器,你可以很容易地做到这一点。只需关注this article

即可

我最近也找到了Nifi,我觉得很棒。玩了一下,因此我不是专家。

答案 1 :(得分:0)

我要发表我的第一条评论作为答案,因为那才是我的解决方案。

根据我上面的评论,我最终使用了ScrollElasticsearchHttp处理器,看来我的某些选项格式不正确。一旦获得正确的格式,它就会起作用。我希望NiFi文档提供更多示例/显式示例,以显示格式并将其与ES-Hadoop格式化选项的方式区分开。无论如何,现在一切正常。我有兴趣研究编写自己的处理器-是否为此提供指南或其他内容?