Skip to content

Commit 9ca5d93

Browse files
committed
Refactoring response status check to close issue VanRoy#27
1 parent 9c6751d commit 9ca5d93

File tree

2 files changed

+21
-10
lines changed

2 files changed

+21
-10
lines changed

spring-data-jest/src/main/java/com/github/vanroy/springdata/jest/JestElasticsearchTemplate.java

+11-8
Original file line numberDiff line numberDiff line change
@@ -206,8 +206,7 @@ public <T> boolean createIndex(Class<T> clazz) {
206206

207207
@Override
208208
public boolean createIndex(String indexName) {
209-
JestResult result = execute(new CreateIndex.Builder(indexName).build());
210-
return result.isSucceeded();
209+
return executeWithAcknowledge(new CreateIndex.Builder(indexName).build());
211210
}
212211

213212
@Override
@@ -392,7 +391,7 @@ public <T> T queryForObject(String indexName, GetQuery query, Class<T> clazz, Je
392391

393392
Get.Builder build = new Get.Builder(index, query.getId()).type(persistentEntity.getIndexType());
394393

395-
DocumentResult result = execute(build.build());
394+
DocumentResult result = execute(build.build(), true);
396395

397396
return mapper.mapResult(result, clazz);
398397
}
@@ -750,7 +749,7 @@ public void bulkUpdate(List<UpdateQuery> queries) {
750749

751750
@Override
752751
public String delete(String indexName, String type, String id) {
753-
return execute(new Delete.Builder(id).index(indexName).type(type).build()).getId();
752+
return execute(new Delete.Builder(id).index(indexName).type(type).build(), true).getId();
754753
}
755754

756755
@Override
@@ -960,13 +959,13 @@ public <T> Page<T> scroll(String scrollId, long scrollTimeInMillis, SearchResult
960959

961960
@Override
962961
public <T> void clearScroll(String scrollId) {
963-
execute(new ClearScroll.Builder().addScrollId(scrollId).build());
962+
execute(new ClearScroll.Builder().addScrollId(scrollId).build(), true);
964963
}
965964

966965
public <T> Page<T> scroll(String scrollId, long scrollTimeInMillis, JestScrollResultMapper mapper) {
967966
SearchScroll scroll = new SearchScroll.Builder(scrollId, scrollTimeInMillis + "ms").build();
968967

969-
SearchScrollResult response = new SearchScrollResult(execute(scroll));
968+
SearchScrollResult response = new SearchScrollResult(execute(scroll, true));
970969

971970
return mapper.mapResults(response, null);
972971
}
@@ -1082,14 +1081,18 @@ public ElasticsearchPersistentEntity getPersistentEntityFor(Class clazz) {
10821081
}
10831082

10841083
private <T extends JestResult> T execute(Action<T> action) {
1084+
return execute(action, false);
1085+
}
1086+
1087+
private <T extends JestResult> T execute(Action<T> action, boolean acceptNotFound) {
10851088
try {
10861089

10871090
T result = client.execute(action);
10881091
if (!result.isSucceeded()) {
10891092

10901093
String errorMessage = String.format("Cannot execute jest action , response code : %s , error : %s , message : %s", result.getResponseCode(), result.getErrorMessage(), getMessage(result));
10911094

1092-
if(isSuccessfulResponse(result.getResponseCode())) {
1095+
if(acceptNotFound && isSuccessfulResponse(result.getResponseCode())) {
10931096
logger.debug(errorMessage);
10941097
} else {
10951098
logger.error(errorMessage);
@@ -1105,7 +1108,7 @@ private <T extends JestResult> T execute(Action<T> action) {
11051108
}
11061109

11071110
private boolean executeWithAcknowledge(Action<?> action) {
1108-
return execute(action).isSucceeded();
1111+
return execute(action, true).isSucceeded();
11091112
}
11101113

11111114
private <T> SearchSourceBuilder prepareSearch(Query query, Class<T> clazz) {

spring-data-jest/src/test/java/com/github/vanroy/springdata/jest/JestElasticsearchTemplateTests.java

+10-2
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,14 @@ public <T> LinkedList<T> mapResults(MultiDocumentResult responses, Class<T> claz
281281
assertThat(sampleEntities.size(), is(equalTo(2)));
282282
}
283283

284+
@Test(expected = ElasticsearchException.class)
285+
public void shouldThrowExceptionForInvalidSearchQuery() {
286+
// given
287+
SearchQuery searchQuery = new NativeSearchQueryBuilder().withIndices("inexisting_index").withQuery(matchAllQuery()).build();
288+
// when
289+
Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class);
290+
}
291+
284292
@Test
285293
public void shouldReturnPageForGivenSearchQuery() {
286294
// given
@@ -1105,11 +1113,11 @@ public void shouldReturnResultsWithScanAndScrollForGivenSearchQueryAndClass() {
11051113
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery())
11061114
.withPageable(new PageRequest(0, 10)).build();
11071115

1108-
String scrollId = elasticsearchTemplate.scan(searchQuery, 1000, false, SampleEntity.class);
1116+
String scrollId = elasticsearchTemplate.scan(searchQuery, 30000L, false, SampleEntity.class);
11091117
List<SampleEntity> sampleEntities = new ArrayList<SampleEntity>();
11101118
boolean hasRecords = true;
11111119
while (hasRecords) {
1112-
Page<SampleEntity> page = elasticsearchTemplate.scroll(scrollId, 5000L, SampleEntity.class);
1120+
Page<SampleEntity> page = elasticsearchTemplate.scroll(scrollId, 30000L, SampleEntity.class);
11131121
if (page.hasContent()) {
11141122
sampleEntities.addAll(page.getContent());
11151123
} else {

0 commit comments

Comments
 (0)