I'm using Elasticsearch 1.5.2, and after doing a search that specifies a sort order; when I run the generated JSON (as copied from the Java objects), the results appear in the desired sorted order.
However, when I extract search results as below, the results aren't in the same order.
Unless I'm doing something wrong here, I expect that this version of Elasticsearch perhaps is using a non-ordered Collection to store the search hits, causing this to happen. Does anyone know if this is the case, and if there's a workaround?
Incidentally, I have the source jar for this version of Elasticsearch, but for some reason the com.elasticsearch.search subpackage is not included in that source jar...
-
Tim
// Run the query SearchResponse response = builder.execute().actionGet(); // Scroll until no hits are returned List<Map<String, Object>> resultsList = new ArrayList<Map<String, Object>>(); boolean done = false; while (!done) { response = getClient().prepareSearchScroll(response.getScrollId()).setScroll(TimeValue.timeValueMinutes(1)) .execute().actionGet(); for (SearchHit searchHit : response.getHits().getHits()) { Map<String, SearchHitField> fields = searchHit.getFields(); Map<String, Object> document = new HashMap<String, Object>(); for (Map.Entry<String, SearchHitField> entry : fields.entrySet()) { String name = entry.getKey(); SearchHitField hitValue = entry.getValue(); document.put(name, getSearchHitFieldValue(name, hitValue)); } resultsList.add(document); } done = (response.getHits().getHits().length == 0); }