diff --git a/pom.xml b/pom.xml
index 898e85c8a..8078f6f96 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,7 +23,7 @@
3.2.1
2.6
- 0.20.5
+ 0.90.0
1.9.2
1.6.0.BUILD-SNAPSHOT
diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java
index c31f313ba..fd33fbed5 100644
--- a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java
+++ b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java
@@ -107,7 +107,7 @@ public class ElasticsearchTemplate implements ElasticsearchOperations {
try {
XContentBuilder xContentBuilder = buildMapping(clazz, persistentEntity.getIndexType(), persistentEntity.getIdProperty().getFieldName());
- return requestBuilder.setSource(xContentBuilder).execute().actionGet().acknowledged();
+ return requestBuilder.setSource(xContentBuilder).execute().actionGet().isAcknowledged();
} catch (Exception e) {
throw new ElasticsearchException("Failed to build mapping for " + clazz.getSimpleName() , e);
}
@@ -199,7 +199,7 @@ public class ElasticsearchTemplate implements ElasticsearchOperations {
if(query.getQuery() != null){
countRequestBuilder.setQuery(query.getQuery());
}
- return countRequestBuilder.execute().actionGet().count();
+ return countRequestBuilder.execute().actionGet().getCount();
}
@Override
@@ -218,9 +218,9 @@ public class ElasticsearchTemplate implements ElasticsearchOperations {
BulkResponse bulkResponse = bulkRequest.execute().actionGet();
if (bulkResponse.hasFailures()) {
Map failedDocuments = new HashMap();
- for (BulkItemResponse item : bulkResponse.items()) {
- if (item.failed())
- failedDocuments.put(item.getId(), item.failureMessage());
+ for (BulkItemResponse item : bulkResponse.getItems()) {
+ if (item.isFailed())
+ failedDocuments.put(item.getId(), item.getFailureMessage());
}
throw new ElasticsearchException("Bulk indexing has failures. Use ElasticsearchException.getFailedDocuments() for detailed messages [" + failedDocuments+"]", failedDocuments);
}
@@ -235,7 +235,7 @@ public class ElasticsearchTemplate implements ElasticsearchOperations {
public boolean deleteIndex(Class clazz){
String indexName = getPersistentEntityFor(clazz).getIndexName();
if(indexExists(indexName)){
- return client.admin().indices().delete(new DeleteIndexRequest(indexName)).actionGet().acknowledged();
+ return client.admin().indices().delete(new DeleteIndexRequest(indexName)).actionGet().isAcknowledged();
}
return false;
}
@@ -376,13 +376,13 @@ public class ElasticsearchTemplate implements ElasticsearchOperations {
private boolean indexExists(String indexName) {
return client.admin()
.indices()
- .exists(indicesExistsRequest(indexName)).actionGet().exists();
+ .exists(indicesExistsRequest(indexName)).actionGet().isExists();
}
private boolean createIndexWithSettings(Class clazz) {
ElasticsearchPersistentEntity persistentEntity = getPersistentEntityFor(clazz);
return client.admin().indices().create(Requests.createIndexRequest(persistentEntity.getIndexName()).
- settings(getSettings(persistentEntity))).actionGet().acknowledged();
+ settings(getSettings(persistentEntity))).actionGet().isAcknowledged();
}
private Map getSettings(ElasticsearchPersistentEntity persistentEntity) {
diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/ElasticsearchRepository.java b/src/main/java/org/springframework/data/elasticsearch/repository/ElasticsearchRepository.java
index 0415b4b59..febdd97fd 100644
--- a/src/main/java/org/springframework/data/elasticsearch/repository/ElasticsearchRepository.java
+++ b/src/main/java/org/springframework/data/elasticsearch/repository/ElasticsearchRepository.java
@@ -41,7 +41,5 @@ public interface ElasticsearchRepository extends Ela
Page search(SearchQuery searchQuery);
- Page searchSimilar(T entity);
-
- Page searchSimilar(T entity, Pageable pageable);
+ Page searchSimilar(T entity, SearchQuery searchQuery);
}
diff --git a/src/main/java/org/springframework/data/elasticsearch/repository/support/AbstractElasticsearchRepository.java b/src/main/java/org/springframework/data/elasticsearch/repository/support/AbstractElasticsearchRepository.java
index 2eb877de1..f75240c47 100644
--- a/src/main/java/org/springframework/data/elasticsearch/repository/support/AbstractElasticsearchRepository.java
+++ b/src/main/java/org/springframework/data/elasticsearch/repository/support/AbstractElasticsearchRepository.java
@@ -200,17 +200,19 @@ public abstract class AbstractElasticsearchRepository
}
@Override
- public Page searchSimilar(T entity) {
- return searchSimilar(entity, DEFAULT_PAGE);
- }
-
- @Override
- public Page searchSimilar(T entity, Pageable pageable) {
+ public Page searchSimilar(T entity, SearchQuery searchQuery) {
Assert.notNull(entity, "Cannot search similar records for 'null'.");
- Assert.notNull(entity, "Pageable cannot be 'null'");
+ Assert.notNull(searchQuery.getFields(), "Fields cannot be 'null'");
MoreLikeThisQuery query = new MoreLikeThisQuery();
query.setId(stringIdRepresentation(extractIdFromBean(entity)));
- query.setPageable(pageable);
+ query.setPageable(searchQuery.getPageable() != null ? searchQuery.getPageable() : DEFAULT_PAGE);
+ query.addFields(searchQuery.getFields().toArray(new String[searchQuery.getFields().size()]));
+ if(!searchQuery.getIndices().isEmpty()) {
+ query.addSearchIndices(searchQuery.getIndices().toArray(new String[searchQuery.getIndices().size()]));
+ }
+ if(!searchQuery.getTypes().isEmpty()){
+ query.addSearchTypes(searchQuery.getTypes().toArray(new String[searchQuery.getTypes().size()]));
+ }
return elasticsearchOperations.moreLikeThis(query, getEntityClass());
}
@@ -296,14 +298,14 @@ public abstract class AbstractElasticsearchRepository
this.elasticsearchOperations = elasticsearchOperations;
}
-
+
protected ID extractIdFromBean(T entity) {
if (entityInformation != null) {
return entityInformation.getId(entity);
}
return null;
}
-
+
protected abstract String stringIdRepresentation(ID id);
private Long extractVersionFromBean(T entity){
diff --git a/src/test/java/org/springframework/data/elasticsearch/repository/support/SimpleElasticsearchRepositoryTests.java b/src/test/java/org/springframework/data/elasticsearch/repository/support/SimpleElasticsearchRepositoryTests.java
index 53d08608b..455bff24c 100644
--- a/src/test/java/org/springframework/data/elasticsearch/repository/support/SimpleElasticsearchRepositoryTests.java
+++ b/src/test/java/org/springframework/data/elasticsearch/repository/support/SimpleElasticsearchRepositoryTests.java
@@ -387,7 +387,6 @@ public class SimpleElasticsearchRepositoryTests {
assertThat(sampleEntities,is(notNullValue()));
}
-
@Test
public void shouldReturnSimilarEntities(){
//given
@@ -403,7 +402,11 @@ public class SimpleElasticsearchRepositoryTests {
repository.save(sampleEntities);
//when
- Page results = repository.searchSimilar(sampleEntities.get(0));
+ SearchQuery searchQuery = new NativeSearchQueryBuilder()
+ .withPageable(new PageRequest(0, 5))
+ .withFields("message")
+ .build();
+ Page results = repository.searchSimilar(sampleEntities.get(0), searchQuery);
//then
assertThat(results.getTotalElements(), is(greaterThanOrEqualTo(1L)));
@@ -416,6 +419,7 @@ public class SimpleElasticsearchRepositoryTests {
SampleEntity sampleEntity = new SampleEntity();
sampleEntity.setId(documentId);
sampleEntity.setMessage(message);
+ sampleEntity.setRate(2);
sampleEntity.setVersion(System.currentTimeMillis());
sampleEntities.add(sampleEntity);
}