Skip to content

Commit 19da170

Browse files
committed
DATAES-631 - refresh ops refactoring.
1 parent 7fe6f54 commit 19da170

File tree

7 files changed

+66
-55
lines changed

7 files changed

+66
-55
lines changed

src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchOperations.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -478,17 +478,17 @@ default boolean indexExists(Class<?> clazz) {
478478
/**
479479
* refresh the index(es)
480480
*
481-
* @param indexNames
481+
* @param index
482482
*/
483-
void refresh(String... indexNames);
483+
void refresh(IndexCoordinates index);
484484

485485
/**
486486
* refresh the index
487487
*
488488
* @param clazz
489489
*/
490490
default <T> void refresh(Class<T> clazz) {
491-
refresh(getIndexCoordinatesFor(clazz).getIndexNames());
491+
refresh(getIndexCoordinatesFor(clazz));
492492
}
493493

494494
/**

src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchRestTemplate.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -951,12 +951,12 @@ private void prepareSort(Query query, SearchSourceBuilder sourceBuilder,
951951
}
952952

953953
@Override
954-
public void refresh(String... indexNames) {
955-
Assert.notNull(indexNames, "No index defined for refresh()");
954+
public void refresh(IndexCoordinates index) {
955+
Assert.notNull(index, "No index defined for refresh()");
956956
try {
957-
client.indices().refresh(refreshRequest(indexNames), RequestOptions.DEFAULT);
957+
client.indices().refresh(refreshRequest(index.getIndexNames()), RequestOptions.DEFAULT);
958958
} catch (IOException e) {
959-
throw new ElasticsearchException("failed to refresh index: " + Arrays.toString(indexNames), e);
959+
throw new ElasticsearchException("failed to refresh index: " + index, e);
960960
}
961961
}
962962

src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -742,9 +742,9 @@ private void prepareSort(Query query, SearchRequestBuilder searchRequestBuilder,
742742
}
743743

744744
@Override
745-
public void refresh(String... indexNames) {
746-
Assert.notNull(indexNames, "No index defined for refresh()");
747-
client.admin().indices().refresh(refreshRequest(indexNames)).actionGet();
745+
public void refresh(IndexCoordinates index) {
746+
Assert.notNull(index, "No index defined for refresh()");
747+
client.admin().indices().refresh(refreshRequest(index.getIndexNames())).actionGet();
748748
}
749749

750750
@Override

src/main/java/org/springframework/data/elasticsearch/core/IndexCoordinates.java

+10
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717

1818
import org.springframework.util.Assert;
1919

20+
import java.util.Arrays;
21+
2022
/**
2123
* Value object encapsulating index name(s) and index type(s).
2224
*
@@ -77,4 +79,12 @@ public String getTypeName() {
7779
public String[] getTypeNames() {
7880
return typeNames;
7981
}
82+
83+
@Override
84+
public String toString() {
85+
return "IndexCoordinates{" +
86+
"indexNames=" + Arrays.toString(indexNames) +
87+
", typeNames=" + Arrays.toString(typeNames) +
88+
'}';
89+
}
8090
}

src/main/java/org/springframework/data/elasticsearch/repository/support/AbstractElasticsearchRepository.java

+7-6
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ public long count() {
160160
public <S extends T> S save(S entity) {
161161
Assert.notNull(entity, "Cannot save 'null' entity.");
162162
elasticsearchOperations.index(createIndexQuery(entity), getIndexCoordinates());
163-
elasticsearchOperations.refresh(entityInformation.getIndexName());
163+
elasticsearchOperations.refresh(getIndexCoordinates());
164164
return entity;
165165
}
166166

@@ -189,7 +189,7 @@ public <S extends T> Iterable<S> saveAll(Iterable<S> entities) {
189189

190190
if (!queries.isEmpty()) {
191191
elasticsearchOperations.bulkIndex(queries, getIndexCoordinates());
192-
elasticsearchOperations.refresh(entityInformation.getIndexName());
192+
elasticsearchOperations.refresh(getIndexCoordinates());
193193
}
194194

195195
return entities;
@@ -243,14 +243,14 @@ public void deleteById(ID id) {
243243
Assert.notNull(id, "Cannot delete entity with id 'null'.");
244244
IndexCoordinates indexCoordinates = getIndexCoordinates();
245245
elasticsearchOperations.delete(stringIdRepresentation(id), indexCoordinates);
246-
elasticsearchOperations.refresh(indexCoordinates.getIndexName());
246+
elasticsearchOperations.refresh(indexCoordinates);
247247
}
248248

249249
@Override
250250
public void delete(T entity) {
251251
Assert.notNull(entity, "Cannot delete 'null' entity.");
252252
deleteById(extractIdFromBean(entity));
253-
elasticsearchOperations.refresh(entityInformation.getIndexName());
253+
elasticsearchOperations.refresh(getIndexCoordinates());
254254
}
255255

256256
@Override
@@ -265,8 +265,9 @@ public void deleteAll(Iterable<? extends T> entities) {
265265
public void deleteAll() {
266266
DeleteQuery deleteQuery = new DeleteQuery();
267267
deleteQuery.setQuery(matchAllQuery());
268-
elasticsearchOperations.delete(deleteQuery, getIndexCoordinates());
269-
elasticsearchOperations.refresh(entityInformation.getIndexName());
268+
IndexCoordinates indexCoordinates = getIndexCoordinates();
269+
elasticsearchOperations.delete(deleteQuery, indexCoordinates);
270+
elasticsearchOperations.refresh(indexCoordinates);
270271
}
271272

272273
@Override

src/test/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplateTests.java

+31-31
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,7 @@ public void shouldPassIndicesOptionsForGivenSearchQuery() {
341341
.withObject(sampleEntity).build();
342342

343343
elasticsearchTemplate.index(idxQuery, IndexCoordinates.of(INDEX_1_NAME, "test-type"));
344-
elasticsearchTemplate.refresh(INDEX_1_NAME);
344+
elasticsearchTemplate.refresh(IndexCoordinates.of(INDEX_1_NAME));
345345

346346
// when
347347
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
@@ -496,22 +496,22 @@ public void shouldDeleteAcrossIndex() {
496496
.withObject(sampleEntity).build();
497497

498498
elasticsearchTemplate.index(idxQuery1, IndexCoordinates.of(INDEX_1_NAME, "test-type"));
499-
elasticsearchTemplate.refresh(INDEX_1_NAME);
499+
elasticsearchTemplate.refresh(IndexCoordinates.of(INDEX_1_NAME));
500500

501501
IndexQuery idxQuery2 = new IndexQueryBuilder().withId(randomNumeric(5))
502502
.withObject(sampleEntity).build();
503503

504504
elasticsearchTemplate.index(idxQuery2, IndexCoordinates.of(INDEX_2_NAME, "test-type"));
505-
elasticsearchTemplate.refresh(INDEX_2_NAME);
505+
elasticsearchTemplate.refresh(IndexCoordinates.of(INDEX_2_NAME));
506506

507507
// when
508508
DeleteQuery deleteQuery = new DeleteQuery();
509509
deleteQuery.setQuery(typeQuery(TYPE_NAME));
510510

511511
elasticsearchTemplate.delete(deleteQuery, IndexCoordinates.of("test-index-*", TYPE_NAME));
512512

513-
elasticsearchTemplate.refresh(INDEX_1_NAME);
514-
elasticsearchTemplate.refresh(INDEX_2_NAME);
513+
elasticsearchTemplate.refresh(IndexCoordinates.of(INDEX_1_NAME));
514+
elasticsearchTemplate.refresh(IndexCoordinates.of(INDEX_2_NAME));
515515

516516
// then
517517
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("message", "foo"))
@@ -536,22 +536,22 @@ public void shouldDeleteAcrossIndexWhenNoMatchingDataPresent() {
536536
.withObject(sampleEntity).build();
537537

538538
elasticsearchTemplate.index(idxQuery1, IndexCoordinates.of(INDEX_1_NAME, "test-type"));
539-
elasticsearchTemplate.refresh(INDEX_1_NAME);
539+
elasticsearchTemplate.refresh(IndexCoordinates.of(INDEX_1_NAME));
540540

541541
IndexQuery idxQuery2 = new IndexQueryBuilder().withId(randomNumeric(5))
542542
.withObject(sampleEntity).build();
543543

544544
elasticsearchTemplate.index(idxQuery2, IndexCoordinates.of(INDEX_2_NAME, "test-type"));
545-
elasticsearchTemplate.refresh(INDEX_2_NAME);
545+
elasticsearchTemplate.refresh(IndexCoordinates.of(INDEX_2_NAME));
546546

547547
// when
548548
DeleteQuery deleteQuery = new DeleteQuery();
549549
deleteQuery.setQuery(termQuery("message", "negative"));
550550

551551
elasticsearchTemplate.delete(deleteQuery, IndexCoordinates.of("test-index-*", TYPE_NAME));
552552

553-
elasticsearchTemplate.refresh(INDEX_1_NAME);
554-
elasticsearchTemplate.refresh(INDEX_2_NAME);
553+
elasticsearchTemplate.refresh(IndexCoordinates.of(INDEX_1_NAME));
554+
elasticsearchTemplate.refresh(IndexCoordinates.of(INDEX_2_NAME));
555555

556556
// then
557557
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("message", "positive"))
@@ -1517,8 +1517,9 @@ public void shouldPassIndicesOptionsForGivenSearchScrollQuery() {
15171517
IndexQuery idxQuery = new IndexQueryBuilder().withId(sampleEntity.getId())
15181518
.withObject(sampleEntity).build();
15191519

1520-
elasticsearchTemplate.index(idxQuery, IndexCoordinates.of(INDEX_1_NAME, "test-type"));
1521-
elasticsearchTemplate.refresh(INDEX_1_NAME);
1520+
IndexCoordinates index = IndexCoordinates.of(INDEX_1_NAME, "test-type");
1521+
elasticsearchTemplate.index(idxQuery, index);
1522+
elasticsearchTemplate.refresh(index);
15221523

15231524
// when
15241525
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
@@ -1619,7 +1620,7 @@ public void shouldDeleteDocumentBySpecifiedTypeUsingDeleteQuery() {
16191620
DeleteQuery deleteQuery = new DeleteQuery();
16201621
deleteQuery.setQuery(termQuery("id", documentId));
16211622
elasticsearchTemplate.delete(deleteQuery, indexCoordinates);
1622-
elasticsearchTemplate.refresh(INDEX_NAME_SAMPLE_ENTITY);
1623+
elasticsearchTemplate.refresh(IndexCoordinates.of(INDEX_NAME_SAMPLE_ENTITY));
16231624

16241625
// then
16251626
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("id", documentId)).build();
@@ -1816,7 +1817,7 @@ public void shouldIndexMapWithIndexNameAndTypeAtRuntime() {
18161817

18171818
// when
18181819
elasticsearchTemplate.bulkIndex(indexQueries, IndexCoordinates.of(INDEX_NAME_SAMPLE_ENTITY, TYPE_NAME));
1819-
elasticsearchTemplate.refresh(INDEX_NAME_SAMPLE_ENTITY);
1820+
elasticsearchTemplate.refresh(IndexCoordinates.of(INDEX_NAME_SAMPLE_ENTITY));
18201821

18211822
// then
18221823
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withIndices(INDEX_NAME_SAMPLE_ENTITY)
@@ -1842,7 +1843,7 @@ public void shouldIndexGteEntityWithVersionType() {
18421843
.withObject(entity);
18431844

18441845
elasticsearchTemplate.index(indexQueryBuilder.build(), IndexCoordinates.of(INDEX_NAME_SAMPLE_ENTITY, TYPE_NAME));
1845-
elasticsearchTemplate.refresh(INDEX_NAME_SAMPLE_ENTITY);
1846+
elasticsearchTemplate.refresh(IndexCoordinates.of(INDEX_NAME_SAMPLE_ENTITY));
18461847

18471848
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withIndices(INDEX_NAME_SAMPLE_ENTITY)
18481849
.withTypes(TYPE_NAME).withQuery(matchAllQuery()).build();
@@ -1854,7 +1855,7 @@ public void shouldIndexGteEntityWithVersionType() {
18541855

18551856
// reindex with same version
18561857
elasticsearchTemplate.index(indexQueryBuilder.build(), indexCoordinates);
1857-
elasticsearchTemplate.refresh(INDEX_NAME_SAMPLE_ENTITY);
1858+
elasticsearchTemplate.refresh(IndexCoordinates.of(INDEX_NAME_SAMPLE_ENTITY));
18581859

18591860
// reindex with version one below
18601861
assertThatThrownBy(() -> {
@@ -1873,7 +1874,7 @@ public void shouldIndexSampleEntityWithIndexAndTypeAtRuntime() {
18731874
IndexQuery indexQuery = new IndexQueryBuilder().withId(documentId).withObject(sampleEntity).build();
18741875

18751876
elasticsearchTemplate.index(indexQuery, IndexCoordinates.of(INDEX_NAME_SAMPLE_ENTITY, TYPE_NAME));
1876-
elasticsearchTemplate.refresh(INDEX_NAME_SAMPLE_ENTITY);
1877+
elasticsearchTemplate.refresh(IndexCoordinates.of(INDEX_NAME_SAMPLE_ENTITY));
18771878

18781879
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withIndices(INDEX_NAME_SAMPLE_ENTITY)
18791880
.withTypes(TYPE_NAME).withQuery(matchAllQuery()).build();
@@ -1992,8 +1993,8 @@ public void shouldReturnCountForGivenCriteriaQueryWithGivenMultiIndices() {
19921993

19931994
elasticsearchTemplate.index(indexQuery1, IndexCoordinates.of(INDEX_1_NAME, "test-type"));
19941995
elasticsearchTemplate.index(indexQuery2, IndexCoordinates.of(INDEX_2_NAME, "test-type"));
1995-
elasticsearchTemplate.refresh(INDEX_1_NAME);
1996-
elasticsearchTemplate.refresh(INDEX_2_NAME);
1996+
elasticsearchTemplate.refresh(IndexCoordinates.of(INDEX_1_NAME));
1997+
elasticsearchTemplate.refresh(IndexCoordinates.of(INDEX_2_NAME));
19971998

19981999
CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria());
19992000
criteriaQuery.addIndices(INDEX_1_NAME, INDEX_2_NAME);
@@ -2027,8 +2028,8 @@ public void shouldReturnCountForGivenSearchQueryWithGivenMultiIndices() {
20272028

20282029
elasticsearchTemplate.index(indexQuery1, IndexCoordinates.of(INDEX_1_NAME, "test-type"));
20292030
elasticsearchTemplate.index(indexQuery2, IndexCoordinates.of(INDEX_2_NAME, "test-type"));
2030-
elasticsearchTemplate.refresh(INDEX_1_NAME);
2031-
elasticsearchTemplate.refresh(INDEX_2_NAME);
2031+
elasticsearchTemplate.refresh(IndexCoordinates.of(INDEX_1_NAME));
2032+
elasticsearchTemplate.refresh(IndexCoordinates.of(INDEX_2_NAME));
20322033

20332034
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
20342035
.withIndices(INDEX_1_NAME, INDEX_2_NAME).build();
@@ -2046,8 +2047,7 @@ private void cleanUpIndices() {
20462047
elasticsearchTemplate.deleteIndex(INDEX_2_NAME);
20472048
elasticsearchTemplate.createIndex(INDEX_1_NAME);
20482049
elasticsearchTemplate.createIndex(INDEX_2_NAME);
2049-
elasticsearchTemplate.refresh(INDEX_1_NAME);
2050-
elasticsearchTemplate.refresh(INDEX_2_NAME);
2050+
elasticsearchTemplate.refresh(IndexCoordinates.of(new String[]{INDEX_1_NAME, INDEX_2_NAME}));
20512051
}
20522052

20532053
@Test // DATAES-71
@@ -2098,8 +2098,8 @@ public void shouldReturnCountForGivenCriteriaQueryWithGivenIndexNameForSpecificI
20982098

20992099
elasticsearchTemplate.index(indexQuery1, IndexCoordinates.of(INDEX_1_NAME, "test-type"));
21002100
elasticsearchTemplate.index(indexQuery2, IndexCoordinates.of(INDEX_2_NAME, "test-type"));
2101-
elasticsearchTemplate.refresh(INDEX_1_NAME);
2102-
elasticsearchTemplate.refresh(INDEX_2_NAME);
2101+
elasticsearchTemplate.refresh(IndexCoordinates.of(INDEX_1_NAME));
2102+
elasticsearchTemplate.refresh(IndexCoordinates.of(INDEX_2_NAME));
21032103

21042104
CriteriaQuery criteriaQuery = new CriteriaQuery(new Criteria());
21052105
criteriaQuery.addIndices(INDEX_1_NAME);
@@ -2132,8 +2132,8 @@ public void shouldReturnCountForGivenSearchQueryWithGivenIndexNameForSpecificInd
21322132

21332133
elasticsearchTemplate.index(indexQuery1, IndexCoordinates.of(INDEX_1_NAME, "test-type"));
21342134
elasticsearchTemplate.index(indexQuery2, IndexCoordinates.of(INDEX_2_NAME, "test-type"));
2135-
elasticsearchTemplate.refresh(INDEX_1_NAME);
2136-
elasticsearchTemplate.refresh(INDEX_2_NAME);
2135+
elasticsearchTemplate.refresh(IndexCoordinates.of(INDEX_1_NAME));
2136+
elasticsearchTemplate.refresh(IndexCoordinates.of(INDEX_2_NAME));
21372137

21382138
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).withIndices(INDEX_1_NAME)
21392139
.build();
@@ -2271,8 +2271,8 @@ public void shouldTestResultsAcrossMultipleIndices() {
22712271

22722272
elasticsearchTemplate.index(indexQuery1, IndexCoordinates.of(INDEX_1_NAME, "test-type"));
22732273
elasticsearchTemplate.index(indexQuery2, IndexCoordinates.of(INDEX_2_NAME, "test-type"));
2274-
elasticsearchTemplate.refresh(INDEX_1_NAME);
2275-
elasticsearchTemplate.refresh(INDEX_2_NAME);
2274+
elasticsearchTemplate.refresh(IndexCoordinates.of(INDEX_1_NAME));
2275+
elasticsearchTemplate.refresh(IndexCoordinates.of(INDEX_2_NAME));
22762276

22772277
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
22782278
.withIndices(INDEX_1_NAME, INDEX_2_NAME).build();
@@ -2301,8 +2301,8 @@ public void shouldComposeObjectsReturnedFromHeterogeneousIndexes() {
23012301

23022302
elasticsearchTemplate.index(indexQuery1, IndexCoordinates.of(INDEX_1_NAME, "hetro"));
23032303
elasticsearchTemplate.index(indexQuery2, IndexCoordinates.of(INDEX_2_NAME, "hetro"));
2304-
elasticsearchTemplate.refresh(INDEX_1_NAME);
2305-
elasticsearchTemplate.refresh(INDEX_2_NAME);
2304+
elasticsearchTemplate.refresh(IndexCoordinates.of(INDEX_1_NAME));
2305+
elasticsearchTemplate.refresh(IndexCoordinates.of(INDEX_2_NAME));
23062306

23072307
// when
23082308
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).withTypes("hetro")
@@ -2789,7 +2789,7 @@ public void shouldAddAliasWithGivenRoutingValue() {
27892789
.build();
27902790

27912791
elasticsearchTemplate.index(indexQuery, IndexCoordinates.of(alias, TYPE_NAME));
2792-
elasticsearchTemplate.refresh(INDEX_NAME_SAMPLE_ENTITY);
2792+
elasticsearchTemplate.refresh(IndexCoordinates.of(INDEX_NAME_SAMPLE_ENTITY));
27932793

27942794
NativeSearchQuery query = new NativeSearchQueryBuilder() //
27952795
.withQuery(matchAllQuery()) //

src/test/java/org/springframework/data/elasticsearch/core/ReactiveElasticsearchTemplateTests.java

+8-8
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,8 @@ public void insertWithExplicitIndexNameShouldOverwriteMetadata() {
168168
.expectNextCount(1)//
169169
.verifyComplete();
170170

171-
restTemplate.refresh(DEFAULT_INDEX);
172-
restTemplate.refresh(ALTERNATE_INDEX);
171+
restTemplate.refresh(IndexCoordinates.of(DEFAULT_INDEX));
172+
restTemplate.refresh(IndexCoordinates.of(ALTERNATE_INDEX));
173173

174174
assertThat(TestUtils.documentWithId(sampleEntity.getId()).existsIn(DEFAULT_INDEX)).isFalse();
175175
assertThat(TestUtils.documentWithId(sampleEntity.getId()).existsIn(ALTERNATE_INDEX)).isTrue();
@@ -258,8 +258,8 @@ public void findByIdWithExplicitIndexNameShouldOverwriteMetadata() {
258258
restTemplate.index(indexQuery, IndexCoordinates.of(ALTERNATE_INDEX, "test-type"));
259259
restTemplate.refresh(SampleEntity.class);
260260

261-
restTemplate.refresh(DEFAULT_INDEX);
262-
restTemplate.refresh(ALTERNATE_INDEX);
261+
restTemplate.refresh(IndexCoordinates.of(DEFAULT_INDEX));
262+
restTemplate.refresh(IndexCoordinates.of(ALTERNATE_INDEX));
263263

264264
template.findById(sampleEntity.getId(), SampleEntity.class) //
265265
.as(StepVerifier::create) //
@@ -585,8 +585,8 @@ public void shouldDeleteAcrossIndex() {
585585
.as(StepVerifier::create)//
586586
.verifyComplete();
587587

588-
restTemplate.refresh(thisIndex);
589-
restTemplate.refresh(thatIndex);
588+
restTemplate.refresh(IndexCoordinates.of(thisIndex));
589+
restTemplate.refresh(IndexCoordinates.of(thatIndex));
590590

591591
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder() //
592592
.withQuery(termQuery("message", "test")) //
@@ -615,8 +615,8 @@ public void shouldDeleteAcrossIndexWhenNoMatchingDataPresent() {
615615
.as(StepVerifier::create)//
616616
.verifyComplete();
617617

618-
restTemplate.refresh(thisIndex);
619-
restTemplate.refresh(thatIndex);
618+
restTemplate.refresh(IndexCoordinates.of(thisIndex));
619+
restTemplate.refresh(IndexCoordinates.of(thatIndex));
620620

621621
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder() //
622622
.withQuery(termQuery("message", "negative")) //

0 commit comments

Comments
 (0)