implement getAlias variants.

Original Pull Request #2213
Closes #2209
This commit is contained in:
Peter-Josef Meisch 2022-07-09 23:40:34 +02:00 committed by GitHub
parent e0acc5a2f9
commit b9dacc9a5e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 79 additions and 3 deletions

View File

@ -277,12 +277,22 @@ public class IndicesTemplate extends ChildTemplate<ElasticsearchIndicesClient> i
@Override
public Map<String, Set<AliasData>> getAliases(String... aliasNames) {
throw new UnsupportedOperationException("not implemented");
Assert.notNull(aliasNames, "aliasNames must not be null");
GetAliasRequest getAliasRequest = requestConverter.indicesGetAliasRequest(aliasNames, null);
var getAliasResponse = execute(client -> client.getAlias(getAliasRequest));
return responseConverter.indicesGetAliasData(getAliasResponse);
}
@Override
public Map<String, Set<AliasData>> getAliasesForIndex(String... indexNames) {
throw new UnsupportedOperationException("not implemented");
Assert.notNull(indexNames, "indexNames must not be null");
GetAliasRequest getAliasRequest = requestConverter.indicesGetAliasRequest(null, indexNames);
var getAliasResponse = execute(client -> client.getAlias(getAliasRequest));
return responseConverter.indicesGetAliasData(getAliasResponse);
}
@Override

View File

@ -71,6 +71,6 @@ public class AliasData {
@Nullable
public Boolean isHidden() {
return isHidden;
return Boolean.TRUE.equals(isHidden);
}
}

View File

@ -18,6 +18,8 @@ package org.springframework.data.elasticsearch.core.indices;
import static org.assertj.core.api.Assertions.*;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.assertj.core.api.SoftAssertions;
import org.json.JSONException;
@ -120,6 +122,62 @@ public abstract class IndexOperationsIntegrationTests implements NewElasticsearc
JSONAssert.assertEquals(expectedMappings, indexInformation.getMapping().toJson(), false);
}
@Test // #2209
@DisplayName("should return AliasData with getAliases method")
void shouldReturnAliasDataWithGetAliasesMethod() {
String indexName = indexNameProvider.indexName();
String aliasName = "testindexinformationindex";
AliasActionParameters parameters = AliasActionParameters.builder().withAliases(aliasName).withIndices(indexName)
.withIsHidden(false).withIsWriteIndex(false).withRouting("indexrouting").withSearchRouting("searchrouting")
.build();
indexOperations.alias(new AliasActions(new AliasAction.Add(parameters)));
Map<String, Set<AliasData>> aliases = indexOperations.getAliases(aliasName);
assertThat(aliases).hasSize(1);
Set<AliasData> aliasDataSet = aliases.get(indexName);
assertThat(aliasDataSet).hasSize(1);
AliasData aliasData = aliasDataSet.iterator().next();
SoftAssertions softly = new SoftAssertions();
softly.assertThat(aliasData.getAlias()).isEqualTo(aliasName);
softly.assertThat(aliasData.isHidden()).isEqualTo(false);
softly.assertThat(aliasData.isWriteIndex()).isEqualTo(false);
softly.assertThat(aliasData.getIndexRouting()).isEqualTo("indexrouting");
softly.assertThat(aliasData.getSearchRouting()).isEqualTo("searchrouting");
softly.assertAll();
}
@Test // #2209
@DisplayName("should return AliasData with getAliasesForIndex method")
void shouldReturnAliasDataWithGetAliasesForIndexMethod() {
String indexName = indexNameProvider.indexName();
String aliasName = "testindexinformationindex";
AliasActionParameters parameters = AliasActionParameters.builder().withAliases(aliasName).withIndices(indexName)
.withIsHidden(false).withIsWriteIndex(false).withRouting("indexrouting").withSearchRouting("searchrouting")
.build();
indexOperations.alias(new AliasActions(new AliasAction.Add(parameters)));
Map<String, Set<AliasData>> aliases = indexOperations.getAliasesForIndex(indexName);
assertThat(aliases).hasSize(1);
Set<AliasData> aliasDataSet = aliases.get(indexName);
assertThat(aliasDataSet).hasSize(1);
AliasData aliasData = aliasDataSet.iterator().next();
SoftAssertions softly = new SoftAssertions();
softly.assertThat(aliasData.getAlias()).isEqualTo(aliasName);
softly.assertThat(aliasData.isHidden()).isEqualTo(false);
softly.assertThat(aliasData.isWriteIndex()).isEqualTo(false);
softly.assertThat(aliasData.getIndexRouting()).isEqualTo("indexrouting");
softly.assertThat(aliasData.getSearchRouting()).isEqualTo("searchrouting");
softly.assertAll();
}
@Document(indexName = "#{@indexNameProvider.indexName()}")
@Setting(settingPath = "settings/test-settings.json")
@Mapping(mappingPath = "mappings/test-mappings.json")

View File

@ -31,6 +31,7 @@ import org.springframework.data.elasticsearch.client.erhlc.RestClients;
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
import org.springframework.data.elasticsearch.core.RefreshPolicy;
import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter;
import org.springframework.http.HttpHeaders;
/**
* Configuration for Spring Data Elasticsearch using {@link ElasticsearchRestTemplate}.
@ -42,6 +43,7 @@ import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverte
@Configuration
public class ElasticsearchRestTemplateConfiguration extends AbstractElasticsearchConfiguration {
@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
@Autowired private ClusterConnectionInfo clusterConnectionInfo;
@Override
@ -71,7 +73,13 @@ public class ElasticsearchRestTemplateConfiguration extends AbstractElasticsearc
configurationBuilder.withBasicAuth(user, password);
}
HttpHeaders defaultHeaders = new HttpHeaders();
defaultHeaders.add("Accept", "application/vnd.elasticsearch+json;compatible-with=7");
defaultHeaders.add("Content-Type", "application/vnd.elasticsearch+json;compatible-with=7");
//noinspection resource
return RestClients.create(configurationBuilder //
.withDefaultHeaders(defaultHeaders) //
.withConnectTimeout(Duration.ofSeconds(20)) //
.withSocketTimeout(Duration.ofSeconds(20)) //
.build()) //