Skip to content

Commit e77c001

Browse files
retaandrross
andauthored
Update to Spring Data Elasticsearch 5.5 (#433)
* Update to Spring Data Elasticsearch 5.5 Signed-off-by: Andriy Redko <[email protected]> * Update settings.gradle.kts --------- Signed-off-by: Andriy Redko <[email protected]> Signed-off-by: Andrew Ross <[email protected]> Co-authored-by: Andrew Ross <[email protected]>
1 parent 50709cb commit e77c001

File tree

10 files changed

+32
-35
lines changed

10 files changed

+32
-35
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ The Spring Data OpenSearch follows the release model of the Spring Data Elastics
2424

2525
| Spring Data Release Train | Spring Data OpenSearch | Spring Data Elasticsearch | OpenSearch Server | OpenSearch Client | Spring Framework | Spring Boot |
2626
|---------------------------|------------------------|---------------------------|-------------------|-------------------|------------------|---------------|
27+
| 2025.0 | 1.7.x | 5.5.x | 1.x / 2.x | 2.10.x and above | 6.2.x | 3.4.x |
2728
| 2024.1 | 1.6.x | 5.4.x | 1.x / 2.x | 2.10.x and above | 6.2.x | 3.4.x |
2829
| 2024.0 | 1.5.x | 5.3.x | 1.x / 2.x | 2.10.x and above | 6.1.x | 3.2.x / 3.3.x |
2930
| 2023.1 (Vaughan) | 1.4.x | 5.2.x | 1.x / 2.x | 2.10.x and above | 6.1.x | 3.2.x |

settings.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ dependencyResolutionManagement {
1818
create("springLibs") {
1919
version("spring", "6.2.7")
2020
version("spring-boot", "3.4.5")
21-
library("data-commons", "org.springframework.data:spring-data-commons:3.4.6")
22-
library("data-elasticsearch", "org.springframework.data:spring-data-elasticsearch:5.4.6")
21+
library("data-commons", "org.springframework.data:spring-data-commons:3.5.0")
22+
library("data-elasticsearch", "org.springframework.data:spring-data-elasticsearch:5.5.0")
2323
library("web", "org.springframework", "spring-web").versionRef("spring")
2424
library("context", "org.springframework", "spring-context").versionRef("spring")
2525
library("tx", "org.springframework", "spring-tx").versionRef("spring")

spring-data-opensearch/src/main/java/org/opensearch/data/client/orhlc/OpenSearchRestTemplate.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -227,14 +227,6 @@ protected String doDelete(String id, @Nullable String routing, IndexCoordinates
227227
return execute(client -> client.delete(request, RequestOptions.DEFAULT).getId());
228228
}
229229

230-
@Override
231-
public ByQueryResponse delete(Query query, Class<?> clazz, IndexCoordinates index) {
232-
DeleteByQueryRequest deleteByQueryRequest =
233-
requestFactory.deleteByQueryRequest(query, routingResolver.getRouting(), clazz, index, this.refreshPolicy);
234-
return ResponseConverter.byQueryResponseOf(
235-
execute(client -> client.deleteByQuery(deleteByQueryRequest, RequestOptions.DEFAULT)));
236-
}
237-
238230
@Override
239231
public ByQueryResponse delete(DeleteQuery query, Class<?> clazz) {
240232
return delete(query, clazz, getIndexCoordinatesFor(clazz));

spring-data-opensearch/src/main/java/org/opensearch/data/client/osc/OpenSearchTemplate.java

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -197,19 +197,6 @@ public ByQueryResponse delete(DeleteQuery query, Class<?> clazz, IndexCoordinate
197197
return responseConverter.byQueryResponse(response);
198198
}
199199

200-
@Override
201-
public ByQueryResponse delete(Query query, Class<?> clazz, IndexCoordinates index) {
202-
203-
Assert.notNull(query, "query must not be null");
204-
205-
DeleteByQueryRequest request = requestConverter.documentDeleteByQueryRequest(query, routingResolver.getRouting(),
206-
clazz, index, getRefreshPolicy());
207-
208-
DeleteByQueryResponse response = execute(client -> client.deleteByQuery(request));
209-
210-
return responseConverter.byQueryResponse(response);
211-
}
212-
213200
@Override
214201
public UpdateResponse update(UpdateQuery updateQuery, IndexCoordinates index) {
215202

spring-data-opensearch/src/main/java/org/opensearch/data/client/osc/ResponseConverter.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,6 @@ public ReindexResponse reindexResponse(org.opensearch.client.opensearch.core.Rei
388388
private ReindexResponse.Failure reindexResponseFailureOf(BulkIndexByScrollFailure failure) {
389389
return ReindexResponse.Failure.builder() //
390390
.withIndex(failure.index()) //
391-
.withType(failure.type()) //
392391
.withId(failure.id()) //
393392
.withStatus(failure.status())//
394393
.withErrorCause(toErrorCause(failure.cause())) //
@@ -399,7 +398,6 @@ private ReindexResponse.Failure reindexResponseFailureOf(BulkIndexByScrollFailur
399398
private ByQueryResponse.Failure byQueryResponseFailureOf(BulkIndexByScrollFailure failure) {
400399
return ByQueryResponse.Failure.builder() //
401400
.withIndex(failure.index()) //
402-
.withType(failure.type()) //
403401
.withId(failure.id()) //
404402
.withStatus(failure.status())//
405403
.withErrorCause(toErrorCause(failure.cause())).build();

spring-data-opensearch/src/test/java/org/opensearch/data/client/orhlc/OpenSearchORHLCIntegrationTests.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
import java.time.Duration;
1717
import java.util.Collections;
18+
import java.util.EnumSet;
1819
import java.util.HashMap;
1920
import java.util.Map;
2021
import org.json.JSONException;
@@ -44,6 +45,7 @@
4445
import org.springframework.data.elasticsearch.core.RefreshPolicy;
4546
import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
4647
import org.springframework.data.elasticsearch.core.query.BaseQueryBuilder;
48+
import org.springframework.data.elasticsearch.core.query.DeleteQuery;
4749
import org.springframework.data.elasticsearch.core.query.FetchSourceFilterBuilder;
4850
import org.springframework.data.elasticsearch.core.query.IndicesOptions;
4951
import org.springframework.data.elasticsearch.core.query.Query;
@@ -77,6 +79,11 @@ protected Query getTermQuery(String field, String value) {
7779
return new NativeSearchQueryBuilder().withQuery(termQuery(field, value)).build();
7880
}
7981

82+
@Override
83+
protected DeleteQuery getDeleteQuery(Query query) {
84+
return DeleteQuery.builder(query).setExpandWildcards(EnumSet.of(IndicesOptions.WildcardStates.OPEN)).build();
85+
}
86+
8087
@Override
8188
protected BaseQueryBuilder<?, ?> getBuilderWithTermQuery(String field, String value) {
8289
return new NativeSearchQueryBuilder().withQuery(termQuery(field, value));

spring-data-opensearch/src/test/java/org/opensearch/data/client/osc/OpenSearchOSCIntegrationTests.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import org.springframework.data.elasticsearch.core.SearchHits;
3939
import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
4040
import org.springframework.data.elasticsearch.core.query.BaseQueryBuilder;
41+
import org.springframework.data.elasticsearch.core.query.DeleteQuery;
4142
import org.springframework.data.elasticsearch.core.query.FetchSourceFilterBuilder;
4243
import org.springframework.data.elasticsearch.core.query.IndexQuery;
4344
import org.springframework.data.elasticsearch.core.query.Query;
@@ -99,6 +100,11 @@ protected Query getTermQuery(String field, String value) {
99100
return NativeQuery.builder().withQuery(termQueryAsQuery(field, value)).build();
100101
}
101102

103+
@Override
104+
protected DeleteQuery getDeleteQuery(Query query) {
105+
return DeleteQuery.builder(query).build();
106+
}
107+
102108
@Override
103109
protected BaseQueryBuilder<?, ?> getBuilderWithMatchAllQuery() {
104110
return Queries.getBuilderWithMatchAllQuery();

spring-data-opensearch/src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchIntegrationTests.java

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -576,7 +576,7 @@ public void shouldDeleteDocumentForGivenQuery() {
576576

577577
// when
578578
Query query = getTermQuery("id", documentId);
579-
operations.delete(query, SampleEntity.class, IndexCoordinates.of(indexNameProvider.indexName()));
579+
operations.delete(DeleteQuery.builder(query).build(), SampleEntity.class, IndexCoordinates.of(indexNameProvider.indexName()));
580580

581581
// then
582582
Query searchQuery = getTermQuery("id", documentId);
@@ -607,14 +607,17 @@ public void shouldDeleteAcrossIndex() {
607607

608608
// when
609609
Query query = getTermQuery("message", "foo");
610-
operations.delete(query, SampleEntity.class, IndexCoordinates.of(MULTI_INDEX_ALL));
610+
operations.delete(getDeleteQuery(query),
611+
SampleEntity.class, IndexCoordinates.of(MULTI_INDEX_ALL));
611612

612613
// then
613614
assertThat(operations.count(query, IndexCoordinates.of(MULTI_INDEX_1_NAME, MULTI_INDEX_2_NAME))).isEqualTo(0);
614615
operations.indexOps(IndexCoordinates.of(MULTI_INDEX_PREFIX)).delete();
615616
}
616617

617618
protected abstract Query getTermQuery(String field, String value);
619+
620+
protected abstract DeleteQuery getDeleteQuery(Query query);
618621

619622
@Test // DATAES-547
620623
public void shouldDeleteAcrossIndexWhenNoMatchingDataPresent() {
@@ -638,7 +641,8 @@ public void shouldDeleteAcrossIndexWhenNoMatchingDataPresent() {
638641
// when
639642
Query query = getTermQuery("message", "negative");
640643

641-
operations.delete(query, SampleEntity.class, IndexCoordinates.of("test-index-*"));
644+
operations.delete(getDeleteQuery(query),
645+
SampleEntity.class, IndexCoordinates.of("test-index-*"));
642646

643647
operations.indexOps(IndexCoordinates.of(MULTI_INDEX_1_NAME)).refresh();
644648
operations.indexOps(IndexCoordinates.of(MULTI_INDEX_2_NAME)).refresh();
@@ -1001,7 +1005,7 @@ public void shouldDeleteGivenCriteriaQuery() {
10011005
CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria("message").contains("test"));
10021006

10031007
// when
1004-
operations.delete(criteriaQuery, SampleEntity.class, IndexCoordinates.of(indexNameProvider.indexName()));
1008+
operations.delete(DeleteQuery.builder(criteriaQuery).build(), SampleEntity.class, IndexCoordinates.of(indexNameProvider.indexName()));
10051009

10061010
// then
10071011
StringQuery stringQuery = new StringQuery(matchAllQuery().toString());
@@ -2433,7 +2437,7 @@ public void shouldDeleteOnlyDocumentsMatchedByDeleteQuery() {
24332437

24342438
// when
24352439
Query query = operations.idsQuery(Arrays.asList(documentIdToDelete));
2436-
operations.delete(query, SampleEntity.class, IndexCoordinates.of(indexNameProvider.indexName()));
2440+
operations.delete(DeleteQuery.builder(query).build(), SampleEntity.class, IndexCoordinates.of(indexNameProvider.indexName()));
24372441

24382442
// then
24392443
// document with id "remainingDocumentId" should still be indexed
@@ -2463,7 +2467,8 @@ public void shouldDeleteOnlyDocumentsMatchedByCriteriaQuery() {
24632467

24642468
// when
24652469
CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria("id").is(documentIdToDelete));
2466-
operations.delete(criteriaQuery, SampleEntity.class, IndexCoordinates.of(indexNameProvider.indexName()));
2470+
operations.delete(DeleteQuery.builder(criteriaQuery).build(), SampleEntity.class,
2471+
IndexCoordinates.of(indexNameProvider.indexName()));
24672472

24682473
// then
24692474
// document with id "remainingDocumentId" should still be indexed
@@ -3374,7 +3379,7 @@ private void shouldUpdateEntityWithJoinFields(String qId1, String qId2, String a
33743379

33753380
private void shouldDeleteEntityWithJoinFields(String qId2, String aId2) throws Exception {
33763381

3377-
operations.delete(getQueryForParentId("answer", qId2, qId2), SampleJoinEntity.class,
3382+
operations.delete(DeleteQuery.builder(getQueryForParentId("answer", qId2, qId2)).build(), SampleJoinEntity.class,
33783383
IndexCoordinates.of(indexNameProvider.indexName()));
33793384

33803385
SearchHits<SampleJoinEntity> deletedHits = operations.search(getQueryForParentId("answer", qId2, null),

spring-data-opensearch/src/test/java/org/springframework/data/elasticsearch/core/query/ElasticsearchPartQueryIntegrationTests.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,10 @@
3434
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
3535
import org.springframework.data.elasticsearch.repository.query.ElasticsearchPartQuery;
3636
import org.springframework.data.elasticsearch.repository.query.ElasticsearchQueryMethod;
37+
import org.springframework.data.elasticsearch.repository.query.RepositoryPartQuery;
3738
import org.springframework.data.projection.SpelAwareProxyProjectionFactory;
3839
import org.springframework.data.repository.core.support.DefaultRepositoryMetadata;
39-
import org.springframework.data.repository.query.QueryMethodEvaluationContextProvider;
40+
import org.springframework.data.repository.query.ValueExpressionDelegate;
4041
import org.springframework.lang.Nullable;
4142

4243
/**
@@ -648,7 +649,7 @@ private String getQueryString(String methodName, Class<?>[] parameterClasses, Ob
648649
ElasticsearchQueryMethod queryMethod = new ElasticsearchQueryMethod(method,
649650
new DefaultRepositoryMetadata(SampleRepository.class), new SpelAwareProxyProjectionFactory(),
650651
operations.getElasticsearchConverter().getMappingContext());
651-
ElasticsearchPartQuery partQuery = new ElasticsearchPartQuery(queryMethod, operations, QueryMethodEvaluationContextProvider.DEFAULT);
652+
RepositoryPartQuery partQuery = new RepositoryPartQuery(queryMethod, operations, ValueExpressionDelegate.create());
652653
Query query = partQuery.createQuery(parameters);
653654
return buildQueryString(query, Book.class);
654655
}

version.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
version=1.6.4
1+
version=1.7.0

0 commit comments

Comments
 (0)