Skip to content

Commit f6c6f64

Browse files
authored
Change AliasData filter property to Query.
Original Pull Request #2374 Closes #2073
1 parent 9f63369 commit f6c6f64

File tree

5 files changed

+64
-33
lines changed

5 files changed

+64
-33
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
[[elasticsearch-migration-guide-5.0-5.1]]
2+
= Upgrading from 5.0.x to 5.1.x
3+
4+
This section describes breaking changes from version 5.0.x to 5.1.x and how removed features can be replaced by new introduced features.
5+
6+
[[elasticsearch-migration-guide-5.0-5.1.breaking-changes]]
7+
== Breaking Changes
8+
9+
In the `org.springframework.data.elasticsearch.core.index.AliasData` class, which is used for alias information
10+
returned from Elasticsearch, the property `filter` (of type `Document`) is replaced by `filterQuery` which is of type
11+
`org.springframework.data.elasticsearch.core.query.Query`.

src/main/java/org/springframework/data/elasticsearch/client/elc/ResponseConverter.java

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
*/
1616
package org.springframework.data.elasticsearch.client.elc;
1717

18-
import static org.springframework.data.elasticsearch.client.elc.JsonUtils.*;
18+
import static org.springframework.data.elasticsearch.client.elc.JsonUtils.toJson;
1919

2020
import co.elastic.clients.elasticsearch._types.BulkIndexByScrollFailure;
2121
import co.elastic.clients.elasticsearch._types.ErrorCause;
@@ -26,7 +26,16 @@
2626
import co.elastic.clients.elasticsearch.core.UpdateByQueryResponse;
2727
import co.elastic.clients.elasticsearch.core.mget.MultiGetError;
2828
import co.elastic.clients.elasticsearch.core.mget.MultiGetResponseItem;
29-
import co.elastic.clients.elasticsearch.indices.*;
29+
import co.elastic.clients.elasticsearch.indices.Alias;
30+
import co.elastic.clients.elasticsearch.indices.AliasDefinition;
31+
import co.elastic.clients.elasticsearch.indices.GetAliasResponse;
32+
import co.elastic.clients.elasticsearch.indices.GetIndexResponse;
33+
import co.elastic.clients.elasticsearch.indices.GetIndicesSettingsResponse;
34+
import co.elastic.clients.elasticsearch.indices.GetMappingResponse;
35+
import co.elastic.clients.elasticsearch.indices.GetTemplateResponse;
36+
import co.elastic.clients.elasticsearch.indices.IndexSettings;
37+
import co.elastic.clients.elasticsearch.indices.IndexState;
38+
import co.elastic.clients.elasticsearch.indices.TemplateMapping;
3039
import co.elastic.clients.elasticsearch.indices.get_mapping.IndexMappingRecord;
3140
import co.elastic.clients.json.JsonpMapper;
3241

@@ -51,6 +60,7 @@
5160
import org.springframework.data.elasticsearch.core.index.TemplateData;
5261
import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
5362
import org.springframework.data.elasticsearch.core.query.ByQueryResponse;
63+
import org.springframework.data.elasticsearch.core.query.StringQuery;
5464
import org.springframework.data.elasticsearch.core.reindex.ReindexResponse;
5565
import org.springframework.data.elasticsearch.support.DefaultStringObjectMap;
5666
import org.springframework.lang.Nullable;
@@ -190,18 +200,19 @@ public Map<String, Set<AliasData>> indicesGetAliasData(GetAliasResponse getAlias
190200
}
191201

