DATAES-167 - Add scan method for CriteriaQuery.
This commit is contained in:
committed by
Artur Konczak
parent
c9ffc4417a
commit
576495932e
@@ -647,8 +647,39 @@ public class ElasticsearchTemplateTests {
|
||||
assertThat(sampleEntities.getContent(), hasItem(sampleEntity));
|
||||
}
|
||||
|
||||
/*
|
||||
DATAES-167
|
||||
*/
|
||||
@Test
|
||||
public void shouldReturnResultsWithScanAndScroll() {
|
||||
public void shouldReturnResultsWithScanAndScrollForGivenCriteriaQuery() {
|
||||
//given
|
||||
List<IndexQuery> entities = createSampleEntitiesWithMessage("Test message", 30);
|
||||
// when
|
||||
elasticsearchTemplate.bulkIndex(entities);
|
||||
elasticsearchTemplate.refresh(SampleEntity.class, true);
|
||||
// then
|
||||
|
||||
CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria());
|
||||
criteriaQuery.addIndices(INDEX_NAME);
|
||||
criteriaQuery.addTypes(TYPE_NAME);
|
||||
criteriaQuery.setPageable(new PageRequest(0, 10));
|
||||
|
||||
String scrollId = elasticsearchTemplate.scan(criteriaQuery, 1000, false);
|
||||
List<SampleEntity> sampleEntities = new ArrayList<SampleEntity>();
|
||||
boolean hasRecords = true;
|
||||
while (hasRecords) {
|
||||
Page<SampleEntity> page = elasticsearchTemplate.scroll(scrollId, 5000L, SampleEntity.class);
|
||||
if (page.hasContent()) {
|
||||
sampleEntities.addAll(page.getContent());
|
||||
} else {
|
||||
hasRecords = false;
|
||||
}
|
||||
}
|
||||
assertThat(sampleEntities.size(), is(equalTo(30)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldReturnResultsWithScanAndScrollForGivenSearchQuery() {
|
||||
//given
|
||||
List<IndexQuery> entities = createSampleEntitiesWithMessage("Test message", 30);
|
||||
// when
|
||||
@@ -673,11 +704,60 @@ public class ElasticsearchTemplateTests {
|
||||
assertThat(sampleEntities.size(), is(equalTo(30)));
|
||||
}
|
||||
|
||||
/*
|
||||
DATAES-167
|
||||
*/
|
||||
@Test
|
||||
public void shouldReturnResultsWithScanAndScrollForSpecifiedFieldsForCriteriaCriteria() {
|
||||
//given
|
||||
List<IndexQuery> entities = createSampleEntitiesWithMessage("Test message", 30);
|
||||
// when
|
||||
elasticsearchTemplate.bulkIndex(entities);
|
||||
elasticsearchTemplate.refresh(SampleEntity.class, true);
|
||||
// then
|
||||
|
||||
CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria());
|
||||
criteriaQuery.addIndices(INDEX_NAME);
|
||||
criteriaQuery.addTypes(TYPE_NAME);
|
||||
criteriaQuery.addFields("message");
|
||||
criteriaQuery.setPageable(new PageRequest(0, 10));
|
||||
|
||||
String scrollId = elasticsearchTemplate.scan(criteriaQuery, 5000, false);
|
||||
List<SampleEntity> sampleEntities = new ArrayList<SampleEntity>();
|
||||
boolean hasRecords = true;
|
||||
while (hasRecords) {
|
||||
Page<SampleEntity> page = elasticsearchTemplate.scroll(scrollId, 5000L, new SearchResultMapper() {
|
||||
@Override
|
||||
public <T> FacetedPage<T> mapResults(SearchResponse response, Class<T> clazz, Pageable pageable) {
|
||||
List<SampleEntity> result = new ArrayList<SampleEntity>();
|
||||
for (SearchHit searchHit : response.getHits()) {
|
||||
String message = searchHit.getFields().get("message").getValue();
|
||||
SampleEntity sampleEntity = new SampleEntity();
|
||||
sampleEntity.setId(searchHit.getId());
|
||||
sampleEntity.setMessage(message);
|
||||
result.add(sampleEntity);
|
||||
}
|
||||
|
||||
if (result.size() > 0) {
|
||||
return new FacetedPageImpl<T>((List<T>) result);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
});
|
||||
if (page != null) {
|
||||
sampleEntities.addAll(page.getContent());
|
||||
} else {
|
||||
hasRecords = false;
|
||||
}
|
||||
}
|
||||
assertThat(sampleEntities.size(), is(equalTo(30)));
|
||||
}
|
||||
|
||||
/*
|
||||
DATAES-84
|
||||
*/
|
||||
@Test
|
||||
public void shouldReturnResultsWithScanAndScrollForSpecifiedFields() {
|
||||
public void shouldReturnResultsWithScanAndScrollForSpecifiedFieldsForSearchCriteria() {
|
||||
//given
|
||||
List<IndexQuery> entities = createSampleEntitiesWithMessage("Test message", 30);
|
||||
// when
|
||||
@@ -723,8 +803,57 @@ public class ElasticsearchTemplateTests {
|
||||
assertThat(sampleEntities.size(), is(equalTo(30)));
|
||||
}
|
||||
|
||||
/*
|
||||
DATAES-167
|
||||
*/
|
||||
@Test
|
||||
public void shouldReturnResultsForScanAndScrollWithCustomResultMapper() {
|
||||
public void shouldReturnResultsForScanAndScrollWithCustomResultMapperForGivenCriteriaQuery() {
|
||||
//given
|
||||
List<IndexQuery> entities = createSampleEntitiesWithMessage("Test message", 30);
|
||||
// when
|
||||
elasticsearchTemplate.bulkIndex(entities);
|
||||
elasticsearchTemplate.refresh(SampleEntity.class, true);
|
||||
// then
|
||||
|
||||
CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria());
|
||||
criteriaQuery.addIndices(INDEX_NAME);
|
||||
criteriaQuery.addTypes(TYPE_NAME);
|
||||
criteriaQuery.setPageable(new PageRequest(0, 10));
|
||||
|
||||
String scrollId = elasticsearchTemplate.scan(criteriaQuery, 1000, false);
|
||||
List<SampleEntity> sampleEntities = new ArrayList<SampleEntity>();
|
||||
boolean hasRecords = true;
|
||||
while (hasRecords) {
|
||||
Page<SampleEntity> page = elasticsearchTemplate.scroll(scrollId, 5000L, new SearchResultMapper() {
|
||||
@Override
|
||||
public <T> FacetedPage<T> mapResults(SearchResponse response, Class<T> clazz, Pageable pageable) {
|
||||
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);
|
||||
}
|
||||
if (chunk.size() > 0) {
|
||||
return new FacetedPageImpl<T>((List<T>) chunk);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
});
|
||||
if (page != null) {
|
||||
sampleEntities.addAll(page.getContent());
|
||||
} else {
|
||||
hasRecords = false;
|
||||
}
|
||||
}
|
||||
assertThat(sampleEntities.size(), is(equalTo(30)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldReturnResultsForScanAndScrollWithCustomResultMapperForGivenSearchQuery() {
|
||||
//given
|
||||
List<IndexQuery> entities = createSampleEntitiesWithMessage("Test message", 30);
|
||||
// when
|
||||
|
||||
Reference in New Issue
Block a user