Ist es möglich, Scan & Rolle mit dieser API zu tun?
Ja ist es. Meine Implementierung funktioniert so.
die Scroll-Suche auf Elasticsearch Start:
public SearchResult startScrollSearch (String type, Long size) throws IOException {
String query = ConfigurationFactory.loadElasticScript("my_es_search_script.json");
Search search = new Search.Builder(query)
// multiple index or types can be added.
.addIndex("myIndex")
.addType(type)
.setParameter(Parameters.SIZE, size)
.setParameter(Parameters.SCROLL, "1m")
.build();
SearchResult searchResult = EsClientConn.getJestClient().execute(search);
return searchResult;
}
Search Objekt wird die erste (Größe) zurückzukehren itens die Suche wie gewohnt aus, aber zu einem scrollId Parameter zurück, der eine Referenz ist resultSet zu bleiben, dass Elasticsearch hält im Gedächtnis für dich. Parameter.SCROLL definiert die Zeit, für die diese Suche im Speicher gehalten wird.
Zum Lesen der scrollId:
scrollId = searchResult.getJsonObject().get("_scroll_id").getAsString();
Weitere itens vom resultSet lesen Sie so etwas wie Follow verwenden sollten:
public JestResult readMoreFromSearch(String scrollId, Long size) throws IOException {
SearchScroll scroll = new SearchScroll.Builder(scrollId, "1m")
.setParameter(Parameters.SIZE, size).build();
JestResult searchResult = EsClientConn.getJestClient().execute(scroll);
return searchResult;
}
Vergessen Sie nicht, dass jedes Mal, wenn Sie aus der Ergebnismenge gelesen Eine neue scrollId wird von elastic zurückgegeben.
Bitte sagen Sie mir, wenn Sie irgendwelche Zweifel haben.
Danke für die Rückmeldung.Stuck mit http für diese Anwendung. –
Ich sehe, ich verstehe. Entschuldigung, ich könnte nicht mehr Hilfe sein! – RustyBuckets