192202
private AliasData indicesGetAliasData(String aliasName, Alias alias) {
203+
193204
Query filter = alias.filter();
194205
String filterJson = filter != null ? toJson(filter, jsonpMapper) : null;
195-
Document filterDocument = filterJson != null ? Document.parse(filterJson) : null;
196-
return AliasData.of(aliasName, filterDocument, alias.indexRouting(), alias.searchRouting(), alias.isWriteIndex(),
206+
var filterQuery = filterJson != null ? StringQuery.builder(filterJson).build() : null;
207+
return AliasData.of(aliasName, filterQuery, alias.indexRouting(), alias.searchRouting(), alias.isWriteIndex(),
197208
alias.isHidden());
198209
}
199210

200211
private AliasData indicesGetAliasData(String aliasName, AliasDefinition alias) {
201212
Query filter = alias.filter();
202213
String filterJson = filter != null ? toJson(filter, jsonpMapper) : null;
203-
Document filterDocument = filterJson != null ? Document.parse(filterJson) : null;
204-
return AliasData.of(aliasName, filterDocument, alias.indexRouting(), alias.searchRouting(), alias.isWriteIndex(),
214+
var filterQuery = filterJson != null ? StringQuery.builder(filterJson).build() : null;
215+
return AliasData.of(aliasName, filterQuery, alias.indexRouting(), alias.searchRouting(), alias.isWriteIndex(),
205216
null);
206217
}
207218

@@ -280,7 +291,7 @@ public ReindexResponse reindexResponse(co.elastic.clients.elasticsearch.core.Rei
280291
.withThrottledMillis(reindexResponse.throttledMillis()) //
281292
.withRequestsPerSecond(reindexResponse.requestsPerSecond()) //
282293
.withThrottledUntilMillis(reindexResponse.throttledUntilMillis()) //
283-
.withFailures(failures) //
294+
.withFailures(failures) //
284295
.build();
285296
}
286297

src/main/java/org/springframework/data/elasticsearch/client/erhlc/ResponseConverter.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@
4848
import org.springframework.data.elasticsearch.core.index.Settings;
4949
import org.springframework.data.elasticsearch.core.index.TemplateData;
5050
import org.springframework.data.elasticsearch.core.query.ByQueryResponse;
51+
import org.springframework.data.elasticsearch.core.query.Query;
52+
import org.springframework.data.elasticsearch.core.query.StringQuery;
5153
import org.springframework.data.elasticsearch.core.reindex.ReindexResponse;
5254
import org.springframework.lang.Nullable;
5355
import org.springframework.util.Assert;
@@ -78,14 +80,12 @@ public static Map<String, Set<AliasData>> aliasDatas(Map<String, Set<AliasMetada
7880
}
7981

8082
public static AliasData toAliasData(AliasMetadata aliasMetaData) {
81-
Document filter = null;
82-
CompressedXContent aliasMetaDataFilter = aliasMetaData.getFilter();
8383

84-
if (aliasMetaDataFilter != null) {
85-
filter = Document.parse(aliasMetaDataFilter.string());
86-
}
87-
return AliasData.of(aliasMetaData.alias(), filter, aliasMetaData.indexRouting(), aliasMetaData.getSearchRouting(),
88-
aliasMetaData.writeIndex(), aliasMetaData.isHidden());
84+
CompressedXContent aliasMetaDataFilter = aliasMetaData.getFilter();
85+
Query filterQuery = (aliasMetaDataFilter != null) ? StringQuery.builder(aliasMetaDataFilter.string()).build()
86+
: null;
87+
return AliasData.of(aliasMetaData.alias(), filterQuery, aliasMetaData.indexRouting(),
88+
aliasMetaData.getSearchRouting(), aliasMetaData.writeIndex(), aliasMetaData.isHidden());
8989
}
9090
// endregion
9191

src/main/java/org/springframework/data/elasticsearch/core/index/AliasData.java

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
*/
1616
package org.springframework.data.elasticsearch.core.index;
1717

18-
import org.springframework.data.elasticsearch.core.document.Document;
18+
import org.springframework.data.elasticsearch.core.query.Query;
1919
import org.springframework.lang.Nullable;
2020

2121
/**
@@ -24,34 +24,35 @@
2424
* @author Peter-Josef Meisch
2525
*/
2626
public class AliasData {
27-
private String alias;
28-
@Nullable Document filter;
29-
@Nullable private String indexRouting;
30-
@Nullable private String searchRouting;
31-
@Nullable private Boolean isWriteIndex;
32-
@Nullable private Boolean isHidden;
27+
private final String alias;
28+
@Nullable private final Query filterQuery;
29+
@Nullable private final String indexRouting;
30+
@Nullable private final String searchRouting;
31+
@Nullable private final Boolean isWriteIndex;
32+
@Nullable private final Boolean isHidden;
3333

34-
private AliasData(String alias, @Nullable Document filter, @Nullable String indexRouting,
35-
@Nullable String searchRouting, Boolean isWriteIndex, Boolean isHidden) {
34+
private AliasData(String alias, @Nullable Query filterQuery, @Nullable String indexRouting,
35+
@Nullable String searchRouting, @Nullable Boolean isWriteIndex, @Nullable Boolean isHidden) {
3636
this.alias = alias;
37-
this.filter = filter;
37+
this.filterQuery = filterQuery;
3838
this.indexRouting = indexRouting;
3939
this.searchRouting = searchRouting;
4040
this.isWriteIndex = isWriteIndex;
4141
this.isHidden = isHidden;
4242
}
4343

44-
public static AliasData of(String alias, @Nullable Document filter, @Nullable String indexRouting,
44+
public static AliasData of(String alias, @Nullable Query filterQuery, @Nullable String indexRouting,
4545
@Nullable String searchRouting, @Nullable Boolean isWriteIndex, @Nullable Boolean isHidden) {
46-
return new AliasData(alias, filter, indexRouting, searchRouting, isWriteIndex, isHidden);
46+
return new AliasData(alias, filterQuery, indexRouting, searchRouting, isWriteIndex, isHidden);
4747
}
4848

4949
public String getAlias() {
5050
return alias;
5151
}
5252

53-
public Document getFilter() {
54-
return filter;
53+
@Nullable
54+
public Query getFilterQuery() {
55+
return filterQuery;
5556
}
5657

5758
@Nullable

src/test/java/org/springframework/data/elasticsearch/core/index/IndexTemplateIntegrationTests.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
*/
1616
package org.springframework.data.elasticsearch.core.index;
1717

18-
import static org.assertj.core.api.Assertions.*;
19-
import static org.skyscreamer.jsonassert.JSONAssert.*;
18+
import static org.assertj.core.api.Assertions.assertThat;
19+
import static org.skyscreamer.jsonassert.JSONAssert.assertEquals;
2020

2121
import java.util.Map;
2222
import java.util.UUID;
@@ -35,6 +35,8 @@
3535
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
3636
import org.springframework.data.elasticsearch.core.IndexOperations;
3737
import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
38+
import org.springframework.data.elasticsearch.core.query.Criteria;
39+
import org.springframework.data.elasticsearch.core.query.CriteriaQuery;
3840
import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest;
3941
import org.springframework.lang.Nullable;
4042

@@ -86,15 +88,19 @@ void shouldReturnNullOnNonExistingGetTemplate() {
8688
}
8789

8890
@DisabledIf(value = "rhlcWithCluster8", disabledReason = "RHLC fails to parse response from ES 8.2")
89-
@Test // DATAES-612
91+
@Test // DATAES-612, #2073
9092
void shouldGetTemplate() throws JSONException {
9193
IndexOperations indexOps = operations.indexOps(IndexCoordinates.of("dont-care"));
9294

9395
org.springframework.data.elasticsearch.core.document.Document mapping = indexOps.createMapping(TemplateClass.class);
9496
Settings settings = indexOps.createSettings(TemplateClass.class);
9597

96-
AliasActions aliasActions = new AliasActions(
97-
new AliasAction.Add(AliasActionParameters.builderForTemplate().withAliases("alias1", "alias2").build()));
98+
var filterQuery = CriteriaQuery.builder(Criteria.where("message").is("foo")).build();
99+
AliasActions aliasActions = new AliasActions(new AliasAction.Add(AliasActionParameters.builderForTemplate() //
100+
.withAliases("alias1", "alias2") //
101+
.withFilterQuery(filterQuery, TemplateClass.class)//
102+
.build()));
103+
98104
PutTemplateRequest putTemplateRequest = PutTemplateRequest.builder("test-template", "log-*") //
99105
.withSettings(settings) //
100106
.withMappings(mapping) //
@@ -117,7 +123,9 @@ void shouldGetTemplate() throws JSONException {
117123
assertThat(aliases).hasSize(2);
118124
AliasData alias1 = aliases.get("alias1");
119125
assertThat(alias1.getAlias()).isEqualTo("alias1");
126+
assertThat(alias1.getFilterQuery()).isNotNull();
120127
AliasData alias2 = aliases.get("alias2");
128+
assertThat(alias2.getFilterQuery()).isNotNull();
121129
assertThat(alias2.getAlias()).isEqualTo("alias2");
122130
assertThat(templateData.getOrder()).isEqualTo(putTemplateRequest.getOrder());
123131
assertThat(templateData.getVersion()).isEqualTo(putTemplateRequest.getVersion());

0 commit comments

Comments
 (0)