elasticsearch - 在NiFi中使用 “ScrollElasticSearchHttp”处理器时出错

标签 elasticsearch apache-nifi

我正在尝试从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日志上,我没有看到每分钟重复的错误日志。

enter image description here

enter image description here

更新:

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

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

最佳答案

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

关于elasticsearch - 在NiFi中使用 “ScrollElasticSearchHttp”处理器时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60079799/

相关文章:

elasticsearch - 为什么Elasticsearch快照统计数字number_of_files与实际索引数不同?

django - 提取数据 “with Elasticsearch dsl”与 “with Django Rest Framework”

elasticsearch - 感觉只在 Kibana 中有效吗?

indexing - Elasticsearch文档删除不会删除所有已添加的内容

elasticsearch - 每次运行Logstash时,Elasticsearch是否对我的Oracle表执行全表扫描?

ubuntu - Nifi 连接 Elasticsearch 时出现错误

apache-nifi - 使用外部文件配置 NiFi 处理器

apache-nifi - 文件名中的 nifi 表达式连接文本

sql-server - 将 SQL 连接到 apache nifi

apache-nifi - Flowfiles 如何分布在集群节点上?