diff --git a/src/docbkx/reference/data-elasticsearch.xml b/src/docbkx/reference/data-elasticsearch.xml index dfc84eb91..88b48dbc1 100644 --- a/src/docbkx/reference/data-elasticsearch.xml +++ b/src/docbkx/reference/data-elasticsearch.xml @@ -448,24 +448,8 @@ public void setRepository(ProductRepository repository) { } - - - - - - - - - - - - - - - - - - - + + + \ No newline at end of file diff --git a/src/docbkx/reference/elasticsearch-misc.xml b/src/docbkx/reference/elasticsearch-misc.xml index a152b78d6..44c6257c7 100644 --- a/src/docbkx/reference/elasticsearch-misc.xml +++ b/src/docbkx/reference/elasticsearch-misc.xml @@ -30,4 +30,53 @@ Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(sea +
+ Using Scan And Scroll For Big Result Set + + Elasticsearch has scan and scroll feature for getting big result set in chunks. + ElasticsearchTemplate + has scan and scroll methods that can be used as below. + + + + Using Scan and Scroll + + + SearchQuery searchQuery = new SearchQuery(); + searchQuery.addIndices("test-index"); + searchQuery.addTypes("test-type"); + searchQuery.setElasticsearchQuery(matchAllQuery()); + searchQuery.setPageable(new PageRequest(0,1)); + String scrollId = elasticsearchTemplate.scan(searchQuery,1000,false); + List<SampleEntity> sampleEntities = new ArrayList<SampleEntity>(); + boolean hasRecords = true; + while (hasRecords){ + Page<SampleEntity> page = elasticsearchTemplate.scroll(scrollId, 5000L , new ResultsMapper<SampleEntity>() { + @Override + public Page<SampleEntity> mapResults(SearchResponse response) { + List<SampleEntity> chunk = new ArrayList<SampleEntity>(); + for(SearchHit searchHit : response.getHits()){ + if(response.getHits().getHits().length <= 0) { + return null; + } + SampleEntity user = new SampleEntity(); + user.setId(searchHit.getId()); + user.setMessage((String)searchHit.getSource().get("message")); + chunk.add(user); + } + return new PageImpl<SampleEntity>(chunk); + } + + }); + if(page != null) { + sampleEntities.addAll(page.getContent()); + hasRecords = page.hasNextPage(); + } + else{ + hasRecords = false; + } + } + } + +
\ No newline at end of file