【问题标题】:Error working with "ScrollElasticSearchHttp" processor in NiFi在 NiFi 中使用“ScrollElasticSearchHttp”处理器时出错
【发布时间】:2020-07-24 14:19:24
【问题描述】:

我正在尝试从 ElasticSearch 中的索引中检索数据。我配置了“QueryElasticSearchHttp”处理器,它工作得很好。但是,当我尝试使用具有相同 URL、查询、索引属性的 ScrollElasticsearchHttp 处理器并将“滚动”设置为默认 1 分钟时,它不起作用。

我收到 404 错误响应:“Elasticsearch 返回代码 404 和消息未找到”。 我也在跟踪 ES 集群上的日志,我看到了这个错误;

[DEBUG][o.e.a.s.TransportSearchScrollAction] [2] Failed to execute query phase
org.elasticsearch.transport.RemoteTransportException:[127.0.0.1:9300][indices:data/read/search[phase/query+fetch/scroll]]
Caused by: org.elasticsearch.search.SearchContextMissingException: No search context found for id [2]
at org.elasticsearch.search.SearchService.getExecutor(SearchService.java:457) ~[elasticsearch-7.5.2.jar:7.5.2]

我使用的是 Apache NiFi 1.10.0

这是处理器的配置: 我应该看到总共 441 次点击,并且页面大小为 20,我应该看到对 ES 进行了 23 次查询。 但我没有得到任何结果。我为“滚动”尝试了更高的值,也尝试了“页面大小”但无济于事。

我还注意到,即使 ScrollElasticsearchHttp 处理器设置为每 1m 运行一次,但在 ES 日志中我看不到每分钟重复的任何错误日志。

更新:

当我通过 UI 清除状态时:“查看状态”->“清除状态”,我能够进行一次调用,在一个流文件中返回一个充满点击的页面。 但是,还有更多页面需要检索。如何让处理器去获取下一页?

我的理解是 ScrollElasticsearchHttp 的单次调用将遍历所有结果集并将每个页面作为一个流文件引入。这不正确吗?

【问题讨论】:

    标签: elasticsearch apache-nifi


    【解决方案1】:

    请将调度时间减少到 10-20 秒左右。因此,每 10-20 秒,处理器将根据您的页面大小获取下一组记录。 您可以在获取过程正在进行时检查状态值,即您会在其中找到滚动 ID。获取过程完成后,状态值将更改为“finishedQuery”:true。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多