mirror of
https://github.com/spring-projects/spring-data-elasticsearch.git
synced 2025-06-23 12:32:10 +00:00
DATAES-605 - Polishing.
This commit is contained in:
parent
216fc89fd2
commit
45015cd7ee
@ -37,7 +37,9 @@ import org.springframework.util.ClassUtils;
|
||||
* @author Rasmus Faber-Espensen
|
||||
*/
|
||||
public class ElasticsearchPartQuery extends AbstractElasticsearchRepositoryQuery {
|
||||
|
||||
private static final int DEFAULT_STREAM_BATCH_SIZE = 500;
|
||||
|
||||
private final PartTree tree;
|
||||
private final MappingContext<?, ElasticsearchPersistentProperty> mappingContext;
|
||||
|
||||
@ -49,20 +51,26 @@ public class ElasticsearchPartQuery extends AbstractElasticsearchRepositoryQuery
|
||||
|
||||
@Override
|
||||
public Object execute(Object[] parameters) {
|
||||
|
||||
ParametersParameterAccessor accessor = new ParametersParameterAccessor(queryMethod.getParameters(), parameters);
|
||||
CriteriaQuery query = createQuery(accessor);
|
||||
if (tree.isDelete()) {
|
||||
|
||||
Object result = countOrGetDocumentsForDelete(query, accessor);
|
||||
elasticsearchOperations.delete(query, queryMethod.getEntityInformation().getJavaType());
|
||||
return result;
|
||||
} else if (queryMethod.isPageQuery()) {
|
||||
|
||||
query.setPageable(accessor.getPageable());
|
||||
return elasticsearchOperations.queryForPage(query, queryMethod.getEntityInformation().getJavaType());
|
||||
} else if (queryMethod.isStreamQuery()) {
|
||||
|
||||
Class<?> entityType = queryMethod.getEntityInformation().getJavaType();
|
||||
if (accessor.getPageable().isUnpaged()) {
|
||||
|
||||
query.setPageable(PageRequest.of(0, DEFAULT_STREAM_BATCH_SIZE));
|
||||
} else {
|
||||
|
||||
query.setPageable(accessor.getPageable());
|
||||
}
|
||||
|
||||
@ -70,16 +78,22 @@ public class ElasticsearchPartQuery extends AbstractElasticsearchRepositoryQuery
|
||||
.createStreamFromIterator((CloseableIterator<Object>) elasticsearchOperations.stream(query, entityType));
|
||||
|
||||
} else if (queryMethod.isCollectionQuery()) {
|
||||
|
||||
if (accessor.getPageable().isUnpaged()) {
|
||||
|
||||
int itemCount = (int) elasticsearchOperations.count(query, queryMethod.getEntityInformation().getJavaType());
|
||||
query.setPageable(PageRequest.of(0, Math.max(1, itemCount)));
|
||||
} else {
|
||||
|
||||
query.setPageable(accessor.getPageable());
|
||||
}
|
||||
|
||||
return elasticsearchOperations.queryForList(query, queryMethod.getEntityInformation().getJavaType());
|
||||
} else if (tree.isCountProjection()) {
|
||||
|
||||
return elasticsearchOperations.count(query, queryMethod.getEntityInformation().getJavaType());
|
||||
}
|
||||
|
||||
return elasticsearchOperations.queryForObject(query, queryMethod.getEntityInformation().getJavaType());
|
||||
}
|
||||
|
||||
|
@ -29,6 +29,7 @@ import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import org.junit.Test;
|
||||
@ -59,6 +60,7 @@ import org.springframework.data.geo.Point;
|
||||
* @author Christoph Strobl
|
||||
* @author Don Wellington
|
||||
* @author Peter-Josef Meisch
|
||||
* @author Rasmus Faber-Espensen
|
||||
*/
|
||||
public abstract class CustomMethodRepositoryBaseTests {
|
||||
|
||||
@ -1239,6 +1241,7 @@ public abstract class CustomMethodRepositoryBaseTests {
|
||||
|
||||
@Test // DATAES-605
|
||||
public void streamMethodsShouldWorkWithLargeResultSets() {
|
||||
|
||||
// given
|
||||
List<SampleEntity> entities = createSampleEntities("abc", 10001);
|
||||
repository.saveAll(entities);
|
||||
@ -1253,6 +1256,7 @@ public abstract class CustomMethodRepositoryBaseTests {
|
||||
|
||||
@Test // DATAES-605
|
||||
public void streamMethodsCanHandlePageable() {
|
||||
|
||||
// given
|
||||
List<SampleEntity> entities = createSampleEntities("abc", 10);
|
||||
repository.saveAll(entities);
|
||||
@ -1271,7 +1275,7 @@ public abstract class CustomMethodRepositoryBaseTests {
|
||||
for (int i = 0; i < numberOfEntities; i++) {
|
||||
|
||||
SampleEntity entity = new SampleEntity();
|
||||
entity.setId(randomNumeric(32));
|
||||
entity.setId(UUID.randomUUID().toString());
|
||||
entity.setAvailable(true);
|
||||
entity.setMessage("Message");
|
||||
entity.setType(type);
|
||||
|
Loading…
x
Reference in New Issue
Block a user