Github user mattyb149 commented on a diff in the pull request:
https://github.com/apache/nifi/pull/2601#discussion_r182498324
--- Diff:
nifi-nar-bundles/nifi-elasticsearch-bundle/nifi-elasticsearch-processors/src/main/java/org/apache/nifi/processors/elasticsearch/QueryElasticsearchHttp.java
---
@@ -352,6 +414,15 @@ private int getPage(final Response getResponse, final
URL url, final ProcessCont
JsonNode responseJson = parseJsonResponse(new
ByteArrayInputStream(bodyBytes));
JsonNode hits = responseJson.get("hits").get("hits");
+ if ( (hits.size() == 0 && queryInfoRouteStrategy ==
QueryInfoRouteStrategy.NOHIT)
--- End diff --
This part doesn't quite work, not necessarily due to a logic error here,
but it needs to be addressed either here or in the onTrigger do-while loop. If
I don't set a limit and I set my page size to 20, then fetch all results (I
have 100), then I get a flow file on the query-info connection. This is because
the hitLimit variable is never set as the limit variable is always null, so we
attempt to get all records starting from index 100, and zero are returned.
However this code checks that hits.size() is zero (which it is the last time).
No documents are output of course (due to the for-loop below), but the
query-info flow file is sent. Perhaps this method needs to know the current
total number of hits?
---