mirror of
https://github.com/spring-projects/spring-data-elasticsearch.git
synced 2025-06-22 12:02:10 +00:00
DATAES-713 - Add returned aggregations from the AggregatedPage to the SearchHits.
Original PR: #365
This commit is contained in:
parent
b634f318ab
commit
d2b7df87f4
@ -19,7 +19,6 @@ import org.springframework.beans.BeansException;
|
|||||||
import org.springframework.context.ApplicationContext;
|
import org.springframework.context.ApplicationContext;
|
||||||
import org.springframework.context.ApplicationContextAware;
|
import org.springframework.context.ApplicationContextAware;
|
||||||
import org.springframework.data.elasticsearch.ElasticsearchException;
|
import org.springframework.data.elasticsearch.ElasticsearchException;
|
||||||
import org.springframework.data.elasticsearch.core.aggregation.AggregatedPage;
|
|
||||||
import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter;
|
import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter;
|
||||||
import org.springframework.data.elasticsearch.core.convert.MappingElasticsearchConverter;
|
import org.springframework.data.elasticsearch.core.convert.MappingElasticsearchConverter;
|
||||||
import org.springframework.data.elasticsearch.core.document.SearchDocumentResponse;
|
import org.springframework.data.elasticsearch.core.document.SearchDocumentResponse;
|
||||||
@ -108,57 +107,47 @@ public abstract class AbstractElasticsearchTemplate implements ElasticsearchOper
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> AggregatedPage<SearchHit<T>> search(MoreLikeThisQuery query, Class<T> clazz, IndexCoordinates index) {
|
public <T> SearchHits<T> search(MoreLikeThisQuery query, Class<T> clazz, IndexCoordinates index) {
|
||||||
|
|
||||||
Assert.notNull(query.getId(), "No document id defined for MoreLikeThisQuery");
|
Assert.notNull(query.getId(), "No document id defined for MoreLikeThisQuery");
|
||||||
|
|
||||||
MoreLikeThisQueryBuilder moreLikeThisQueryBuilder = requestFactory.moreLikeThisQueryBuilder(query, index);
|
MoreLikeThisQueryBuilder moreLikeThisQueryBuilder = requestFactory.moreLikeThisQueryBuilder(query, index);
|
||||||
|
return search(new NativeSearchQueryBuilder().withQuery(moreLikeThisQueryBuilder).build(), clazz, index);
|
||||||
return searchForPage(new NativeSearchQueryBuilder().withQuery(moreLikeThisQueryBuilder).build(), clazz, index);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> List<AggregatedPage<SearchHit<T>>> multiSearchForPage(List<? extends Query> queries, Class<T> clazz,
|
public <T> List<SearchHits<T>> multiSearch(List<? extends Query> queries, Class<T> clazz, IndexCoordinates index) {
|
||||||
IndexCoordinates index) {
|
|
||||||
MultiSearchRequest request = new MultiSearchRequest();
|
MultiSearchRequest request = new MultiSearchRequest();
|
||||||
for (Query query : queries) {
|
for (Query query : queries) {
|
||||||
request.add(requestFactory.searchRequest(query, clazz, index));
|
request.add(requestFactory.searchRequest(query, clazz, index));
|
||||||
}
|
}
|
||||||
return doMultiSearch(queries, clazz, request);
|
|
||||||
|
MultiSearchResponse.Item[] items = getMultiSearchResult(request);
|
||||||
|
|
||||||
|
List<SearchHits<T>> res = new ArrayList<>(queries.size());
|
||||||
|
int c = 0;
|
||||||
|
for (Query query : queries) {
|
||||||
|
res.add(elasticsearchConverter.read(clazz, SearchDocumentResponse.from(items[c++].getResponse())));
|
||||||
|
}
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<AggregatedPage<? extends SearchHit<?>>> multiSearchForPage(List<? extends Query> queries,
|
public List<SearchHits<?>> multiSearch(List<? extends Query> queries, List<Class<?>> classes,
|
||||||
List<Class<?>> classes, IndexCoordinates index) {
|
IndexCoordinates index) {
|
||||||
MultiSearchRequest request = new MultiSearchRequest();
|
MultiSearchRequest request = new MultiSearchRequest();
|
||||||
Iterator<Class<?>> it = classes.iterator();
|
Iterator<Class<?>> it = classes.iterator();
|
||||||
for (Query query : queries) {
|
for (Query query : queries) {
|
||||||
request.add(requestFactory.searchRequest(query, it.next(), index));
|
request.add(requestFactory.searchRequest(query, it.next(), index));
|
||||||
}
|
}
|
||||||
return doMultiSearch(queries, classes, request);
|
|
||||||
}
|
|
||||||
|
|
||||||
private <T> List<AggregatedPage<SearchHit<T>>> doMultiSearch(List<? extends Query> queries, Class<T> clazz,
|
|
||||||
MultiSearchRequest request) {
|
|
||||||
MultiSearchResponse.Item[] items = getMultiSearchResult(request);
|
MultiSearchResponse.Item[] items = getMultiSearchResult(request);
|
||||||
List<AggregatedPage<SearchHit<T>>> res = new ArrayList<>(queries.size());
|
|
||||||
int c = 0;
|
|
||||||
for (Query query : queries) {
|
|
||||||
res.add(elasticsearchConverter.mapResults(SearchDocumentResponse.from(items[c++].getResponse()), clazz,
|
|
||||||
query.getPageable()));
|
|
||||||
}
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
private List<AggregatedPage<? extends SearchHit<?>>> doMultiSearch(List<? extends Query> queries,
|
List<SearchHits<?>> res = new ArrayList<>(queries.size());
|
||||||
List<Class<?>> classes, MultiSearchRequest request) {
|
|
||||||
MultiSearchResponse.Item[] items = getMultiSearchResult(request);
|
|
||||||
List<AggregatedPage<? extends SearchHit<?>>> res = new ArrayList<>(queries.size());
|
|
||||||
int c = 0;
|
int c = 0;
|
||||||
Iterator<Class<?>> it = classes.iterator();
|
Iterator<Class<?>> it1 = classes.iterator();
|
||||||
for (Query query : queries) {
|
for (Query query : queries) {
|
||||||
res.add(elasticsearchConverter.mapResults(SearchDocumentResponse.from(items[c++].getResponse()), it.next(),
|
res.add(elasticsearchConverter.read(it1.next(), SearchDocumentResponse.from(items[c++].getResponse())));
|
||||||
query.getPageable()));
|
|
||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
@ -226,19 +226,7 @@ public class ElasticsearchRestTemplate extends AbstractElasticsearchTemplate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> T query(Query query, ResultsExtractor<T> resultsExtractor, @Nullable Class<T> clazz,
|
public <T> SearchHits<T> search(Query query, Class<T> clazz, IndexCoordinates index) {
|
||||||
IndexCoordinates index) {
|
|
||||||
SearchRequest searchRequest = requestFactory.searchRequest(query, clazz, index);
|
|
||||||
try {
|
|
||||||
SearchResponse result = client.search(searchRequest, RequestOptions.DEFAULT);
|
|
||||||
return resultsExtractor.extract(result);
|
|
||||||
} catch (IOException e) {
|
|
||||||
throw new ElasticsearchException("Error for search request: " + searchRequest.toString(), e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public <T> AggregatedPage<SearchHit<T>> searchForPage(Query query, Class<T> clazz, IndexCoordinates index) {
|
|
||||||
SearchRequest searchRequest = requestFactory.searchRequest(query, clazz, index);
|
SearchRequest searchRequest = requestFactory.searchRequest(query, clazz, index);
|
||||||
SearchResponse response;
|
SearchResponse response;
|
||||||
try {
|
try {
|
||||||
@ -246,7 +234,7 @@ public class ElasticsearchRestTemplate extends AbstractElasticsearchTemplate {
|
|||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
throw new ElasticsearchException("Error for search request: " + searchRequest.toString(), e);
|
throw new ElasticsearchException("Error for search request: " + searchRequest.toString(), e);
|
||||||
}
|
}
|
||||||
return elasticsearchConverter.mapResults(SearchDocumentResponse.from(response), clazz, query.getPageable());
|
return elasticsearchConverter.read(clazz, SearchDocumentResponse.from(response));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -196,17 +196,10 @@ public class ElasticsearchTemplate extends AbstractElasticsearchTemplate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> T query(Query query, ResultsExtractor<T> resultsExtractor, Class<T> clazz, IndexCoordinates index) {
|
public <T> SearchHits<T> search(Query query, Class<T> clazz, IndexCoordinates index) {
|
||||||
SearchRequestBuilder searchRequestBuilder = requestFactory.searchRequestBuilder(client, query, clazz, index);
|
SearchRequestBuilder searchRequestBuilder = requestFactory.searchRequestBuilder(client, query, clazz, index);
|
||||||
SearchResponse response = getSearchResponse(searchRequestBuilder);
|
SearchResponse response = getSearchResponse(searchRequestBuilder);
|
||||||
return resultsExtractor.extract(response);
|
return elasticsearchConverter.read(clazz, SearchDocumentResponse.from(response));
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public <T> AggregatedPage<SearchHit<T>> searchForPage(Query query, Class<T> clazz, IndexCoordinates index) {
|
|
||||||
SearchRequestBuilder searchRequestBuilder = requestFactory.searchRequestBuilder(client, query, clazz, index);
|
|
||||||
SearchResponse response = getSearchResponse(searchRequestBuilder);
|
|
||||||
return elasticsearchConverter.mapResults(SearchDocumentResponse.from(response), clazz, query.getPageable());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -22,7 +22,9 @@ import org.springframework.data.domain.Page;
|
|||||||
*
|
*
|
||||||
* @param <T>
|
* @param <T>
|
||||||
* @author Sascha Woo
|
* @author Sascha Woo
|
||||||
|
* @deprecated since 4.0, use {@link org.springframework.data.elasticsearch.core.SearchHits} to return values.
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public interface ScoredPage<T> extends Page<T> {
|
public interface ScoredPage<T> extends Page<T> {
|
||||||
|
|
||||||
float getMaxScore();
|
float getMaxScore();
|
||||||
|
@ -21,6 +21,7 @@ import java.util.List;
|
|||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.data.elasticsearch.core.aggregation.AggregatedPage;
|
import org.springframework.data.elasticsearch.core.aggregation.AggregatedPage;
|
||||||
import org.springframework.data.elasticsearch.core.aggregation.impl.AggregatedPageImpl;
|
import org.springframework.data.elasticsearch.core.aggregation.impl.AggregatedPageImpl;
|
||||||
|
|
||||||
@ -81,4 +82,16 @@ public final class SearchHitSupport {
|
|||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builds an {@link AggregatedPage} with the {@link SearchHit} objects from a {@link SearchHits} object.
|
||||||
|
*
|
||||||
|
* @param searchHits, must not be {@literal null}.
|
||||||
|
* @param pageable, must not be {@literal null}.
|
||||||
|
* @return the created Page
|
||||||
|
*/
|
||||||
|
public static <T> AggregatedPage<SearchHit<T>> page(SearchHits<T> searchHits, Pageable pageable) {
|
||||||
|
return new AggregatedPageImpl<>(searchHits.getSearchHits(), pageable, searchHits.getTotalHits(),
|
||||||
|
searchHits.getAggregations(), searchHits.getScrollId(), searchHits.getMaxScore());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,9 +18,10 @@ package org.springframework.data.elasticsearch.core;
|
|||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Stream;
|
|
||||||
|
|
||||||
|
import org.elasticsearch.search.aggregations.Aggregations;
|
||||||
import org.springframework.data.util.Streamable;
|
import org.springframework.data.util.Streamable;
|
||||||
|
import org.springframework.lang.Nullable;
|
||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
@ -33,22 +34,28 @@ import org.springframework.util.StringUtils;
|
|||||||
*/
|
*/
|
||||||
public class SearchHits<T> implements Streamable<SearchHit<T>> {
|
public class SearchHits<T> implements Streamable<SearchHit<T>> {
|
||||||
|
|
||||||
private final List<? extends SearchHit<T>> searchHits;
|
|
||||||
private final long totalHits;
|
private final long totalHits;
|
||||||
private final float maxScore;
|
private final float maxScore;
|
||||||
|
private final String scrollId;
|
||||||
|
private final List<? extends SearchHit<T>> searchHits;
|
||||||
|
private final Aggregations aggregations;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param searchHits must not be {@literal null}
|
|
||||||
* @param totalHits
|
* @param totalHits
|
||||||
* @param maxScore
|
* @param maxScore
|
||||||
|
* @param searchHits must not be {@literal null}
|
||||||
|
* @param aggregations
|
||||||
*/
|
*/
|
||||||
public SearchHits(List<? extends SearchHit<T>> searchHits, long totalHits, float maxScore) {
|
public SearchHits(long totalHits, float maxScore, @Nullable String scrollId, List<? extends SearchHit<T>> searchHits,
|
||||||
this.totalHits = totalHits;
|
@Nullable Aggregations aggregations) {
|
||||||
this.maxScore = maxScore;
|
|
||||||
|
|
||||||
Assert.notNull(searchHits, "searchHits must not be null");
|
Assert.notNull(searchHits, "searchHits must not be null");
|
||||||
|
|
||||||
|
this.totalHits = totalHits;
|
||||||
|
this.maxScore = maxScore;
|
||||||
|
this.scrollId = scrollId;
|
||||||
this.searchHits = searchHits;
|
this.searchHits = searchHits;
|
||||||
|
this.aggregations = aggregations;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -56,21 +63,35 @@ public class SearchHits<T> implements Streamable<SearchHit<T>> {
|
|||||||
return (Iterator<SearchHit<T>>) searchHits.iterator();
|
return (Iterator<SearchHit<T>>) searchHits.iterator();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the number of total hits.
|
||||||
|
*/
|
||||||
// region getter
|
// region getter
|
||||||
|
public long getTotalHits() {
|
||||||
|
return totalHits;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the maximum score
|
||||||
|
*/
|
||||||
|
public float getMaxScore() {
|
||||||
|
return maxScore;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the scroll id
|
||||||
|
*/
|
||||||
|
@Nullable
|
||||||
|
public String getScrollId() {
|
||||||
|
return scrollId;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the contained {@link SearchHit}s.
|
* @return the contained {@link SearchHit}s.
|
||||||
*/
|
*/
|
||||||
public List<SearchHit<T>> getSearchHits() {
|
public List<SearchHit<T>> getSearchHits() {
|
||||||
return Collections.unmodifiableList(searchHits);
|
return Collections.unmodifiableList(searchHits);
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getTotalHits() {
|
|
||||||
return totalHits;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getMaxScore() {
|
|
||||||
return maxScore;
|
|
||||||
}
|
|
||||||
// endregion
|
// endregion
|
||||||
|
|
||||||
// region SearchHit access
|
// region SearchHit access
|
||||||
@ -86,7 +107,30 @@ public class SearchHits<T> implements Streamable<SearchHit<T>> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "SearchHits{" + "totalHits=" + totalHits + ", maxScore=" + maxScore + ", searchHits="
|
return "SearchHits{" +
|
||||||
+ StringUtils.collectionToCommaDelimitedString(searchHits) + '}';
|
"totalHits=" + totalHits +
|
||||||
|
", maxScore=" + maxScore +
|
||||||
|
", scrollId='" + scrollId + '\'' +
|
||||||
|
", searchHits=" + StringUtils.collectionToCommaDelimitedString(searchHits) +
|
||||||
|
", aggregations=" + aggregations +
|
||||||
|
'}';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return true if aggregations are available
|
||||||
|
*/
|
||||||
|
// region aggregations
|
||||||
|
public boolean hasAggregations() {
|
||||||
|
return aggregations != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the aggregations.
|
||||||
|
*/
|
||||||
|
@Nullable
|
||||||
|
public Aggregations getAggregations() {
|
||||||
|
return aggregations;
|
||||||
|
}
|
||||||
|
// endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
package org.springframework.data.elasticsearch.core;
|
package org.springframework.data.elasticsearch.core;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@ -59,8 +60,7 @@ public interface SearchOperations {
|
|||||||
*/
|
*/
|
||||||
long count(Query query, @Nullable Class<?> clazz, IndexCoordinates index);
|
long count(Query query, @Nullable Class<?> clazz, IndexCoordinates index);
|
||||||
|
|
||||||
<T> T query(Query query, ResultsExtractor<T> resultsExtractor, Class<T> clazz, IndexCoordinates index);
|
// region deprecated
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Execute the query against elasticsearch and return the first returned object.
|
* Execute the query against elasticsearch and return the first returned object.
|
||||||
*
|
*
|
||||||
@ -82,11 +82,13 @@ public interface SearchOperations {
|
|||||||
* @param clazz the entity clazz used for property mapping
|
* @param clazz the entity clazz used for property mapping
|
||||||
* @param index the index to run the query against
|
* @param index the index to run the query against
|
||||||
* @return a page with aggregations
|
* @return a page with aggregations
|
||||||
* @deprecated since 4.0, use {@link #searchForPage(Query, Class, IndexCoordinates)}.
|
* @deprecated since 4.0, use {@link #search(Query, Class, IndexCoordinates)}.
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
default <T> AggregatedPage<T> queryForPage(Query query, Class<T> clazz, IndexCoordinates index) {
|
default <T> AggregatedPage<T> queryForPage(Query query, Class<T> clazz, IndexCoordinates index) {
|
||||||
return (AggregatedPage<T>) SearchHitSupport.unwrapSearchHits(searchForPage(query, clazz, index));
|
SearchHits<T> searchHits = search(query, clazz, index);
|
||||||
|
AggregatedPage<SearchHit<T>> aggregatedPage = SearchHitSupport.page(searchHits, query.getPageable());
|
||||||
|
return (AggregatedPage<T>) SearchHitSupport.unwrapSearchHits(aggregatedPage);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -96,13 +98,19 @@ public interface SearchOperations {
|
|||||||
* @param clazz the entity clazz used for property mapping
|
* @param clazz the entity clazz used for property mapping
|
||||||
* @param index the index to run the query against
|
* @param index the index to run the query against
|
||||||
* @return list of pages with the results
|
* @return list of pages with the results
|
||||||
* @deprecated since 4.0, use {@link #multiSearchForPage(List, Class, IndexCoordinates)}.
|
* @deprecated since 4.0, use {@link #multiSearch(List, Class, IndexCoordinates)}.
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
default <T> List<Page<T>> queryForPage(List<? extends Query> queries, Class<T> clazz, IndexCoordinates index) {
|
default <T> List<Page<T>> queryForPage(List<? extends Query> queries, Class<T> clazz, IndexCoordinates index) {
|
||||||
return multiSearchForPage(queries, clazz, index).stream() //
|
List<Page<T>> pageList = new ArrayList<>();
|
||||||
.map(page -> (Page<T>) SearchHitSupport.unwrapSearchHits(page)) //
|
List<SearchHits<T>> searchHitsList = multiSearch(queries, clazz, index);
|
||||||
.collect(Collectors.toList());
|
Iterator<? extends Query> qit = queries.iterator();
|
||||||
|
searchHitsList.forEach(searchHits -> {
|
||||||
|
AggregatedPage<SearchHit<T>> aggregatedPage = SearchHitSupport.page(searchHits, qit.next().getPageable());
|
||||||
|
Page<T> page = (Page<T>) SearchHitSupport.unwrapSearchHits(aggregatedPage);
|
||||||
|
pageList.add(page);
|
||||||
|
});
|
||||||
|
return pageList;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -112,14 +120,22 @@ public interface SearchOperations {
|
|||||||
* @param classes the entity classes used for the queries
|
* @param classes the entity classes used for the queries
|
||||||
* @param index the index to run the query against
|
* @param index the index to run the query against
|
||||||
* @return list of pages with the results
|
* @return list of pages with the results
|
||||||
* @deprecated since 4.0, use {@link #multiSearchForPage(List, List, IndexCoordinates)}.
|
* @deprecated since 4.0, use {@link #multiSearch(List, List, IndexCoordinates)}.
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
default List<AggregatedPage<?>> queryForPage(List<? extends Query> queries, List<Class<?>> classes,
|
default List<AggregatedPage<?>> queryForPage(List<? extends Query> queries, List<Class<?>> classes,
|
||||||
IndexCoordinates index) {
|
IndexCoordinates index) {
|
||||||
return multiSearchForPage(queries, classes, index).stream() //
|
List<AggregatedPage<?>> pageList = new ArrayList<>();
|
||||||
.map(page -> (AggregatedPage<?>) SearchHitSupport.unwrapSearchHits(page)) //
|
List<SearchHits<?>> searchHitsList = multiSearch(queries, classes, index);
|
||||||
.collect(Collectors.toList());
|
Iterator<? extends Query> qit = queries.iterator();
|
||||||
|
searchHitsList.forEach(searchHits -> {
|
||||||
|
AggregatedPage<? extends SearchHit<?>> aggregatedPage = SearchHitSupport.page(searchHits,
|
||||||
|
qit.next().getPageable());
|
||||||
|
AggregatedPage<?> page = (AggregatedPage<?>) SearchHitSupport.unwrapSearchHits(aggregatedPage);
|
||||||
|
pageList.add(page);
|
||||||
|
});
|
||||||
|
|
||||||
|
return pageList;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -219,7 +235,7 @@ public interface SearchOperations {
|
|||||||
* @param scrollTimeInMillis duration of the scroll time
|
* @param scrollTimeInMillis duration of the scroll time
|
||||||
* @param clazz The class of entity to retrieve.
|
* @param clazz The class of entity to retrieve.
|
||||||
* @return scrolled page result
|
* @return scrolled page result
|
||||||
* @deprecated since 4.0, use {@link #searchScrollStart(long, Query, Class, IndexCoordinates)}.
|
* @deprecated since 4.0, use {@link #searchScrollContinue(String, long, Class)}.
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
default <T> ScrolledPage<T> continueScroll(@Nullable String scrollId, long scrollTimeInMillis, Class<T> clazz) {
|
default <T> ScrolledPage<T> continueScroll(@Nullable String scrollId, long scrollTimeInMillis, Class<T> clazz) {
|
||||||
@ -250,8 +266,11 @@ public interface SearchOperations {
|
|||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
default <T> AggregatedPage<T> moreLikeThis(MoreLikeThisQuery query, Class<T> clazz, IndexCoordinates index) {
|
default <T> AggregatedPage<T> moreLikeThis(MoreLikeThisQuery query, Class<T> clazz, IndexCoordinates index) {
|
||||||
return (AggregatedPage<T>) SearchHitSupport.unwrapSearchHits(search(query, clazz, index));
|
SearchHits<T> searchHits = search(query, clazz, index);
|
||||||
|
AggregatedPage<SearchHit<T>> aggregatedPage = SearchHitSupport.page(searchHits, query.getPageable());
|
||||||
|
return (AggregatedPage<T>) SearchHitSupport.unwrapSearchHits(aggregatedPage);
|
||||||
}
|
}
|
||||||
|
// endregion
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Execute the query against elasticsearch and return the first returned object.
|
* Execute the query against elasticsearch and return the first returned object.
|
||||||
@ -263,41 +282,30 @@ public interface SearchOperations {
|
|||||||
*/
|
*/
|
||||||
@Nullable
|
@Nullable
|
||||||
default <T> SearchHit<T> searchOne(Query query, Class<T> clazz, IndexCoordinates index) {
|
default <T> SearchHit<T> searchOne(Query query, Class<T> clazz, IndexCoordinates index) {
|
||||||
List<SearchHit<T>> content = searchForPage(query, clazz, index).getContent();
|
List<SearchHit<T>> content = search(query, clazz, index).getSearchHits();
|
||||||
return content.isEmpty() ? null : content.get(0);
|
return content.isEmpty() ? null : content.get(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Execute the query against elasticsearch and return result as {@link AggregatedPage}.
|
* Execute the multi search query against elasticsearch and return result as {@link List} of {@link SearchHits}.
|
||||||
*
|
*
|
||||||
* @param query the query to execute
|
* @param queries the queries to execute
|
||||||
* @param clazz the entity clazz used for property mapping
|
* @param clazz the entity clazz used for property mapping
|
||||||
* @param index the index to run the query against
|
* @param index the index to run the query against
|
||||||
* @return a page with aggregations
|
* @param <T> element return type
|
||||||
|
* @return list of SearchHits
|
||||||
*/
|
*/
|
||||||
<T> AggregatedPage<SearchHit<T>> searchForPage(Query query, Class<T> clazz, IndexCoordinates index);
|
<T> List<SearchHits<T>> multiSearch(List<? extends Query> queries, Class<T> clazz, IndexCoordinates index);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Execute the multi-search against elasticsearch and return result as {@link List} of {@link AggregatedPage}
|
* Execute the multi search query against elasticsearch and return result as {@link List} of {@link SearchHits}.
|
||||||
*
|
*
|
||||||
* @param queries the queries
|
* @param queries the queries to execute
|
||||||
* @param clazz the entity clazz used for property mapping
|
* @param classes the entity classes used for property mapping
|
||||||
* @param index the index to run the query against
|
* @param index the index to run the query against
|
||||||
* @return list of pages with the results
|
* @return list of SearchHits
|
||||||
*/
|
*/
|
||||||
<T> List<AggregatedPage<SearchHit<T>>> multiSearchForPage(List<? extends Query> queries, Class<T> clazz,
|
List<SearchHits<?>> multiSearch(List<? extends Query> queries, List<Class<?>> classes, IndexCoordinates index);
|
||||||
IndexCoordinates index);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Execute the multi-search against elasticsearch and return result as {@link List} of {@link AggregatedPage}
|
|
||||||
*
|
|
||||||
* @param queries the queries
|
|
||||||
* @param classes the entity classes used for the queries
|
|
||||||
* @param index the index to run the query against
|
|
||||||
* @return list of pages with the results
|
|
||||||
*/
|
|
||||||
List<AggregatedPage<? extends SearchHit<?>>> multiSearchForPage(List<? extends Query> queries, List<Class<?>> classes,
|
|
||||||
IndexCoordinates index);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Execute the criteria query against elasticsearch and return result as {@link SearchHits}
|
* Execute the criteria query against elasticsearch and return result as {@link SearchHits}
|
||||||
@ -308,42 +316,7 @@ public interface SearchOperations {
|
|||||||
* @param index the index to run the query against
|
* @param index the index to run the query against
|
||||||
* @return SearchHits containing the list of found objects
|
* @return SearchHits containing the list of found objects
|
||||||
*/
|
*/
|
||||||
default <T> SearchHits<T> search(Query query, Class<T> clazz, IndexCoordinates index) {
|
<T> SearchHits<T> search(Query query, Class<T> clazz, IndexCoordinates index);
|
||||||
AggregatedPage<SearchHit<T>> aggregatedPage = searchForPage(query, clazz, index);
|
|
||||||
return new SearchHits<>(aggregatedPage.getContent(), aggregatedPage.getTotalElements(),
|
|
||||||
aggregatedPage.getMaxScore());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Execute the multi search query against elasticsearch and return result as {@link List} of {@link SearchHits}.
|
|
||||||
*
|
|
||||||
* @param queries the queries to execute
|
|
||||||
* @param clazz the entity clazz used for property mapping
|
|
||||||
* @param index the index to run the query against
|
|
||||||
* @param <T> element return type
|
|
||||||
* @return list of SearchHits
|
|
||||||
*/
|
|
||||||
default <T> List<SearchHits<T>> multiSearch(List<Query> queries, Class<T> clazz, IndexCoordinates index) {
|
|
||||||
return multiSearchForPage(queries, clazz, index).stream()
|
|
||||||
.map(page -> new SearchHits<T>(page.getContent(), page.getTotalElements(), page.getMaxScore()))
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Execute the multi search query against elasticsearch and return result as {@link List} of {@link SearchHits}.
|
|
||||||
*
|
|
||||||
* @param queries the queries to execute
|
|
||||||
* @param classes the entity classes used for property mapping
|
|
||||||
* @param index the index to run the query against
|
|
||||||
* @return list of SearchHits
|
|
||||||
*/
|
|
||||||
default List<SearchHits<?>> multiSearch(List<Query> queries, List<Class<?>> classes, IndexCoordinates index) {
|
|
||||||
List<SearchHits<?>> searchHitsList = new ArrayList<>();
|
|
||||||
multiSearchForPage(queries, classes, index).forEach(page -> {
|
|
||||||
searchHitsList.add(new SearchHits(page.getContent(), page.getTotalElements(), page.getMaxScore()));
|
|
||||||
});
|
|
||||||
return searchHitsList;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* more like this query to search for documents that are "like" a specific document.
|
* more like this query to search for documents that are "like" a specific document.
|
||||||
@ -352,9 +325,9 @@ public interface SearchOperations {
|
|||||||
* @param query the query to execute
|
* @param query the query to execute
|
||||||
* @param clazz the entity clazz used for property mapping
|
* @param clazz the entity clazz used for property mapping
|
||||||
* @param index the index to run the query against
|
* @param index the index to run the query against
|
||||||
* @return page with the results
|
* @return SearchHits containing the list of found objects
|
||||||
*/
|
*/
|
||||||
<T> AggregatedPage<SearchHit<T>> search(MoreLikeThisQuery query, Class<T> clazz, IndexCoordinates index);
|
<T> SearchHits<T> search(MoreLikeThisQuery query, Class<T> clazz, IndexCoordinates index);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns scrolled page for given query
|
* Returns scrolled page for given query
|
||||||
@ -377,7 +350,7 @@ public interface SearchOperations {
|
|||||||
* @return scrolled page result
|
* @return scrolled page result
|
||||||
*/
|
*/
|
||||||
<T> ScrolledPage<SearchHit<T>> searchScrollContinue(@Nullable String scrollId, long scrollTimeInMillis,
|
<T> ScrolledPage<SearchHit<T>> searchScrollContinue(@Nullable String scrollId, long scrollTimeInMillis,
|
||||||
Class<T> clazz);
|
Class<T> clazz);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clears the search contexts associated with specified scroll ids.
|
* Clears the search contexts associated with specified scroll ids.
|
||||||
|
@ -9,7 +9,9 @@ import org.springframework.data.elasticsearch.core.ScrolledPage;
|
|||||||
* @author Petar Tahchiev
|
* @author Petar Tahchiev
|
||||||
* @author Sascha Woo
|
* @author Sascha Woo
|
||||||
* @author Peter-Josef Meisch
|
* @author Peter-Josef Meisch
|
||||||
|
* @deprecated since 4.0, use {@link org.springframework.data.elasticsearch.core.SearchHits} to return values.
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public interface AggregatedPage<T> extends ScrolledPage<T>, ScoredPage<T> {
|
public interface AggregatedPage<T> extends ScrolledPage<T>, ScoredPage<T> {
|
||||||
|
|
||||||
boolean hasAggregations();
|
boolean hasAggregations();
|
||||||
|
@ -20,6 +20,7 @@ import java.util.List;
|
|||||||
import org.springframework.data.convert.EntityConverter;
|
import org.springframework.data.convert.EntityConverter;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.data.elasticsearch.core.SearchHit;
|
import org.springframework.data.elasticsearch.core.SearchHit;
|
||||||
|
import org.springframework.data.elasticsearch.core.SearchHits;
|
||||||
import org.springframework.data.elasticsearch.core.aggregation.AggregatedPage;
|
import org.springframework.data.elasticsearch.core.aggregation.AggregatedPage;
|
||||||
import org.springframework.data.elasticsearch.core.document.Document;
|
import org.springframework.data.elasticsearch.core.document.Document;
|
||||||
import org.springframework.data.elasticsearch.core.document.SearchDocument;
|
import org.springframework.data.elasticsearch.core.document.SearchDocument;
|
||||||
@ -85,11 +86,21 @@ public interface ElasticsearchConverter
|
|||||||
<T> T mapDocument(@Nullable Document document, Class<T> type);
|
<T> T mapDocument(@Nullable Document document, Class<T> type);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* builds a {@link SearchHit} from a {@link SearchDocument}.
|
* builds a {@link SearchHits} from a {@link SearchDocumentResponse}.
|
||||||
*
|
|
||||||
* @param searchDocument must not be {@literal null}
|
|
||||||
* @param <T> the clazz of the type, must not be {@literal null}.
|
* @param <T> the clazz of the type, must not be {@literal null}.
|
||||||
* @param type the type of the returned data, must not be {@literal null}.
|
* @param type the type of the returned data, must not be {@literal null}.
|
||||||
|
* @param searchDocumentResponse the response to read from, must not be {@literal null}.
|
||||||
|
* @return a SearchHits object
|
||||||
|
* @since 4.0
|
||||||
|
*/
|
||||||
|
<T> SearchHits<T> read(Class<T> type, SearchDocumentResponse searchDocumentResponse);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* builds a {@link SearchHit} from a {@link SearchDocument}.
|
||||||
|
*
|
||||||
|
* @param <T> the clazz of the type, must not be {@literal null}.
|
||||||
|
* @param type the type of the returned data, must not be {@literal null}.
|
||||||
|
* @param searchDocument must not be {@literal null}
|
||||||
* @return SearchHit with all available information filled in
|
* @return SearchHit with all available information filled in
|
||||||
* @since 4.0
|
* @since 4.0
|
||||||
*/
|
*/
|
||||||
@ -108,7 +119,7 @@ public interface ElasticsearchConverter
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Map an object to a {@link Document}.
|
* Map an object to a {@link Document}.
|
||||||
*
|
*
|
||||||
* @param source
|
* @param source
|
||||||
* @return will not be {@literal null}.
|
* @return will not be {@literal null}.
|
||||||
*/
|
*/
|
||||||
|
@ -17,10 +17,20 @@ package org.springframework.data.elasticsearch.core.convert;
|
|||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import org.elasticsearch.search.aggregations.Aggregations;
|
||||||
import org.springframework.beans.BeansException;
|
import org.springframework.beans.BeansException;
|
||||||
import org.springframework.beans.factory.InitializingBean;
|
import org.springframework.beans.factory.InitializingBean;
|
||||||
import org.springframework.context.ApplicationContext;
|
import org.springframework.context.ApplicationContext;
|
||||||
@ -36,6 +46,7 @@ import org.springframework.data.domain.Pageable;
|
|||||||
import org.springframework.data.elasticsearch.ElasticsearchException;
|
import org.springframework.data.elasticsearch.ElasticsearchException;
|
||||||
import org.springframework.data.elasticsearch.annotations.ScriptedField;
|
import org.springframework.data.elasticsearch.annotations.ScriptedField;
|
||||||
import org.springframework.data.elasticsearch.core.SearchHit;
|
import org.springframework.data.elasticsearch.core.SearchHit;
|
||||||
|
import org.springframework.data.elasticsearch.core.SearchHits;
|
||||||
import org.springframework.data.elasticsearch.core.aggregation.AggregatedPage;
|
import org.springframework.data.elasticsearch.core.aggregation.AggregatedPage;
|
||||||
import org.springframework.data.elasticsearch.core.aggregation.impl.AggregatedPageImpl;
|
import org.springframework.data.elasticsearch.core.aggregation.impl.AggregatedPageImpl;
|
||||||
import org.springframework.data.elasticsearch.core.document.Document;
|
import org.springframework.data.elasticsearch.core.document.Document;
|
||||||
@ -152,11 +163,6 @@ public class MappingElasticsearchConverter
|
|||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@Nullable
|
@Nullable
|
||||||
protected <R> R doRead(Document source, TypeInformation<R> typeHint) {
|
protected <R> R doRead(Document source, TypeInformation<R> typeHint) {
|
||||||
|
|
||||||
if (source == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
typeHint = (TypeInformation<R>) typeMapper.readType(source, typeHint);
|
typeHint = (TypeInformation<R>) typeMapper.readType(source, typeHint);
|
||||||
|
|
||||||
if (conversions.hasCustomReadTarget(Map.class, typeHint.getType())) {
|
if (conversions.hasCustomReadTarget(Map.class, typeHint.getType())) {
|
||||||
@ -597,8 +603,28 @@ public class MappingElasticsearchConverter
|
|||||||
: type.cast(mappedResult);
|
: type.cast(mappedResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> SearchHits<T> read(Class<T> type, SearchDocumentResponse searchDocumentResponse) {
|
||||||
|
|
||||||
|
Assert.notNull(type, "type must not be null");
|
||||||
|
Assert.notNull(searchDocumentResponse, "searchDocumentResponse must not be null");
|
||||||
|
|
||||||
|
long totalHits = searchDocumentResponse.getTotalHits();
|
||||||
|
float maxScore = searchDocumentResponse.getMaxScore();
|
||||||
|
String scrollId = searchDocumentResponse.getScrollId();
|
||||||
|
List<SearchHit<T>> searchHits = searchDocumentResponse.getSearchDocuments().stream() //
|
||||||
|
.map(searchDocument -> read(type, searchDocument)) //
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
Aggregations aggregations = searchDocumentResponse.getAggregations();
|
||||||
|
return new SearchHits<T>(totalHits, maxScore, scrollId, searchHits, aggregations);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> SearchHit<T> read(Class<T> type, SearchDocument searchDocument) {
|
public <T> SearchHit<T> read(Class<T> type, SearchDocument searchDocument) {
|
||||||
|
|
||||||
|
Assert.notNull(type, "type must not be null");
|
||||||
|
Assert.notNull(searchDocument, "searchDocument must not be null");
|
||||||
|
|
||||||
String id = searchDocument.hasId() ? searchDocument.getId() : null;
|
String id = searchDocument.hasId() ? searchDocument.getId() : null;
|
||||||
float score = searchDocument.getScore();
|
float score = searchDocument.getScore();
|
||||||
Object[] sortValues = searchDocument.getSortValues();
|
Object[] sortValues = searchDocument.getSortValues();
|
||||||
|
@ -18,6 +18,7 @@ package org.springframework.data.elasticsearch.repository.query;
|
|||||||
import org.springframework.data.domain.PageRequest;
|
import org.springframework.data.domain.PageRequest;
|
||||||
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
|
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
|
||||||
import org.springframework.data.elasticsearch.core.SearchHitSupport;
|
import org.springframework.data.elasticsearch.core.SearchHitSupport;
|
||||||
|
import org.springframework.data.elasticsearch.core.SearchHits;
|
||||||
import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentProperty;
|
import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentProperty;
|
||||||
import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
|
import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
|
||||||
import org.springframework.data.elasticsearch.core.query.CriteriaQuery;
|
import org.springframework.data.elasticsearch.core.query.CriteriaQuery;
|
||||||
@ -71,7 +72,8 @@ public class ElasticsearchPartQuery extends AbstractElasticsearchRepositoryQuery
|
|||||||
elasticsearchOperations.delete(query, clazz, index);
|
elasticsearchOperations.delete(query, clazz, index);
|
||||||
} else if (queryMethod.isPageQuery()) {
|
} else if (queryMethod.isPageQuery()) {
|
||||||
query.setPageable(accessor.getPageable());
|
query.setPageable(accessor.getPageable());
|
||||||
result = elasticsearchOperations.searchForPage(query, clazz, index);
|
SearchHits<?> searchHits = elasticsearchOperations.search(query, clazz, index);
|
||||||
|
result = SearchHitSupport.page(searchHits, query.getPageable());
|
||||||
} else if (queryMethod.isStreamQuery()) {
|
} else if (queryMethod.isStreamQuery()) {
|
||||||
Class<?> entityType = clazz;
|
Class<?> entityType = clazz;
|
||||||
if (accessor.getPageable().isUnpaged()) {
|
if (accessor.getPageable().isUnpaged()) {
|
||||||
|
@ -21,6 +21,7 @@ import java.util.regex.Pattern;
|
|||||||
import org.springframework.core.convert.support.GenericConversionService;
|
import org.springframework.core.convert.support.GenericConversionService;
|
||||||
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
|
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
|
||||||
import org.springframework.data.elasticsearch.core.SearchHitSupport;
|
import org.springframework.data.elasticsearch.core.SearchHitSupport;
|
||||||
|
import org.springframework.data.elasticsearch.core.SearchHits;
|
||||||
import org.springframework.data.elasticsearch.core.convert.DateTimeConverters;
|
import org.springframework.data.elasticsearch.core.convert.DateTimeConverters;
|
||||||
import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
|
import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
|
||||||
import org.springframework.data.elasticsearch.core.query.StringQuery;
|
import org.springframework.data.elasticsearch.core.query.StringQuery;
|
||||||
@ -77,7 +78,8 @@ public class ElasticsearchStringQuery extends AbstractElasticsearchRepositoryQue
|
|||||||
|
|
||||||
if (queryMethod.isPageQuery()) {
|
if (queryMethod.isPageQuery()) {
|
||||||
stringQuery.setPageable(accessor.getPageable());
|
stringQuery.setPageable(accessor.getPageable());
|
||||||
result = elasticsearchOperations.searchForPage(stringQuery, clazz, index);
|
SearchHits<?> searchHits = elasticsearchOperations.search(stringQuery, clazz, index);
|
||||||
|
result = SearchHitSupport.page(searchHits, stringQuery.getPageable());
|
||||||
} else if (queryMethod.isCollectionQuery()) {
|
} else if (queryMethod.isCollectionQuery()) {
|
||||||
if (accessor.getPageable().isPaged()) {
|
if (accessor.getPageable().isPaged()) {
|
||||||
stringQuery.setPageable(accessor.getPageable());
|
stringQuery.setPageable(accessor.getPageable());
|
||||||
|
@ -39,6 +39,7 @@ import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
|
|||||||
import org.springframework.data.elasticsearch.core.IndexOperations;
|
import org.springframework.data.elasticsearch.core.IndexOperations;
|
||||||
import org.springframework.data.elasticsearch.core.SearchHit;
|
import org.springframework.data.elasticsearch.core.SearchHit;
|
||||||
import org.springframework.data.elasticsearch.core.SearchHitSupport;
|
import org.springframework.data.elasticsearch.core.SearchHitSupport;
|
||||||
|
import org.springframework.data.elasticsearch.core.SearchHits;
|
||||||
import org.springframework.data.elasticsearch.core.aggregation.AggregatedPage;
|
import org.springframework.data.elasticsearch.core.aggregation.AggregatedPage;
|
||||||
import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentEntity;
|
import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentEntity;
|
||||||
import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
|
import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
|
||||||
@ -139,8 +140,9 @@ public abstract class AbstractElasticsearchRepository<T, ID> implements Elastics
|
|||||||
@Override
|
@Override
|
||||||
public Page<T> findAll(Pageable pageable) {
|
public Page<T> findAll(Pageable pageable) {
|
||||||
NativeSearchQuery query = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).withPageable(pageable).build();
|
NativeSearchQuery query = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).withPageable(pageable).build();
|
||||||
AggregatedPage<SearchHit<T>> page = operations.searchForPage(query, getEntityClass(), getIndexCoordinates());
|
SearchHits<T> searchHits = operations.search(query, getEntityClass(), getIndexCoordinates());
|
||||||
return unwrapSearchHits(page);
|
AggregatedPage<SearchHit<T>> page = SearchHitSupport.page(searchHits, query.getPageable());
|
||||||
|
return (Page<T>) SearchHitSupport.unwrapSearchHits(page);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -152,12 +154,9 @@ public abstract class AbstractElasticsearchRepository<T, ID> implements Elastics
|
|||||||
}
|
}
|
||||||
NativeSearchQuery query = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
|
NativeSearchQuery query = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
|
||||||
.withPageable(PageRequest.of(0, itemCount, sort)).build();
|
.withPageable(PageRequest.of(0, itemCount, sort)).build();
|
||||||
AggregatedPage<SearchHit<T>> page = operations.searchForPage(query, getEntityClass(), getIndexCoordinates());
|
List<SearchHit<T>> searchHitList = operations.search(query, getEntityClass(), getIndexCoordinates())
|
||||||
return unwrapSearchHits(page);
|
.getSearchHits();
|
||||||
}
|
return (List<T>) SearchHitSupport.unwrapSearchHits(searchHitList);
|
||||||
|
|
||||||
private Page<T> unwrapSearchHits(AggregatedPage<SearchHit<T>> page) {
|
|
||||||
return (Page<T>) SearchHitSupport.unwrapSearchHits(page);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -226,21 +225,24 @@ public abstract class AbstractElasticsearchRepository<T, ID> implements Elastics
|
|||||||
return new PageImpl<>(Collections.<T> emptyList());
|
return new PageImpl<>(Collections.<T> emptyList());
|
||||||
}
|
}
|
||||||
searchQuery.setPageable(PageRequest.of(0, count));
|
searchQuery.setPageable(PageRequest.of(0, count));
|
||||||
AggregatedPage<SearchHit<T>> page = operations.searchForPage(searchQuery, getEntityClass(), getIndexCoordinates());
|
SearchHits<T> searchHits = operations.search(searchQuery, getEntityClass(), getIndexCoordinates());
|
||||||
return unwrapSearchHits(page);
|
AggregatedPage<SearchHit<T>> page = SearchHitSupport.page(searchHits, searchQuery.getPageable());
|
||||||
|
return (Page<T>) SearchHitSupport.unwrapSearchHits(page);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Page<T> search(QueryBuilder query, Pageable pageable) {
|
public Page<T> search(QueryBuilder query, Pageable pageable) {
|
||||||
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(query).withPageable(pageable).build();
|
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(query).withPageable(pageable).build();
|
||||||
AggregatedPage<SearchHit<T>> page = operations.searchForPage(searchQuery, getEntityClass(), getIndexCoordinates());
|
SearchHits<T> searchHits = operations.search(searchQuery, getEntityClass(), getIndexCoordinates());
|
||||||
return unwrapSearchHits(page);
|
AggregatedPage<SearchHit<T>> page = SearchHitSupport.page(searchHits, searchQuery.getPageable());
|
||||||
|
return (Page<T>) SearchHitSupport.unwrapSearchHits(page);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Page<T> search(Query query) {
|
public Page<T> search(Query query) {
|
||||||
AggregatedPage<SearchHit<T>> page = operations.searchForPage(query, getEntityClass(), getIndexCoordinates());
|
SearchHits<T> searchHits = operations.search(query, getEntityClass(), getIndexCoordinates());
|
||||||
return unwrapSearchHits(page);
|
AggregatedPage<SearchHit<T>> page = SearchHitSupport.page(searchHits, query.getPageable());
|
||||||
|
return (Page<T>) SearchHitSupport.unwrapSearchHits(page);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -255,8 +257,9 @@ public abstract class AbstractElasticsearchRepository<T, ID> implements Elastics
|
|||||||
query.addFields(fields);
|
query.addFields(fields);
|
||||||
}
|
}
|
||||||
|
|
||||||
AggregatedPage<SearchHit<T>> page = operations.search(query, getEntityClass(), getIndexCoordinates());
|
SearchHits<T> searchHits = operations.search(query, getEntityClass(), getIndexCoordinates());
|
||||||
return unwrapSearchHits(page);
|
AggregatedPage<SearchHit<T>> page = SearchHitSupport.page(searchHits, pageable);
|
||||||
|
return (Page<T>) SearchHitSupport.unwrapSearchHits(page);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -38,16 +38,13 @@ import org.junit.jupiter.api.BeforeEach;
|
|||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.annotation.Id;
|
import org.springframework.data.annotation.Id;
|
||||||
import org.springframework.data.domain.Page;
|
|
||||||
import org.springframework.data.elasticsearch.annotations.Document;
|
import org.springframework.data.elasticsearch.annotations.Document;
|
||||||
import org.springframework.data.elasticsearch.annotations.Field;
|
import org.springframework.data.elasticsearch.annotations.Field;
|
||||||
import org.springframework.data.elasticsearch.annotations.FieldType;
|
import org.springframework.data.elasticsearch.annotations.FieldType;
|
||||||
import org.springframework.data.elasticsearch.annotations.InnerField;
|
import org.springframework.data.elasticsearch.annotations.InnerField;
|
||||||
import org.springframework.data.elasticsearch.annotations.MultiField;
|
import org.springframework.data.elasticsearch.annotations.MultiField;
|
||||||
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
|
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
|
||||||
import org.springframework.data.elasticsearch.core.SearchHit;
|
|
||||||
import org.springframework.data.elasticsearch.core.SearchHits;
|
import org.springframework.data.elasticsearch.core.SearchHits;
|
||||||
import org.springframework.data.elasticsearch.core.aggregation.AggregatedPage;
|
|
||||||
import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
|
import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
|
||||||
import org.springframework.data.elasticsearch.core.query.GetQuery;
|
import org.springframework.data.elasticsearch.core.query.GetQuery;
|
||||||
import org.springframework.data.elasticsearch.core.query.IndexQuery;
|
import org.springframework.data.elasticsearch.core.query.IndexQuery;
|
||||||
@ -196,11 +193,11 @@ public class NestedObjectTests {
|
|||||||
|
|
||||||
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(builder).build();
|
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(builder).build();
|
||||||
|
|
||||||
Page<SearchHit<PersonMultipleLevelNested>> personIndexed = elasticsearchTemplate.searchForPage(searchQuery,
|
SearchHits<PersonMultipleLevelNested> personIndexed = elasticsearchTemplate.search(searchQuery,
|
||||||
PersonMultipleLevelNested.class, index);
|
PersonMultipleLevelNested.class, index);
|
||||||
assertThat(personIndexed).isNotNull();
|
assertThat(personIndexed).isNotNull();
|
||||||
assertThat(personIndexed.getTotalElements()).isEqualTo(1);
|
assertThat(personIndexed.getTotalHits()).isEqualTo(1);
|
||||||
assertThat(personIndexed.getContent().get(0).getContent().getId()).isEqualTo("1");
|
assertThat(personIndexed.getSearchHit(0).getContent().getId()).isEqualTo("1");
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<IndexQuery> createPerson() {
|
private List<IndexQuery> createPerson() {
|
||||||
@ -381,10 +378,10 @@ public class NestedObjectTests {
|
|||||||
// then
|
// then
|
||||||
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
|
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
|
||||||
.withQuery(nestedQuery("buckets", termQuery("buckets.1", "test3"), ScoreMode.None)).build();
|
.withQuery(nestedQuery("buckets", termQuery("buckets.1", "test3"), ScoreMode.None)).build();
|
||||||
AggregatedPage<SearchHit<Book>> books = elasticsearchTemplate.searchForPage(searchQuery, Book.class, index);
|
SearchHits<Book> books = elasticsearchTemplate.search(searchQuery, Book.class, index);
|
||||||
|
|
||||||
assertThat(books.getContent()).hasSize(1);
|
assertThat(books.getSearchHits()).hasSize(1);
|
||||||
assertThat(books.getContent().get(0).getContent().getId()).isEqualTo(book2.getId());
|
assertThat(books.getSearchHit(0).getContent().getId()).isEqualTo(book2.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Setter
|
@Setter
|
||||||
|
@ -60,7 +60,6 @@ import org.junit.jupiter.api.Test;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.annotation.Id;
|
import org.springframework.data.annotation.Id;
|
||||||
import org.springframework.data.annotation.Version;
|
import org.springframework.data.annotation.Version;
|
||||||
import org.springframework.data.domain.Page;
|
|
||||||
import org.springframework.data.domain.PageRequest;
|
import org.springframework.data.domain.PageRequest;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.data.domain.Sort;
|
import org.springframework.data.domain.Sort;
|
||||||
@ -73,7 +72,6 @@ import org.springframework.data.elasticsearch.annotations.InnerField;
|
|||||||
import org.springframework.data.elasticsearch.annotations.MultiField;
|
import org.springframework.data.elasticsearch.annotations.MultiField;
|
||||||
import org.springframework.data.elasticsearch.annotations.Score;
|
import org.springframework.data.elasticsearch.annotations.Score;
|
||||||
import org.springframework.data.elasticsearch.annotations.ScriptedField;
|
import org.springframework.data.elasticsearch.annotations.ScriptedField;
|
||||||
import org.springframework.data.elasticsearch.core.aggregation.AggregatedPage;
|
|
||||||
import org.springframework.data.elasticsearch.core.geo.GeoPoint;
|
import org.springframework.data.elasticsearch.core.geo.GeoPoint;
|
||||||
import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
|
import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
|
||||||
import org.springframework.data.elasticsearch.core.query.*;
|
import org.springframework.data.elasticsearch.core.query.*;
|
||||||
@ -271,7 +269,7 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void shouldReturnPageForGivenSearchQuery() {
|
public void shouldReturnSearchHitsForGivenSearchQuery() {
|
||||||
|
|
||||||
// given
|
// given
|
||||||
String documentId = randomNumeric(5);
|
String documentId = randomNumeric(5);
|
||||||
@ -286,15 +284,15 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).build();
|
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).build();
|
||||||
|
|
||||||
// when
|
// when
|
||||||
Page<SearchHit<SampleEntity>> sampleEntities = operations.searchForPage(searchQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(searchQuery, SampleEntity.class, index);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(sampleEntities).isNotNull();
|
assertThat(searchHits).isNotNull();
|
||||||
assertThat(sampleEntities.getTotalElements()).isGreaterThanOrEqualTo(1);
|
assertThat(searchHits.getTotalHits()).isGreaterThanOrEqualTo(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test // DATAES-595
|
@Test // DATAES-595
|
||||||
public void shouldReturnPageUsingLocalPreferenceForGivenSearchQuery() {
|
public void shouldReturnSearchHitsUsingLocalPreferenceForGivenSearchQuery() {
|
||||||
|
|
||||||
// given
|
// given
|
||||||
String documentId = randomNumeric(5);
|
String documentId = randomNumeric(5);
|
||||||
@ -310,12 +308,11 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
.withPreference("_local").build();
|
.withPreference("_local").build();
|
||||||
|
|
||||||
// when
|
// when
|
||||||
Page<SearchHit<SampleEntity>> sampleEntities = operations.searchForPage(searchQueryWithValidPreference,
|
SearchHits<SampleEntity> searchHits = operations.search(searchQueryWithValidPreference, SampleEntity.class, index);
|
||||||
SampleEntity.class, index);
|
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(sampleEntities).isNotNull();
|
assertThat(searchHits).isNotNull();
|
||||||
assertThat(sampleEntities.getTotalElements()).isGreaterThanOrEqualTo(1);
|
assertThat(searchHits.getTotalHits()).isGreaterThanOrEqualTo(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test // DATAES-595
|
@Test // DATAES-595
|
||||||
@ -336,7 +333,7 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
|
|
||||||
// when
|
// when
|
||||||
assertThatThrownBy(() -> {
|
assertThatThrownBy(() -> {
|
||||||
operations.searchForPage(searchQueryWithInvalidPreference, SampleEntity.class, index);
|
operations.search(searchQueryWithInvalidPreference, SampleEntity.class, index);
|
||||||
}).isInstanceOf(Exception.class);
|
}).isInstanceOf(Exception.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -353,15 +350,16 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
operations.index(idxQuery, IndexCoordinates.of(INDEX_1_NAME).withTypes("test-type"));
|
operations.index(idxQuery, IndexCoordinates.of(INDEX_1_NAME).withTypes("test-type"));
|
||||||
indexOperations.refresh(IndexCoordinates.of(INDEX_1_NAME));
|
indexOperations.refresh(IndexCoordinates.of(INDEX_1_NAME));
|
||||||
|
|
||||||
// when
|
|
||||||
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
|
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
|
||||||
.withIndicesOptions(IndicesOptions.lenientExpandOpen()).build();
|
.withIndicesOptions(IndicesOptions.lenientExpandOpen()).build();
|
||||||
Page<SearchHit<SampleEntity>> entities = operations.searchForPage(searchQuery, SampleEntity.class,
|
|
||||||
|
// when
|
||||||
|
SearchHits<SampleEntity> searchHits = operations.search(searchQuery, SampleEntity.class,
|
||||||
IndexCoordinates.of(INDEX_1_NAME, INDEX_2_NAME));
|
IndexCoordinates.of(INDEX_1_NAME, INDEX_2_NAME));
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(entities).isNotNull();
|
assertThat(searchHits).isNotNull();
|
||||||
assertThat(entities.getTotalElements()).isGreaterThanOrEqualTo(1);
|
assertThat(searchHits.getTotalHits()).isGreaterThanOrEqualTo(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -381,15 +379,16 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
.version(System.currentTimeMillis()).build();
|
.version(System.currentTimeMillis()).build();
|
||||||
|
|
||||||
indexQueries = getIndexQueries(Arrays.asList(sampleEntity1, sampleEntity2));
|
indexQueries = getIndexQueries(Arrays.asList(sampleEntity1, sampleEntity2));
|
||||||
|
|
||||||
// when
|
|
||||||
operations.bulkIndex(indexQueries, index);
|
operations.bulkIndex(indexQueries, index);
|
||||||
indexOperations.refresh(SampleEntity.class);
|
indexOperations.refresh(SampleEntity.class);
|
||||||
|
|
||||||
// then
|
|
||||||
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).build();
|
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).build();
|
||||||
Page<SearchHit<SampleEntity>> sampleEntities = operations.searchForPage(searchQuery, SampleEntity.class, index);
|
|
||||||
assertThat(sampleEntities.getTotalElements()).isEqualTo(2);
|
// when
|
||||||
|
SearchHits<SampleEntity> searchHits = operations.search(searchQuery, SampleEntity.class, index);
|
||||||
|
|
||||||
|
// then
|
||||||
|
assertThat(searchHits.getTotalHits()).isEqualTo(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -443,8 +442,9 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
|
|
||||||
// then
|
// then
|
||||||
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("id", documentId)).build();
|
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("id", documentId)).build();
|
||||||
Page<SearchHit<SampleEntity>> sampleEntities = operations.searchForPage(searchQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(searchQuery, SampleEntity.class, index);
|
||||||
assertThat(sampleEntities.getTotalElements()).isEqualTo(0);
|
|
||||||
|
assertThat(searchHits.getTotalHits()).isEqualTo(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -465,8 +465,8 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
|
|
||||||
// then
|
// then
|
||||||
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("id", documentId)).build();
|
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("id", documentId)).build();
|
||||||
Page<SearchHit<SampleEntity>> sampleEntities = operations.searchForPage(searchQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> sampleEntities = operations.search(searchQuery, SampleEntity.class, index);
|
||||||
assertThat(sampleEntities.getTotalElements()).isEqualTo(0);
|
assertThat(sampleEntities.getTotalHits()).isEqualTo(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -490,8 +490,8 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
|
|
||||||
// then
|
// then
|
||||||
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("id", documentId)).build();
|
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("id", documentId)).build();
|
||||||
Page<SearchHit<SampleEntity>> sampleEntities = operations.searchForPage(searchQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(searchQuery, SampleEntity.class, index);
|
||||||
assertThat(sampleEntities.getTotalElements()).isEqualTo(0);
|
assertThat(searchHits.getTotalHits()).isEqualTo(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test // DATAES-547
|
@Test // DATAES-547
|
||||||
@ -578,10 +578,10 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
.withFilter(boolQuery().filter(termQuery("id", documentId))).build();
|
.withFilter(boolQuery().filter(termQuery("id", documentId))).build();
|
||||||
|
|
||||||
// when
|
// when
|
||||||
Page<SearchHit<SampleEntity>> sampleEntities = operations.searchForPage(searchQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(searchQuery, SampleEntity.class, index);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(sampleEntities.getTotalElements()).isEqualTo(1);
|
assertThat(searchHits.getTotalHits()).isEqualTo(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -613,11 +613,11 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
.withSort(new FieldSortBuilder("rate").order(SortOrder.ASC)).build();
|
.withSort(new FieldSortBuilder("rate").order(SortOrder.ASC)).build();
|
||||||
|
|
||||||
// when
|
// when
|
||||||
Page<SearchHit<SampleEntity>> sampleEntities = operations.searchForPage(searchQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(searchQuery, SampleEntity.class, index);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(sampleEntities.getTotalElements()).isEqualTo(3);
|
assertThat(searchHits.getTotalHits()).isEqualTo(3);
|
||||||
assertThat(sampleEntities.getContent().get(0).getContent().getRate()).isEqualTo(sampleEntity2.getRate());
|
assertThat(searchHits.getSearchHit(0).getContent().getRate()).isEqualTo(sampleEntity2.getRate());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -650,12 +650,12 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
.withSort(new FieldSortBuilder("message").order(SortOrder.ASC)).build();
|
.withSort(new FieldSortBuilder("message").order(SortOrder.ASC)).build();
|
||||||
|
|
||||||
// when
|
// when
|
||||||
Page<SearchHit<SampleEntity>> sampleEntities = operations.searchForPage(searchQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(searchQuery, SampleEntity.class, index);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(sampleEntities.getTotalElements()).isEqualTo(3);
|
assertThat(searchHits.getTotalHits()).isEqualTo(3);
|
||||||
assertThat(sampleEntities.getContent().get(0).getContent().getRate()).isEqualTo(sampleEntity2.getRate());
|
assertThat(searchHits.getSearchHit(0).getContent().getRate()).isEqualTo(sampleEntity2.getRate());
|
||||||
assertThat(sampleEntities.getContent().get(1).getContent().getMessage()).isEqualTo(sampleEntity1.getMessage());
|
assertThat(searchHits.getSearchHit(1).getContent().getMessage()).isEqualTo(sampleEntity1.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test // DATAES-312
|
@Test // DATAES-312
|
||||||
@ -688,12 +688,12 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
.withPageable(PageRequest.of(0, 10, Sort.by(Sort.Order.asc("message").nullsFirst()))).build();
|
.withPageable(PageRequest.of(0, 10, Sort.by(Sort.Order.asc("message").nullsFirst()))).build();
|
||||||
|
|
||||||
// when
|
// when
|
||||||
Page<SearchHit<SampleEntity>> sampleEntities = operations.searchForPage(searchQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(searchQuery, SampleEntity.class, index);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(sampleEntities.getTotalElements()).isEqualTo(3);
|
assertThat(searchHits.getTotalHits()).isEqualTo(3);
|
||||||
assertThat(sampleEntities.getContent().get(0).getContent().getRate()).isEqualTo(sampleEntity3.getRate());
|
assertThat(searchHits.getSearchHit(0).getContent().getRate()).isEqualTo(sampleEntity3.getRate());
|
||||||
assertThat(sampleEntities.getContent().get(1).getContent().getMessage()).isEqualTo(sampleEntity1.getMessage());
|
assertThat(searchHits.getSearchHit(1).getContent().getMessage()).isEqualTo(sampleEntity1.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test // DATAES-312
|
@Test // DATAES-312
|
||||||
@ -726,12 +726,12 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
.withPageable(PageRequest.of(0, 10, Sort.by(Sort.Order.asc("message").nullsLast()))).build();
|
.withPageable(PageRequest.of(0, 10, Sort.by(Sort.Order.asc("message").nullsLast()))).build();
|
||||||
|
|
||||||
// when
|
// when
|
||||||
Page<SearchHit<SampleEntity>> sampleEntities = operations.searchForPage(searchQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(searchQuery, SampleEntity.class, index);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(sampleEntities.getTotalElements()).isEqualTo(3);
|
assertThat(searchHits.getTotalHits()).isEqualTo(3);
|
||||||
assertThat(sampleEntities.getContent().get(0).getContent().getRate()).isEqualTo(sampleEntity1.getRate());
|
assertThat(searchHits.getSearchHit(0).getContent().getRate()).isEqualTo(sampleEntity1.getRate());
|
||||||
assertThat(sampleEntities.getContent().get(1).getContent().getMessage()).isEqualTo(sampleEntity2.getMessage());
|
assertThat(searchHits.getSearchHit(1).getContent().getMessage()).isEqualTo(sampleEntity2.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test // DATAES-467, DATAES-657
|
@Test // DATAES-467, DATAES-657
|
||||||
@ -752,12 +752,12 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
.build();
|
.build();
|
||||||
|
|
||||||
// when
|
// when
|
||||||
Page<SearchHit<SampleEntity>> page = operations.searchForPage(searchQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(searchQuery, SampleEntity.class, index);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(page.getTotalElements()).isEqualTo(2);
|
assertThat(searchHits.getTotalHits()).isEqualTo(2);
|
||||||
assertThat(page.getContent().get(0).getContent().getId()).isEqualTo("2");
|
assertThat(searchHits.getSearchHit(0).getContent().getId()).isEqualTo("2");
|
||||||
assertThat(page.getContent().get(1).getContent().getId()).isEqualTo("1");
|
assertThat(searchHits.getSearchHit(1).getContent().getId()).isEqualTo("1");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -776,10 +776,10 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
StringQuery stringQuery = new StringQuery(matchAllQuery().toString());
|
StringQuery stringQuery = new StringQuery(matchAllQuery().toString());
|
||||||
|
|
||||||
// when
|
// when
|
||||||
Page<SearchHit<SampleEntity>> sampleEntities = operations.searchForPage(stringQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(stringQuery, SampleEntity.class, index);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(sampleEntities.getTotalElements()).isEqualTo(1);
|
assertThat(searchHits.getTotalHits()).isEqualTo(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -807,11 +807,11 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).withScriptField(
|
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).withScriptField(
|
||||||
new ScriptField("scriptedRate", new Script(ScriptType.INLINE, "expression", "doc['rate'] * factor", params)))
|
new ScriptField("scriptedRate", new Script(ScriptType.INLINE, "expression", "doc['rate'] * factor", params)))
|
||||||
.build();
|
.build();
|
||||||
Page<SearchHit<SampleEntity>> sampleEntities = operations.searchForPage(searchQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(searchQuery, SampleEntity.class, index);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(sampleEntities.getTotalElements()).isEqualTo(1);
|
assertThat(searchHits.getTotalHits()).isEqualTo(1);
|
||||||
assertThat(sampleEntities.getContent().get(0).getContent().getScriptedRate()).isEqualTo(4.0);
|
assertThat(searchHits.getSearchHit(0).getContent().getScriptedRate()).isEqualTo(4.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -830,14 +830,14 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
StringQuery stringQuery = new StringQuery(matchAllQuery().toString(), PageRequest.of(0, 10));
|
StringQuery stringQuery = new StringQuery(matchAllQuery().toString(), PageRequest.of(0, 10));
|
||||||
|
|
||||||
// when
|
// when
|
||||||
Page<SearchHit<SampleEntity>> sampleEntities = operations.searchForPage(stringQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(stringQuery, SampleEntity.class, index);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(sampleEntities.getTotalElements()).isGreaterThanOrEqualTo(1);
|
assertThat(searchHits.getTotalHits()).isGreaterThanOrEqualTo(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void shouldReturnSortedPageableResultsGivenStringQuery() {
|
public void shouldReturnSortedResultsGivenStringQuery() {
|
||||||
|
|
||||||
// given
|
// given
|
||||||
String documentId = randomNumeric(5);
|
String documentId = randomNumeric(5);
|
||||||
@ -857,10 +857,10 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
Sort.by(Order.asc("message")));
|
Sort.by(Order.asc("message")));
|
||||||
|
|
||||||
// when
|
// when
|
||||||
Page<SearchHit<SampleEntity>> sampleEntities = operations.searchForPage(stringQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(stringQuery, SampleEntity.class, index);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(sampleEntities.getTotalElements()).isGreaterThanOrEqualTo(1);
|
assertThat(searchHits.getTotalHits()).isGreaterThanOrEqualTo(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -962,12 +962,12 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
.build();
|
.build();
|
||||||
|
|
||||||
// when
|
// when
|
||||||
Page<SearchHit<SampleEntity>> page = operations.searchForPage(searchQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(searchQuery, SampleEntity.class, index);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(page).isNotNull();
|
assertThat(searchHits).isNotNull();
|
||||||
assertThat(page.getTotalElements()).isEqualTo(1);
|
assertThat(searchHits.getTotalHits()).isEqualTo(1);
|
||||||
final SampleEntity actual = page.getContent().get(0).getContent();
|
final SampleEntity actual = searchHits.getSearchHit(0).getContent();
|
||||||
assertThat(actual.message).isEqualTo(message);
|
assertThat(actual.message).isEqualTo(message);
|
||||||
assertThat(actual.getType()).isNull();
|
assertThat(actual.getType()).isNull();
|
||||||
assertThat(actual.getLocation()).isNull();
|
assertThat(actual.getLocation()).isNull();
|
||||||
@ -994,12 +994,12 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
.withSourceFilter(sourceFilter.build()).build();
|
.withSourceFilter(sourceFilter.build()).build();
|
||||||
|
|
||||||
// when
|
// when
|
||||||
Page<SearchHit<SampleEntity>> page = operations.searchForPage(searchQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(searchQuery, SampleEntity.class, index);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(page).isNotNull();
|
assertThat(searchHits).isNotNull();
|
||||||
assertThat(page.getTotalElements()).isEqualTo(1);
|
assertThat(searchHits.getTotalHits()).isEqualTo(1);
|
||||||
assertThat(page.getContent().get(0).getContent().getMessage()).isEqualTo(message);
|
assertThat(searchHits.getSearchHit(0).getContent().getMessage()).isEqualTo(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -1034,11 +1034,11 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
moreLikeThisQuery.setMinDocFreq(1);
|
moreLikeThisQuery.setMinDocFreq(1);
|
||||||
|
|
||||||
// when
|
// when
|
||||||
Page<SearchHit<SampleEntity>> sampleEntities = operations.search(moreLikeThisQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(moreLikeThisQuery, SampleEntity.class, index);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(sampleEntities.getTotalElements()).isEqualTo(1);
|
assertThat(searchHits.getTotalHits()).isEqualTo(1);
|
||||||
List<SampleEntity> content = sampleEntities.getContent().stream().map(SearchHit::getContent)
|
List<SampleEntity> content = searchHits.getSearchHits().stream().map(SearchHit::getContent)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
assertThat(content).contains(sampleEntity);
|
assertThat(content).contains(sampleEntity);
|
||||||
}
|
}
|
||||||
@ -1564,10 +1564,9 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
queries.add(new NativeSearchQueryBuilder().withQuery(termQuery("message", "ac")).build());
|
queries.add(new NativeSearchQueryBuilder().withQuery(termQuery("message", "ac")).build());
|
||||||
|
|
||||||
// then
|
// then
|
||||||
List<AggregatedPage<SearchHit<SampleEntity>>> sampleEntities = operations.multiSearchForPage(queries,
|
List<SearchHits<SampleEntity>> searchHits = operations.multiSearch(queries, SampleEntity.class, index);
|
||||||
SampleEntity.class, index);
|
for (SearchHits<SampleEntity> sampleEntity : searchHits) {
|
||||||
for (Page<SearchHit<SampleEntity>> sampleEntity : sampleEntities) {
|
assertThat(sampleEntity.getTotalHits()).isEqualTo(1);
|
||||||
assertThat(sampleEntity.getTotalElements()).isEqualTo(1);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1593,18 +1592,17 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
queries.add(new NativeSearchQueryBuilder().withQuery(termQuery("message", "ab")).build());
|
queries.add(new NativeSearchQueryBuilder().withQuery(termQuery("message", "ab")).build());
|
||||||
queries.add(new NativeSearchQueryBuilder().withQuery(termQuery("description", "bc")).build());
|
queries.add(new NativeSearchQueryBuilder().withQuery(termQuery("description", "bc")).build());
|
||||||
|
|
||||||
List<AggregatedPage<? extends SearchHit<?>>> pages = operations.multiSearchForPage(queries,
|
List<SearchHits<?>> searchHitsList = operations.multiSearch(queries, Lists.newArrayList(SampleEntity.class, clazz),
|
||||||
Lists.newArrayList(SampleEntity.class, clazz),
|
|
||||||
IndexCoordinates.of(index.getIndexName(), bookIndex.getIndexName()));
|
IndexCoordinates.of(index.getIndexName(), bookIndex.getIndexName()));
|
||||||
|
|
||||||
// then
|
// then
|
||||||
Page<?> page0 = pages.get(0);
|
SearchHits<?> searchHits0 = searchHitsList.get(0);
|
||||||
assertThat(page0.getTotalElements()).isEqualTo(1L);
|
assertThat(searchHits0.getTotalHits()).isEqualTo(1L);
|
||||||
SearchHit<SampleEntity> searchHit0 = (SearchHit<SampleEntity>) page0.getContent().get(0);
|
SearchHit<SampleEntity> searchHit0 = (SearchHit<SampleEntity>) searchHits0.getSearchHit(0);
|
||||||
assertThat(searchHit0.getContent().getClass()).isEqualTo(SampleEntity.class);
|
assertThat(searchHit0.getContent().getClass()).isEqualTo(SampleEntity.class);
|
||||||
Page<?> page1 = pages.get(1);
|
SearchHits<?> searchHits1 = searchHitsList.get(1);
|
||||||
assertThat(page1.getTotalElements()).isEqualTo(1L);
|
assertThat(searchHits1.getTotalHits()).isEqualTo(1L);
|
||||||
SearchHit<Book> searchHit1 = (SearchHit<Book>) page1.getContent().get(0);
|
SearchHit<Book> searchHit1 = (SearchHit<Book>) searchHits1.getSearchHit(0);
|
||||||
assertThat(searchHit1.getContent().getClass()).isEqualTo(clazz);
|
assertThat(searchHit1.getContent().getClass()).isEqualTo(clazz);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1629,8 +1627,8 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
|
|
||||||
// then
|
// then
|
||||||
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("id", documentId)).build();
|
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("id", documentId)).build();
|
||||||
Page<SearchHit<SampleEntity>> sampleEntities = operations.searchForPage(searchQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(searchQuery, SampleEntity.class, index);
|
||||||
assertThat(sampleEntities.getTotalElements()).isEqualTo(0);
|
assertThat(searchHits.getTotalHits()).isEqualTo(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -1649,10 +1647,10 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
.build();
|
.build();
|
||||||
|
|
||||||
// then
|
// then
|
||||||
Page<SearchHit<SampleEntity>> page = operations.searchForPage(searchQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(searchQuery, SampleEntity.class, index);
|
||||||
assertThat(page).isNotNull();
|
assertThat(searchHits).isNotNull();
|
||||||
assertThat(page.getContent()).hasSize(1);
|
assertThat(searchHits.getTotalHits()).isEqualTo(1);
|
||||||
assertThat(page.getContent().get(0).getContent().getId()).isEqualTo(indexQuery.getId());
|
assertThat(searchHits.getSearchHit(0).getContent().getId()).isEqualTo(indexQuery.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -1699,11 +1697,11 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
.withQuery(boolQuery().must(wildcardQuery("message", "*a*")).should(wildcardQuery("message", "*b*")))
|
.withQuery(boolQuery().must(wildcardQuery("message", "*a*")).should(wildcardQuery("message", "*b*")))
|
||||||
.withMinScore(2.0F).build();
|
.withMinScore(2.0F).build();
|
||||||
|
|
||||||
Page<SearchHit<SampleEntity>> page = operations.searchForPage(searchQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(searchQuery, SampleEntity.class, index);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(page.getTotalElements()).isEqualTo(1);
|
assertThat(searchHits.getTotalHits()).isEqualTo(1);
|
||||||
assertThat(page.getContent().get(0).getContent().getMessage()).isEqualTo("ab");
|
assertThat(searchHits.getSearchHit(0).getContent().getMessage()).isEqualTo("ab");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test // DATAES-462
|
@Test // DATAES-462
|
||||||
@ -1723,12 +1721,11 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("message", "xz"))
|
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("message", "xz"))
|
||||||
.withSort(SortBuilders.fieldSort("message")).withTrackScores(true).build();
|
.withSort(SortBuilders.fieldSort("message")).withTrackScores(true).build();
|
||||||
|
|
||||||
Page<SearchHit<SampleEntity>> page = operations.searchForPage(searchQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(searchQuery, SampleEntity.class, index);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(page).isInstanceOf(AggregatedPage.class);
|
assertThat(searchHits.getMaxScore()).isGreaterThan(0f);
|
||||||
assertThat(((AggregatedPage) page).getMaxScore()).isGreaterThan(0f);
|
assertThat(searchHits.getSearchHit(0).getScore()).isGreaterThan(0f);
|
||||||
assertThat(page.getContent().get(0).getScore()).isGreaterThan(0f);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -1784,12 +1781,12 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
|
|
||||||
// then
|
// then
|
||||||
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).build();
|
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).build();
|
||||||
Page<SearchHit<SampleEntity>> sampleEntities = operations.searchForPage(searchQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(searchQuery, SampleEntity.class, index);
|
||||||
assertThat(sampleEntities.getTotalElements()).isEqualTo(2);
|
|
||||||
|
|
||||||
List<SearchHit<SampleEntity>> content = sampleEntities.getContent();
|
assertThat(searchHits.getTotalHits()).isEqualTo(2);
|
||||||
assertThat(content.get(0).getContent().getId()).isNotNull();
|
|
||||||
assertThat(content.get(1).getContent().getId()).isNotNull();
|
assertThat(searchHits.getSearchHit(0).getContent().getId()).isNotNull();
|
||||||
|
assertThat(searchHits.getSearchHit(1).getContent().getId()).isNotNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -1828,12 +1825,11 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
|
|
||||||
// then
|
// then
|
||||||
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).build();
|
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).build();
|
||||||
Page<SearchHit<Map>> sampleEntities = operations.searchForPage(searchQuery, Map.class, index);
|
SearchHits<Map> searchHits = operations.search(searchQuery, Map.class, index);
|
||||||
|
|
||||||
assertThat(sampleEntities.getTotalElements()).isEqualTo(2);
|
assertThat(searchHits.getTotalHits()).isEqualTo(2);
|
||||||
List<SearchHit<Map>> content = sampleEntities.getContent();
|
assertThat(searchHits.getSearchHit(0).getContent().get("userId")).isEqualTo(person1.get("userId"));
|
||||||
assertThat(content.get(0).getContent().get("userId")).isEqualTo(person1.get("userId"));
|
assertThat(searchHits.getSearchHit(1).getContent().get("userId")).isEqualTo(person2.get("userId"));
|
||||||
assertThat(content.get(1).getContent().get("userId")).isEqualTo(person2.get("userId"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test // DATAES-523
|
@Test // DATAES-523
|
||||||
@ -1852,10 +1848,10 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
|
|
||||||
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).build();
|
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).build();
|
||||||
// when
|
// when
|
||||||
Page<SearchHit<GTEVersionEntity>> entities = operations.searchForPage(searchQuery, GTEVersionEntity.class, index);
|
SearchHits<GTEVersionEntity> entities = operations.search(searchQuery, GTEVersionEntity.class, index);
|
||||||
// then
|
// then
|
||||||
assertThat(entities).isNotNull();
|
assertThat(entities).isNotNull();
|
||||||
assertThat(entities.getTotalElements()).isGreaterThanOrEqualTo(1);
|
assertThat(entities.getTotalHits()).isGreaterThanOrEqualTo(1);
|
||||||
|
|
||||||
// reindex with same version
|
// reindex with same version
|
||||||
operations.index(indexQueryBuilder.build(), index);
|
operations.index(indexQueryBuilder.build(), index);
|
||||||
@ -1883,11 +1879,11 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).build();
|
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).build();
|
||||||
|
|
||||||
// when
|
// when
|
||||||
Page<SearchHit<SampleEntity>> sampleEntities = operations.searchForPage(searchQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(searchQuery, SampleEntity.class, index);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(sampleEntities).isNotNull();
|
assertThat(searchHits).isNotNull();
|
||||||
assertThat(sampleEntities.getTotalElements()).isGreaterThanOrEqualTo(1);
|
assertThat(searchHits.getTotalHits()).isGreaterThanOrEqualTo(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test // DATAES-106
|
@Test // DATAES-106
|
||||||
@ -2287,10 +2283,10 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
|
|
||||||
// when
|
// when
|
||||||
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).build();
|
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).build();
|
||||||
Page<SearchHit<ResultAggregator>> page = operations.searchForPage(searchQuery, ResultAggregator.class,
|
SearchHits<ResultAggregator> page = operations.search(searchQuery, ResultAggregator.class,
|
||||||
IndexCoordinates.of(INDEX_1_NAME, INDEX_2_NAME));
|
IndexCoordinates.of(INDEX_1_NAME, INDEX_2_NAME));
|
||||||
|
|
||||||
assertThat(page.getTotalElements()).isEqualTo(2);
|
assertThat(page.getTotalHits()).isEqualTo(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -2348,9 +2344,9 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
// then
|
// then
|
||||||
// document with id "remainingDocumentId" should still be indexed
|
// document with id "remainingDocumentId" should still be indexed
|
||||||
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).build();
|
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).build();
|
||||||
Page<SearchHit<SampleEntity>> sampleEntities = operations.searchForPage(searchQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(searchQuery, SampleEntity.class, index);
|
||||||
assertThat(sampleEntities.getTotalElements()).isEqualTo(1);
|
assertThat(searchHits.getTotalHits()).isEqualTo(1);
|
||||||
assertThat(sampleEntities.getContent().get(0).getContent().getId()).isEqualTo(remainingDocumentId);
|
assertThat(searchHits.getSearchHit(0).getContent().getId()).isEqualTo(remainingDocumentId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test // DATAES-525
|
@Test // DATAES-525
|
||||||
@ -2379,9 +2375,9 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
// then
|
// then
|
||||||
// document with id "remainingDocumentId" should still be indexed
|
// document with id "remainingDocumentId" should still be indexed
|
||||||
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).build();
|
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).build();
|
||||||
Page<SearchHit<SampleEntity>> sampleEntities = operations.searchForPage(searchQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(searchQuery, SampleEntity.class, index);
|
||||||
assertThat(sampleEntities.getTotalElements()).isEqualTo(1);
|
assertThat(searchHits.getTotalHits()).isEqualTo(1);
|
||||||
assertThat(sampleEntities.getContent().get(0).getContent().getId()).isEqualTo(remainingDocumentId);
|
assertThat(searchHits.getSearchHit(0).getContent().getId()).isEqualTo(remainingDocumentId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test // DATAES-525
|
@Test // DATAES-525
|
||||||
@ -2408,9 +2404,9 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
// then
|
// then
|
||||||
// document with id "remainingDocumentId" should still be indexed
|
// document with id "remainingDocumentId" should still be indexed
|
||||||
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).build();
|
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).build();
|
||||||
Page<SearchHit<SampleEntity>> sampleEntities = operations.searchForPage(searchQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(searchQuery, SampleEntity.class, index);
|
||||||
assertThat(sampleEntities.getTotalElements()).isEqualTo(1L);
|
assertThat(searchHits.getTotalHits()).isEqualTo(1L);
|
||||||
assertThat(sampleEntities.getContent().get(0).getContent().getId()).isEqualTo(remainingDocumentId);
|
assertThat(searchHits.getSearchHit(0).getContent().getId()).isEqualTo(remainingDocumentId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test // DATAES-525
|
@Test // DATAES-525
|
||||||
@ -2634,14 +2630,14 @@ public abstract class ElasticsearchTemplateTests {
|
|||||||
.build();
|
.build();
|
||||||
|
|
||||||
// when
|
// when
|
||||||
Page<SearchHit<SampleEntity>> page = operations.searchForPage(searchQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(searchQuery, SampleEntity.class, index);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(page).isNotNull();
|
assertThat(searchHits).isNotNull();
|
||||||
assertThat(page.getTotalElements()).isEqualTo(3);
|
assertThat(searchHits.getTotalHits()).isEqualTo(3);
|
||||||
assertThat(page.getContent()).hasSize(2);
|
assertThat(searchHits.getSearchHits()).hasSize(2);
|
||||||
assertThat(page.getContent().get(0).getContent().getMessage()).isEqualTo("message 1");
|
assertThat(searchHits.getSearchHit(0).getContent().getMessage()).isEqualTo("message 1");
|
||||||
assertThat(page.getContent().get(1).getContent().getMessage()).isEqualTo("message 2");
|
assertThat(searchHits.getSearchHit(1).getContent().getMessage()).isEqualTo("message 2");
|
||||||
}
|
}
|
||||||
|
|
||||||
private IndexQuery getIndexQuery(SampleEntity sampleEntity) {
|
private IndexQuery getIndexQuery(SampleEntity sampleEntity) {
|
||||||
|
@ -42,6 +42,7 @@ import org.springframework.data.elasticsearch.annotations.Field;
|
|||||||
import org.springframework.data.elasticsearch.annotations.InnerField;
|
import org.springframework.data.elasticsearch.annotations.InnerField;
|
||||||
import org.springframework.data.elasticsearch.annotations.MultiField;
|
import org.springframework.data.elasticsearch.annotations.MultiField;
|
||||||
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
|
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
|
||||||
|
import org.springframework.data.elasticsearch.core.SearchHits;
|
||||||
import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
|
import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
|
||||||
import org.springframework.data.elasticsearch.core.ResultsExtractor;
|
import org.springframework.data.elasticsearch.core.ResultsExtractor;
|
||||||
import org.springframework.data.elasticsearch.core.query.IndexQuery;
|
import org.springframework.data.elasticsearch.core.query.IndexQuery;
|
||||||
@ -120,12 +121,9 @@ public class ElasticsearchTemplateAggregationTests {
|
|||||||
.addAggregation(terms("subjects").field("subject")) //
|
.addAggregation(terms("subjects").field("subject")) //
|
||||||
.build();
|
.build();
|
||||||
// when
|
// when
|
||||||
Aggregations aggregations = operations.query(searchQuery, new ResultsExtractor<Aggregations>() {
|
SearchHits<ArticleEntity> searchHits = operations.search(searchQuery, ArticleEntity.class, IndexCoordinates.of(INDEX_NAME));
|
||||||
@Override
|
Aggregations aggregations = searchHits.getAggregations();
|
||||||
public Aggregations extract(SearchResponse response) {
|
|
||||||
return response.getAggregations();
|
|
||||||
}
|
|
||||||
}, null, IndexCoordinates.of(INDEX_NAME).withTypes("article"));
|
|
||||||
// then
|
// then
|
||||||
assertThat(aggregations).isNotNull();
|
assertThat(aggregations).isNotNull();
|
||||||
assertThat(aggregations.asMap().get("subjects")).isNotNull();
|
assertThat(aggregations.asMap().get("subjects")).isNotNull();
|
||||||
|
@ -37,12 +37,12 @@ import org.springframework.context.annotation.Configuration;
|
|||||||
import org.springframework.context.annotation.Import;
|
import org.springframework.context.annotation.Import;
|
||||||
import org.springframework.data.annotation.Id;
|
import org.springframework.data.annotation.Id;
|
||||||
import org.springframework.data.annotation.Version;
|
import org.springframework.data.annotation.Version;
|
||||||
import org.springframework.data.domain.Page;
|
|
||||||
import org.springframework.data.elasticsearch.annotations.Document;
|
import org.springframework.data.elasticsearch.annotations.Document;
|
||||||
import org.springframework.data.elasticsearch.annotations.Field;
|
import org.springframework.data.elasticsearch.annotations.Field;
|
||||||
import org.springframework.data.elasticsearch.annotations.Score;
|
import org.springframework.data.elasticsearch.annotations.Score;
|
||||||
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
|
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
|
||||||
import org.springframework.data.elasticsearch.core.SearchHit;
|
import org.springframework.data.elasticsearch.core.SearchHit;
|
||||||
|
import org.springframework.data.elasticsearch.core.SearchHits;
|
||||||
import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
|
import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
|
||||||
import org.springframework.data.elasticsearch.junit.jupiter.ElasticsearchRestTemplateConfiguration;
|
import org.springframework.data.elasticsearch.junit.jupiter.ElasticsearchRestTemplateConfiguration;
|
||||||
import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest;
|
import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest;
|
||||||
@ -137,11 +137,11 @@ public class CriteriaQueryTests {
|
|||||||
new Criteria("message").contains("some").or("message").contains("test"));
|
new Criteria("message").contains("some").or("message").contains("test"));
|
||||||
|
|
||||||
// when
|
// when
|
||||||
Page<SearchHit<SampleEntity>> page = operations.searchForPage(criteriaQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(criteriaQuery, SampleEntity.class, index);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(page).isNotNull();
|
assertThat(searchHits).isNotNull();
|
||||||
assertThat(page.getTotalElements()).isGreaterThanOrEqualTo(1);
|
assertThat(searchHits.getTotalHits()).isGreaterThanOrEqualTo(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -168,14 +168,13 @@ public class CriteriaQueryTests {
|
|||||||
|
|
||||||
// when
|
// when
|
||||||
|
|
||||||
Page<SearchHit<SampleEntity>> page = operations.searchForPage(criteriaQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(criteriaQuery, SampleEntity.class, index);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(page).isNotNull();
|
assertThat(searchHits).isNotNull();
|
||||||
assertThat(page.getTotalElements()).isGreaterThanOrEqualTo(1);
|
assertThat(searchHits.getTotalHits()).isGreaterThanOrEqualTo(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// @Ignore("DATAES-30")
|
|
||||||
@Test
|
@Test
|
||||||
public void shouldPerformOrOperationWithinCriteria() {
|
public void shouldPerformOrOperationWithinCriteria() {
|
||||||
|
|
||||||
@ -199,11 +198,11 @@ public class CriteriaQueryTests {
|
|||||||
CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria().or(new Criteria("message").contains("some")));
|
CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria().or(new Criteria("message").contains("some")));
|
||||||
|
|
||||||
// when
|
// when
|
||||||
Page<SearchHit<SampleEntity>> page = operations.searchForPage(criteriaQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(criteriaQuery, SampleEntity.class, index);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(page).isNotNull();
|
assertThat(searchHits).isNotNull();
|
||||||
assertThat(page.getTotalElements()).isGreaterThanOrEqualTo(1);
|
assertThat(searchHits.getTotalHits()).isGreaterThanOrEqualTo(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -228,11 +227,11 @@ public class CriteriaQueryTests {
|
|||||||
CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria("message").is("some message"));
|
CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria("message").is("some message"));
|
||||||
|
|
||||||
// when
|
// when
|
||||||
Page<SearchHit<SampleEntity>> page = operations.searchForPage(criteriaQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(criteriaQuery, SampleEntity.class, index);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(criteriaQuery.getCriteria().getField().getName()).isEqualTo("message");
|
assertThat(criteriaQuery.getCriteria().getField().getName()).isEqualTo("message");
|
||||||
assertThat(page.getTotalElements()).isGreaterThanOrEqualTo(1);
|
assertThat(searchHits.getTotalHits()).isGreaterThanOrEqualTo(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -270,11 +269,11 @@ public class CriteriaQueryTests {
|
|||||||
CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria("message").is("some message"));
|
CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria("message").is("some message"));
|
||||||
|
|
||||||
// when
|
// when
|
||||||
Page<SearchHit<SampleEntity>> page = operations.searchForPage(criteriaQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(criteriaQuery, SampleEntity.class, index);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(criteriaQuery.getCriteria().getField().getName()).isEqualTo("message");
|
assertThat(criteriaQuery.getCriteria().getField().getName()).isEqualTo("message");
|
||||||
assertThat(page.getTotalElements()).isEqualTo(1);
|
assertThat(searchHits.getTotalHits()).isEqualTo(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -520,12 +519,12 @@ public class CriteriaQueryTests {
|
|||||||
CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria("message").is("foo").not());
|
CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria("message").is("foo").not());
|
||||||
|
|
||||||
// when
|
// when
|
||||||
Page<SearchHit<SampleEntity>> page = operations.searchForPage(criteriaQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(criteriaQuery, SampleEntity.class, index);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(criteriaQuery.getCriteria().isNegating()).isTrue();
|
assertThat(criteriaQuery.getCriteria().isNegating()).isTrue();
|
||||||
assertThat(page).isNotNull();
|
assertThat(searchHits).isNotNull();
|
||||||
assertThat(page.iterator().next().getContent().getMessage()).doesNotContain("foo");
|
assertThat(searchHits.iterator().next().getContent().getMessage()).doesNotContain("foo");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -606,11 +605,11 @@ public class CriteriaQueryTests {
|
|||||||
CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria("rate").between(350, null));
|
CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria("rate").between(350, null));
|
||||||
|
|
||||||
// when
|
// when
|
||||||
Page<SearchHit<SampleEntity>> page = operations.searchForPage(criteriaQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(criteriaQuery, SampleEntity.class, index);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(page).isNotNull();
|
assertThat(searchHits).isNotNull();
|
||||||
assertThat(page.getTotalElements()).isGreaterThanOrEqualTo(1);
|
assertThat(searchHits.getTotalHits()).isGreaterThanOrEqualTo(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -649,11 +648,11 @@ public class CriteriaQueryTests {
|
|||||||
CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria("rate").between(null, 550));
|
CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria("rate").between(null, 550));
|
||||||
|
|
||||||
// when
|
// when
|
||||||
Page<SearchHit<SampleEntity>> page = operations.searchForPage(criteriaQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(criteriaQuery, SampleEntity.class, index);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(page).isNotNull();
|
assertThat(searchHits).isNotNull();
|
||||||
assertThat(page.getTotalElements()).isGreaterThanOrEqualTo(1);
|
assertThat(searchHits.getTotalHits()).isGreaterThanOrEqualTo(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -692,11 +691,11 @@ public class CriteriaQueryTests {
|
|||||||
CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria("rate").lessThanEqual(750));
|
CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria("rate").lessThanEqual(750));
|
||||||
|
|
||||||
// when
|
// when
|
||||||
Page<SearchHit<SampleEntity>> page = operations.searchForPage(criteriaQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(criteriaQuery, SampleEntity.class, index);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(page).isNotNull();
|
assertThat(searchHits).isNotNull();
|
||||||
assertThat(page.getTotalElements()).isGreaterThanOrEqualTo(1);
|
assertThat(searchHits.getTotalHits()).isGreaterThanOrEqualTo(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -735,11 +734,11 @@ public class CriteriaQueryTests {
|
|||||||
CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria("rate").greaterThanEqual(950));
|
CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria("rate").greaterThanEqual(950));
|
||||||
|
|
||||||
// when
|
// when
|
||||||
Page<SearchHit<SampleEntity>> page = operations.searchForPage(criteriaQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(criteriaQuery, SampleEntity.class, index);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(page).isNotNull();
|
assertThat(searchHits).isNotNull();
|
||||||
assertThat(page.getTotalElements()).isGreaterThanOrEqualTo(1);
|
assertThat(searchHits.getTotalHits()).isGreaterThanOrEqualTo(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -778,10 +777,10 @@ public class CriteriaQueryTests {
|
|||||||
CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria("message").contains("foo").boost(1));
|
CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria("message").contains("foo").boost(1));
|
||||||
|
|
||||||
// when
|
// when
|
||||||
Page<SearchHit<SampleEntity>> page = operations.searchForPage(criteriaQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(criteriaQuery, SampleEntity.class, index);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(page.getTotalElements()).isGreaterThanOrEqualTo(1);
|
assertThat(searchHits.getTotalHits()).isGreaterThanOrEqualTo(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -801,11 +800,11 @@ public class CriteriaQueryTests {
|
|||||||
CriteriaQuery criteriaQuery = new CriteriaQuery(
|
CriteriaQuery criteriaQuery = new CriteriaQuery(
|
||||||
new Criteria("message").contains("a").or(new Criteria("message").contains("b")));
|
new Criteria("message").contains("a").or(new Criteria("message").contains("b")));
|
||||||
criteriaQuery.setMinScore(2.0F);
|
criteriaQuery.setMinScore(2.0F);
|
||||||
Page<SearchHit<SampleEntity>> page = operations.searchForPage(criteriaQuery, SampleEntity.class, index);
|
SearchHits<SampleEntity> searchHits = operations.search(criteriaQuery, SampleEntity.class, index);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(page.getTotalElements()).isEqualTo(1);
|
assertThat(searchHits.getTotalHits()).isEqualTo(1);
|
||||||
assertThat(page.getContent().get(0).getContent().getMessage()).isEqualTo("ab");
|
assertThat(searchHits.getSearchHit(0).getContent().getMessage()).isEqualTo("ab");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test // DATAES-213
|
@Test // DATAES-213
|
||||||
|
Loading…
x
Reference in New Issue
Block a user