use of org.springframework.data.elasticsearch.core.query.Query in project spring-data-elasticsearch by spring-projects.
the class ElasticsearchRestTemplate method multiSearch.
@Override
public <T> List<SearchHits<T>> multiSearch(List<? extends Query> queries, Class<T> clazz, IndexCoordinates index) {
MultiSearchRequest request = new MultiSearchRequest();
for (Query query : queries) {
request.add(requestFactory.searchRequest(query, clazz, index));
}
MultiSearchResponse.Item[] items = getMultiSearchResult(request);
ReadDocumentCallback<T> documentCallback = new ReadDocumentCallback<>(elasticsearchConverter, clazz, index);
SearchDocumentResponseCallback<SearchHits<T>> callback = new ReadSearchDocumentResponseCallback<>(clazz, index);
List<SearchHits<T>> res = new ArrayList<>(queries.size());
for (int i = 0; i < queries.size(); i++) {
res.add(callback.doWith(SearchDocumentResponse.from(items[i].getResponse(), getEntityCreator(documentCallback))));
}
return res;
}
use of org.springframework.data.elasticsearch.core.query.Query in project spring-data-elasticsearch by spring-projects.
the class ElasticsearchRestTemplate method multiSearch.
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public List<SearchHits<?>> multiSearch(List<? extends Query> queries, List<Class<?>> classes, IndexCoordinates index) {
Assert.notNull(queries, "queries must not be null");
Assert.notNull(classes, "classes must not be null");
Assert.notNull(index, "index must not be null");
Assert.isTrue(queries.size() == classes.size(), "queries and classes must have the same size");
MultiSearchRequest request = new MultiSearchRequest();
Iterator<Class<?>> it = classes.iterator();
for (Query query : queries) {
request.add(requestFactory.searchRequest(query, it.next(), index));
}
MultiSearchResponse.Item[] items = getMultiSearchResult(request);
List<SearchHits<?>> res = new ArrayList<>(queries.size());
Iterator<Class<?>> it1 = classes.iterator();
for (int i = 0; i < queries.size(); i++) {
Class entityClass = it1.next();
ReadDocumentCallback<?> documentCallback = new ReadDocumentCallback<>(elasticsearchConverter, entityClass, index);
SearchDocumentResponseCallback<SearchHits<?>> callback = new ReadSearchDocumentResponseCallback<>(entityClass, index);
SearchResponse response = items[i].getResponse();
res.add(callback.doWith(SearchDocumentResponse.from(response, getEntityCreator(documentCallback))));
}
return res;
}
use of org.springframework.data.elasticsearch.core.query.Query in project spring-data-elasticsearch by spring-projects.
the class RuntimeFieldsIntegrationTests method shouldUseRuntimeFieldFromQueryInSearch.
// #1971
@Test
@DisplayName("should use runtime-field from query in search")
void shouldUseRuntimeFieldFromQueryInSearch() {
insert("1", "item 1", 13.5);
insert("2", "item 2", 15);
Query query = new CriteriaQuery(new Criteria("priceWithTax").greaterThanEqual(16.5));
RuntimeField runtimeField = new RuntimeField("priceWithTax", "double", "emit(doc['price'].value * 1.19)");
query.addRuntimeField(runtimeField);
SearchHits<SomethingToBuy> searchHits = operations.search(query, SomethingToBuy.class);
assertThat(searchHits.getTotalHits()).isEqualTo(1);
assertThat(searchHits.getSearchHit(0).getId()).isEqualTo("2");
}
use of org.springframework.data.elasticsearch.core.query.Query in project spring-data-elasticsearch by spring-projects.
the class SearchAsYouTypeTests method shouldReturnCorrectResultsForTextString.
// DATAES-773
@Test
void shouldReturnCorrectResultsForTextString() {
// given
loadEntities();
// when
Query query = new NativeSearchQuery(//
QueryBuilders.multiMatchQuery(//
"test ", "suggest", "suggest._2gram", "suggest._3gram", "suggest._4gram").type(MultiMatchQueryBuilder.Type.BOOL_PREFIX));
IndexCoordinates index = IndexCoordinates.of("test-index-core-search-as-you-type");
List<SearchAsYouTypeEntity> result = //
operations.search(query, SearchAsYouTypeEntity.class, index).getSearchHits().stream().map(//
SearchHit::getContent).collect(Collectors.toList());
// then
List<String> ids = result.stream().map(SearchAsYouTypeEntity::getId).collect(Collectors.toList());
assertThat(ids).containsExactlyInAnyOrder("1", "2");
}
use of org.springframework.data.elasticsearch.core.query.Query in project spring-data-elasticsearch by spring-projects.
the class SearchAsYouTypeTests method shouldReturnCorrectResultsForNumQuery.
// DATAES-773
@Test
void shouldReturnCorrectResultsForNumQuery() {
// given
loadEntities();
// when
Query query = new NativeSearchQuery(//
QueryBuilders.multiMatchQuery(//
"5678 ", "suggest", "suggest._2gram", "suggest._3gram", "suggest._4gram").type(MultiMatchQueryBuilder.Type.BOOL_PREFIX));
IndexCoordinates index = IndexCoordinates.of("test-index-core-search-as-you-type");
List<SearchAsYouTypeEntity> result = //
operations.search(query, SearchAsYouTypeEntity.class, index).getSearchHits().stream().map(//
SearchHit::getContent).collect(Collectors.toList());
// then
List<String> ids = result.stream().map(SearchAsYouTypeEntity::getId).collect(Collectors.toList());
assertThat(ids).containsExactlyInAnyOrder("2", "3");
}
Aggregations