use of org.springframework.data.elasticsearch.core.query.Query in project spring-data-elasticsearch by spring-projects.
the class RoutingIntegrationTests method shouldUseRoutingValuesInMultiget.
// #1954
@Test
@DisplayName("should use routing values in multiget")
void shouldUseRoutingValuesInMultiget() {
Consumer<String> save = (String id) -> operations.save(new RoutingEntity(id, id));
save.accept(ID_1);
save.accept(ID_2);
save.accept(ID_3);
Query query = //
Query.multiGetQueryWithRouting(//
Arrays.asList(//
new Query.IdWithRouting(ID_1, ID_1), //
new Query.IdWithRouting(ID_2, ID_2), //
new Query.IdWithRouting(ID_3, ID_3)));
//
// make sure that the correct routing values are used
((BaseQuery) query).setRoute(ID_0);
List<MultiGetItem<RoutingEntity>> multiGetItems = operations.multiGet(query, RoutingEntity.class);
SoftAssertions softly = new SoftAssertions();
softly.assertThat(multiGetItems).hasSize(3);
softly.assertThat(multiGetItems.get(0).hasItem()).isTrue();
softly.assertThat(multiGetItems.get(1).hasItem()).isTrue();
softly.assertThat(multiGetItems.get(2).hasItem()).isTrue();
softly.assertAll();
}
use of org.springframework.data.elasticsearch.core.query.Query in project spring-data-elasticsearch by spring-projects.
the class FieldNamingStrategyReactiveTemplateIntegrationTests method shouldUseConfiguredFieldNameStrategy.
// #1565
@Test
@DisplayName("should use configured FieldNameStrategy")
void shouldUseConfiguredFieldNameStrategy() {
Entity entity = new Entity();
entity.setId("42");
entity.setSomeText("the text to be searched");
operations.save(entity).block();
// use a native query here to prevent automatic property name matching
Query query = new NativeSearchQueryBuilder().withQuery(matchQuery("some_text", "searched")).build();
//
operations.search(query, Entity.class).as(//
StepVerifier::create).expectNextCount(//
1).verifyComplete();
}
use of org.springframework.data.elasticsearch.core.query.Query in project spring-data-elasticsearch by spring-projects.
the class SynonymRepositoryTests method shouldDo.
@Test
public void shouldDo() {
SynonymEntity entry1 = new SynonymEntity();
entry1.setText("Elizabeth is the english queen");
SynonymEntity entry2 = new SynonymEntity();
entry2.setText("Other text");
repository.save(entry1);
repository.save(entry2);
Query query = new CriteriaQuery(new Criteria("text").is("british"));
SearchHits<SynonymEntity> synonymEntities = operations.search(query, SynonymEntity.class);
assertThat(synonymEntities).hasSize(1);
}
use of org.springframework.data.elasticsearch.core.query.Query in project spring-data-elasticsearch by spring-projects.
the class ReactiveElasticsearchTemplate method doFindForResponse.
private <T> Mono<SearchDocumentResponse> doFindForResponse(Query query, Class<?> clazz, IndexCoordinates index) {
return Mono.defer(() -> {
SearchRequest request = requestFactory.searchRequest(query, clazz, index);
request = prepareSearchRequest(request, false);
SearchDocumentCallback<?> documentCallback = new ReadSearchDocumentCallback<>(clazz, index);
// noinspection unchecked
SearchDocumentResponse.EntityCreator<T> entityCreator = searchDocument -> ((Mono<T>) documentCallback.toEntity(searchDocument)).toFuture();
return doFindForResponse(request, entityCreator);
});
}
use of org.springframework.data.elasticsearch.core.query.Query in project spring-data-elasticsearch by spring-projects.
the class ElasticsearchRestTemplate method multiGet.
@Override
public <T> List<MultiGetItem<T>> multiGet(Query query, Class<T> clazz, IndexCoordinates index) {
Assert.notNull(index, "index must not be null");
MultiGetRequest request = requestFactory.multiGetRequest(query, clazz, index);
MultiGetResponse result = execute(client -> client.mget(request, RequestOptions.DEFAULT));
DocumentCallback<T> callback = new ReadDocumentCallback<>(elasticsearchConverter, clazz, index);
return //
DocumentAdapters.from(result).stream().map(multiGetItem -> //
MultiGetItem.of(multiGetItem.isFailed() ? null : callback.doWith(multiGetItem.getItem()), //
multiGetItem.getFailure())).collect(Collectors.toList());
}
Aggregations