E 'possibile fare la scansione & scorrimento con questa API?
Sì, lo è. La mia implementazione funziona così.
avvia la ricerca di scorrimento sul elasticsearch:
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;
}
oggetto SearchResult restituirà il primo (dimensione) itens fuori la ricerca, come al solito, ma tornerà ad un parametro scrollId che è un riferimento a rimanere resultSet che elasticsearch ti tiene in memoria. Parameters.SCROLL, definirà il tempo in cui questa ricerca verrà mantenuta in memoria.
Per leggere lo scrollId:
scrollId = searchResult.getJsonObject().get("_scroll_id").getAsString();
Per saperne di più itens dal resultSet si dovrebbe usare qualcosa come segue:
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;
}
Non dimenticate che ogni volta che si legge dal set di risultati un nuovo scrollId viene restituito dall'elastico.
Per favore dimmi se hai qualche dubbio.
fonte
2016-01-13 12:13:06
Grazie per il feedback.Bloccato tramite http per questa applicazione. –
Vedo, vedo. Scusa, non potrei essere più di aiuto! – RustyBuckets