mirror of
https://github.com/spring-projects/spring-data-elasticsearch.git
synced 2025-06-13 07:32:11 +00:00
Change AliasData filter property to Query.
Original Pull Request #2374 Closes #2073
This commit is contained in:
parent
9f63369c4b
commit
f6c6f64f04
@ -0,0 +1,11 @@
|
||||
[[elasticsearch-migration-guide-5.0-5.1]]
|
||||
= Upgrading from 5.0.x to 5.1.x
|
||||
|
||||
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.
|
||||
|
||||
[[elasticsearch-migration-guide-5.0-5.1.breaking-changes]]
|
||||
== Breaking Changes
|
||||
|
||||
In the `org.springframework.data.elasticsearch.core.index.AliasData` class, which is used for alias information
|
||||
returned from Elasticsearch, the property `filter` (of type `Document`) is replaced by `filterQuery` which is of type
|
||||
`org.springframework.data.elasticsearch.core.query.Query`.
|
@ -15,7 +15,7 @@
|
||||
*/
|
||||
package org.springframework.data.elasticsearch.client.elc;
|
||||
|
||||
import static org.springframework.data.elasticsearch.client.elc.JsonUtils.*;
|
||||
import static org.springframework.data.elasticsearch.client.elc.JsonUtils.toJson;
|
||||
|
||||
import co.elastic.clients.elasticsearch._types.BulkIndexByScrollFailure;
|
||||
import co.elastic.clients.elasticsearch._types.ErrorCause;
|
||||
@ -26,7 +26,16 @@ import co.elastic.clients.elasticsearch.core.DeleteByQueryResponse;
|
||||
import co.elastic.clients.elasticsearch.core.UpdateByQueryResponse;
|
||||
import co.elastic.clients.elasticsearch.core.mget.MultiGetError;
|
||||
import co.elastic.clients.elasticsearch.core.mget.MultiGetResponseItem;
|
||||
import co.elastic.clients.elasticsearch.indices.*;
|
||||
import co.elastic.clients.elasticsearch.indices.Alias;
|
||||
import co.elastic.clients.elasticsearch.indices.AliasDefinition;
|
||||
import co.elastic.clients.elasticsearch.indices.GetAliasResponse;
|
||||
import co.elastic.clients.elasticsearch.indices.GetIndexResponse;
|
||||
import co.elastic.clients.elasticsearch.indices.GetIndicesSettingsResponse;
|
||||
import co.elastic.clients.elasticsearch.indices.GetMappingResponse;
|
||||
import co.elastic.clients.elasticsearch.indices.GetTemplateResponse;
|
||||
import co.elastic.clients.elasticsearch.indices.IndexSettings;
|
||||
import co.elastic.clients.elasticsearch.indices.IndexState;
|
||||
import co.elastic.clients.elasticsearch.indices.TemplateMapping;
|
||||
import co.elastic.clients.elasticsearch.indices.get_mapping.IndexMappingRecord;
|
||||
import co.elastic.clients.json.JsonpMapper;
|
||||
|
||||
@ -51,6 +60,7 @@ import org.springframework.data.elasticsearch.core.index.Settings;
|
||||
import org.springframework.data.elasticsearch.core.index.TemplateData;
|
||||
import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
|
||||
import org.springframework.data.elasticsearch.core.query.ByQueryResponse;
|
||||
import org.springframework.data.elasticsearch.core.query.StringQuery;
|
||||
import org.springframework.data.elasticsearch.core.reindex.ReindexResponse;
|
||||
import org.springframework.data.elasticsearch.support.DefaultStringObjectMap;
|
||||
import org.springframework.lang.Nullable;
|
||||
@ -190,18 +200,19 @@ class ResponseConverter {
|
||||
}
|
||||
|
||||
private AliasData indicesGetAliasData(String aliasName, Alias alias) {
|
||||
|
||||
Query filter = alias.filter();
|
||||
String filterJson = filter != null ? toJson(filter, jsonpMapper) : null;
|
||||
Document filterDocument = filterJson != null ? Document.parse(filterJson) : null;
|
||||
return AliasData.of(aliasName, filterDocument, alias.indexRouting(), alias.searchRouting(), alias.isWriteIndex(),
|
||||
var filterQuery = filterJson != null ? StringQuery.builder(filterJson).build() : null;
|
||||
return AliasData.of(aliasName, filterQuery, alias.indexRouting(), alias.searchRouting(), alias.isWriteIndex(),
|
||||
alias.isHidden());
|
||||
}
|
||||
|
||||
private AliasData indicesGetAliasData(String aliasName, AliasDefinition alias) {
|
||||
Query filter = alias.filter();
|
||||
String filterJson = filter != null ? toJson(filter, jsonpMapper) : null;
|
||||
Document filterDocument = filterJson != null ? Document.parse(filterJson) : null;
|
||||
return AliasData.of(aliasName, filterDocument, alias.indexRouting(), alias.searchRouting(), alias.isWriteIndex(),
|
||||
var filterQuery = filterJson != null ? StringQuery.builder(filterJson).build() : null;
|
||||
return AliasData.of(aliasName, filterQuery, alias.indexRouting(), alias.searchRouting(), alias.isWriteIndex(),
|
||||
null);
|
||||
}
|
||||
|
||||
@ -280,7 +291,7 @@ class ResponseConverter {
|
||||
.withThrottledMillis(reindexResponse.throttledMillis()) //
|
||||
.withRequestsPerSecond(reindexResponse.requestsPerSecond()) //
|
||||
.withThrottledUntilMillis(reindexResponse.throttledUntilMillis()) //
|
||||
.withFailures(failures) //
|
||||
.withFailures(failures) //
|
||||
.build();
|
||||
}
|
||||
|
||||
|
@ -48,6 +48,8 @@ import org.springframework.data.elasticsearch.core.index.AliasData;
|
||||
import org.springframework.data.elasticsearch.core.index.Settings;
|
||||
import org.springframework.data.elasticsearch.core.index.TemplateData;
|
||||
import org.springframework.data.elasticsearch.core.query.ByQueryResponse;
|
||||
import org.springframework.data.elasticsearch.core.query.Query;
|
||||
import org.springframework.data.elasticsearch.core.query.StringQuery;
|
||||
import org.springframework.data.elasticsearch.core.reindex.ReindexResponse;
|
||||
import org.springframework.lang.Nullable;
|
||||
import org.springframework.util.Assert;
|
||||
@ -78,14 +80,12 @@ public class ResponseConverter {
|
||||
}
|
||||
|
||||
public static AliasData toAliasData(AliasMetadata aliasMetaData) {
|
||||
Document filter = null;
|
||||
CompressedXContent aliasMetaDataFilter = aliasMetaData.getFilter();
|
||||
|
||||
if (aliasMetaDataFilter != null) {
|
||||
filter = Document.parse(aliasMetaDataFilter.string());
|
||||
}
|
||||
return AliasData.of(aliasMetaData.alias(), filter, aliasMetaData.indexRouting(), aliasMetaData.getSearchRouting(),
|
||||
aliasMetaData.writeIndex(), aliasMetaData.isHidden());
|
||||
CompressedXContent aliasMetaDataFilter = aliasMetaData.getFilter();
|
||||
Query filterQuery = (aliasMetaDataFilter != null) ? StringQuery.builder(aliasMetaDataFilter.string()).build()
|
||||
: null;
|
||||
return AliasData.of(aliasMetaData.alias(), filterQuery, aliasMetaData.indexRouting(),
|
||||
aliasMetaData.getSearchRouting(), aliasMetaData.writeIndex(), aliasMetaData.isHidden());
|
||||
}
|
||||
// endregion
|
||||
|
||||
|
@ -15,7 +15,7 @@
|
||||
*/
|
||||
package org.springframework.data.elasticsearch.core.index;
|
||||
|
||||
import org.springframework.data.elasticsearch.core.document.Document;
|
||||
import org.springframework.data.elasticsearch.core.query.Query;
|
||||
import org.springframework.lang.Nullable;
|
||||
|
||||
/**
|
||||
@ -24,34 +24,35 @@ import org.springframework.lang.Nullable;
|
||||
* @author Peter-Josef Meisch
|
||||
*/
|
||||
public class AliasData {
|
||||
private String alias;
|
||||
@Nullable Document filter;
|
||||
@Nullable private String indexRouting;
|
||||
@Nullable private String searchRouting;
|
||||
@Nullable private Boolean isWriteIndex;
|
||||
@Nullable private Boolean isHidden;
|
||||
private final String alias;
|
||||
@Nullable private final Query filterQuery;
|
||||
@Nullable private final String indexRouting;
|
||||
@Nullable private final String searchRouting;
|
||||
@Nullable private final Boolean isWriteIndex;
|
||||
@Nullable private final Boolean isHidden;
|
||||
|
||||
private AliasData(String alias, @Nullable Document filter, @Nullable String indexRouting,
|
||||
@Nullable String searchRouting, Boolean isWriteIndex, Boolean isHidden) {
|
||||
private AliasData(String alias, @Nullable Query filterQuery, @Nullable String indexRouting,
|
||||
@Nullable String searchRouting, @Nullable Boolean isWriteIndex, @Nullable Boolean isHidden) {
|
||||
this.alias = alias;
|
||||
this.filter = filter;
|
||||
this.filterQuery = filterQuery;
|
||||
this.indexRouting = indexRouting;
|
||||
this.searchRouting = searchRouting;
|
||||
this.isWriteIndex = isWriteIndex;
|
||||
this.isHidden = isHidden;
|
||||
}
|
||||
|
||||
public static AliasData of(String alias, @Nullable Document filter, @Nullable String indexRouting,
|
||||
public static AliasData of(String alias, @Nullable Query filterQuery, @Nullable String indexRouting,
|
||||
@Nullable String searchRouting, @Nullable Boolean isWriteIndex, @Nullable Boolean isHidden) {
|
||||
return new AliasData(alias, filter, indexRouting, searchRouting, isWriteIndex, isHidden);
|
||||
return new AliasData(alias, filterQuery, indexRouting, searchRouting, isWriteIndex, isHidden);
|
||||
}
|
||||
|
||||
public String getAlias() {
|
||||
return alias;
|
||||
}
|
||||
|
||||
public Document getFilter() {
|
||||
return filter;
|
||||
@Nullable
|
||||
public Query getFilterQuery() {
|
||||
return filterQuery;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
@ -15,8 +15,8 @@
|
||||
*/
|
||||
package org.springframework.data.elasticsearch.core.index;
|
||||
|
||||
import static org.assertj.core.api.Assertions.*;
|
||||
import static org.skyscreamer.jsonassert.JSONAssert.*;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.skyscreamer.jsonassert.JSONAssert.assertEquals;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
@ -35,6 +35,8 @@ import org.springframework.data.elasticsearch.core.AbstractElasticsearchTemplate
|
||||
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
|
||||
import org.springframework.data.elasticsearch.core.IndexOperations;
|
||||
import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
|
||||
import org.springframework.data.elasticsearch.core.query.Criteria;
|
||||
import org.springframework.data.elasticsearch.core.query.CriteriaQuery;
|
||||
import org.springframework.data.elasticsearch.junit.jupiter.SpringIntegrationTest;
|
||||
import org.springframework.lang.Nullable;
|
||||
|
||||
@ -86,15 +88,19 @@ public abstract class IndexTemplateIntegrationTests implements NewElasticsearchC
|
||||
}
|
||||
|
||||
@DisabledIf(value = "rhlcWithCluster8", disabledReason = "RHLC fails to parse response from ES 8.2")
|
||||
@Test // DATAES-612
|
||||
@Test // DATAES-612, #2073
|
||||
void shouldGetTemplate() throws JSONException {
|
||||
IndexOperations indexOps = operations.indexOps(IndexCoordinates.of("dont-care"));
|
||||
|
||||
org.springframework.data.elasticsearch.core.document.Document mapping = indexOps.createMapping(TemplateClass.class);
|
||||
Settings settings = indexOps.createSettings(TemplateClass.class);
|
||||
|
||||
AliasActions aliasActions = new AliasActions(
|
||||
new AliasAction.Add(AliasActionParameters.builderForTemplate().withAliases("alias1", "alias2").build()));
|
||||
var filterQuery = CriteriaQuery.builder(Criteria.where("message").is("foo")).build();
|
||||
AliasActions aliasActions = new AliasActions(new AliasAction.Add(AliasActionParameters.builderForTemplate() //
|
||||
.withAliases("alias1", "alias2") //
|
||||
.withFilterQuery(filterQuery, TemplateClass.class)//
|
||||
.build()));
|
||||
|
||||
PutTemplateRequest putTemplateRequest = PutTemplateRequest.builder("test-template", "log-*") //
|
||||
.withSettings(settings) //
|
||||
.withMappings(mapping) //
|
||||
@ -117,7 +123,9 @@ public abstract class IndexTemplateIntegrationTests implements NewElasticsearchC
|
||||
assertThat(aliases).hasSize(2);
|
||||
AliasData alias1 = aliases.get("alias1");
|
||||
assertThat(alias1.getAlias()).isEqualTo("alias1");
|
||||
assertThat(alias1.getFilterQuery()).isNotNull();
|
||||
AliasData alias2 = aliases.get("alias2");
|
||||
assertThat(alias2.getFilterQuery()).isNotNull();
|
||||
assertThat(alias2.getAlias()).isEqualTo("alias2");
|
||||
assertThat(templateData.getOrder()).isEqualTo(putTemplateRequest.getOrder());
|
||||
assertThat(templateData.getVersion()).isEqualTo(putTemplateRequest.getVersion());
|
||||
|
Loading…
x
Reference in New Issue
Block a user