mirror of
https://github.com/spring-projects/spring-data-elasticsearch.git
synced 2025-06-29 15:22:11 +00:00
reverted changes for auto-generated Id , added test cases for scan and scroll
This commit is contained in:
parent
41de820c70
commit
e433ec2d9e
@ -388,15 +388,8 @@ public class ElasticsearchTemplate implements ElasticsearchOperations {
|
|||||||
String type = isBlank(query.getType())?
|
String type = isBlank(query.getType())?
|
||||||
retrieveTypeFromPersistentEntity(query.getObject().getClass())[0] : query.getType();
|
retrieveTypeFromPersistentEntity(query.getObject().getClass())[0] : query.getType();
|
||||||
|
|
||||||
IndexRequestBuilder indexRequestBuilder = null;
|
IndexRequestBuilder indexRequestBuilder = client.prepareIndex(indexName,type,query.getId())
|
||||||
|
.setSource(objectMapper.writeValueAsString(query.getObject()));
|
||||||
if(query.getId() != null){
|
|
||||||
indexRequestBuilder = client.prepareIndex(indexName,type,query.getId());
|
|
||||||
}else {
|
|
||||||
indexRequestBuilder = client.prepareIndex(indexName,type);
|
|
||||||
}
|
|
||||||
|
|
||||||
indexRequestBuilder.setSource(objectMapper.writeValueAsString(query.getObject()));
|
|
||||||
|
|
||||||
if(query.getVersion() != null){
|
if(query.getVersion() != null){
|
||||||
indexRequestBuilder.setVersion(query.getVersion());
|
indexRequestBuilder.setVersion(query.getVersion());
|
||||||
|
@ -58,13 +58,10 @@ public class MappingElasticsearchEntityInformation<T, ID extends Serializable> e
|
|||||||
public ID getId(T entity) {
|
public ID getId(T entity) {
|
||||||
ElasticsearchPersistentProperty id = entityMetadata.getIdProperty();
|
ElasticsearchPersistentProperty id = entityMetadata.getIdProperty();
|
||||||
try {
|
try {
|
||||||
if(id != null){
|
|
||||||
return (ID) BeanWrapper.create(entity, null).getProperty(id);
|
return (ID) BeanWrapper.create(entity, null).getProperty(id);
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new IllegalStateException("ID could not be resolved", e);
|
throw new IllegalStateException("ID could not be resolved", e);
|
||||||
}
|
}
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
|
@ -540,4 +540,76 @@ public class ElasticsearchTemplateTest {
|
|||||||
assertThat(sampleEntities.getTotalElements(), is(equalTo(1L)));
|
assertThat(sampleEntities.getTotalElements(), is(equalTo(1L)));
|
||||||
assertThat(sampleEntities.getContent(), hasItem(sampleEntity1));
|
assertThat(sampleEntities.getContent(), hasItem(sampleEntity1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void shouldReturnResultsWithScanAndScroll(){
|
||||||
|
//given
|
||||||
|
List<IndexQuery> indexQueries = new ArrayList<IndexQuery>();
|
||||||
|
//first document
|
||||||
|
String documentId = randomNumeric(5);
|
||||||
|
SampleEntity sampleEntity1 = new SampleEntity();
|
||||||
|
sampleEntity1.setId(documentId);
|
||||||
|
sampleEntity1.setMessage("some message");
|
||||||
|
sampleEntity1.setVersion(System.currentTimeMillis());
|
||||||
|
|
||||||
|
IndexQuery indexQuery1 = new IndexQuery();
|
||||||
|
indexQuery1.setId(documentId);
|
||||||
|
indexQuery1.setObject(sampleEntity1);
|
||||||
|
indexQueries.add(indexQuery1);
|
||||||
|
|
||||||
|
//second document
|
||||||
|
String documentId2 = randomNumeric(5);
|
||||||
|
SampleEntity sampleEntity2 = new SampleEntity();
|
||||||
|
sampleEntity2.setId(documentId2);
|
||||||
|
sampleEntity2.setMessage("some message");
|
||||||
|
sampleEntity2.setVersion(System.currentTimeMillis());
|
||||||
|
|
||||||
|
IndexQuery indexQuery2 = new IndexQuery();
|
||||||
|
indexQuery2.setId(documentId2);
|
||||||
|
indexQuery2.setObject(sampleEntity2);
|
||||||
|
|
||||||
|
indexQueries.add(indexQuery2);
|
||||||
|
//when
|
||||||
|
elasticsearchTemplate.bulkIndex(indexQueries);
|
||||||
|
elasticsearchTemplate.refresh(SampleEntity.class,true);
|
||||||
|
//then
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
assertThat(sampleEntities.size(), is(equalTo(2)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user