elasticsearch - 将 NiFi 连接到 ElasticSearch

标签 elasticsearch apache-nifi processors

我正在尝试解决一项任务,我将不胜感激任何帮助 - 文档链接、论坛链接或除 https://cwiki.apache.org/confluence/display/NIFI/FAQs 之外的其他常见问题解答。 ,或这篇文章中任何有意义的答案 =) 。

所以,我有以下任务: 我系统的初始部分每 5-15 分钟从不同的数据库源收集数据。然后我删除重复项,删除垃圾,根据逻辑组合来自不同来源的数据,然后将其作为多个流重定向到系统的第二部分。 据我所知,“NiFi”可以以最好的方式完成这项任务=)。

目前我可以通过“GetHTTP”处理器成功地从 InfluxDB 获取信息。但是,我无法配置相同类型的处理器来使用所有必要选项从 Elastic DB 获取信息。我想在从“现在-<5-15 分钟>”到“现在”的时间段内每 5-15 分钟接收一次数据。 (取决于调度程序周期)和几个额外的过滤器。如果我理解正确,这可以通过订阅“_index”或按所需间隔定期请求数据库来实现。

我知道 NiFi 有几个专门为 Elasticsearch 设计的处理器(FetchElasticsearch5、FetchElasticsearchHttp、QueryElasticsearchHttp、ScrollElasticsearchHttp)以及 GetHTTP 和 PostHTTP 处理器。然而,不幸的是,我缺乏信息或什至更好 - 示例 - 如何为我的目的配置他们的“属性”=(。

FetchElasticsearchHttp 和 QueryElasticsearchHttp 有什么区别?哪一个更适合我的任务? GetHTTP 和 QueryElasticsearchHttp 除了几个特定字段外还有什么区别?如果我根据需要调整 GetHTTP,它会以相同的方式执行吗?

有什么建议吗?

如有任何帮助,我将不胜感激。

最佳答案

ElasticsearchHttp 处理器试图通过根据您设置的属性生成适当的 REST API 调用来简化与 ES 的交互。如果您知道所需的完整 URL,则可以使用 GetHttp 或 InvokeHttp。然而,ESHttp 处理器让您只输入您要查找的内容,它会生成 URL 并返回结果。

FetchElasticsearch (及其变体)用于在您知道标识符时获取特定文档。这有时在搜索/查询之后使用,以便在您知道需要哪些文档后一次返回一个文档。

QueryElasticsearchHttp适用于当您想对文档进行 Lucene 样式的查询时,当您不一定知道需要哪些文档时。它只会返回 index.max_result_window 的值。对于那个指数。要获取更多记录,您可以使用 ScrollElasticsearchHttp然后。 注意:QueryElasticsearchHttp 需要一个查询作为 URL 的“q”参数。这种“迷你语言”不支持所有字段/运算符(有关详细信息,请参阅 here)。

对于您的用例,您可能需要 InvokeHttp为了发出您描述的那种查询。 This article描述如何发出最近 15 分钟的查询。返回结果后,您可能需要 EvaluateJsonPath 的某种组合和/或 SplitJson要使用各个文档,请参阅 Elasticsearch REST API 文档(和 NiFi 处理器文档)了解更多详细信息。

关于elasticsearch - 将 NiFi 连接到 ElasticSearch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43806694/

相关文章:

elasticsearch - Elasticsearch,计算不包括的术语

google-cloud-platform - 在 ExecuteScript 中使用 Controller 服务

java - Apache Nifi SOCKS 代理设置

c++ - 在 Windows 下使用 C++ 计算处理器

ruby-on-rails - 当我执行 update_all() 时,轮胎(elasticsearch)没有更新

sorting - 是否可以在 Elasticsearch 中按范围排序?

linux - 保护指令免于在 Linux 的用户模式下使用它

assembly - 不同类型处理器的汇编语言有何不同?

elasticsearch - ES 可从 curl 访问但不能从 Marvel/Sense 访问

java - 两个 Java 异常,但对 Linux 上的 Java 来说是新的。通过 Apache 使用 NiFi