我正在尝试解决一项任务,我将不胜感激任何帮助 - 文档链接、论坛链接或除 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/