DATAES-7 : Migrate to the latest version of Elasticsearch 0.90.0

This commit is contained in:
Mohsin Husen 2013-05-12 13:54:48 +01:00
parent b943dc2515
commit 7f11f23718
5 changed files with 28 additions and 24 deletions

View File

@ -23,7 +23,7 @@
<commonscollections>3.2.1</commonscollections> <commonscollections>3.2.1</commonscollections>
<commonslang>2.6</commonslang> <commonslang>2.6</commonslang>
<elasticsearch>0.20.5</elasticsearch> <elasticsearch>0.90.0</elasticsearch>
<jackson>1.9.2</jackson> <jackson>1.9.2</jackson>
<springdata.commons>1.6.0.BUILD-SNAPSHOT</springdata.commons> <springdata.commons>1.6.0.BUILD-SNAPSHOT</springdata.commons>

View File

@ -107,7 +107,7 @@ public class ElasticsearchTemplate implements ElasticsearchOperations {
try { try {
XContentBuilder xContentBuilder = buildMapping(clazz, persistentEntity.getIndexType(), persistentEntity.getIdProperty().getFieldName()); 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) { } catch (Exception e) {
throw new ElasticsearchException("Failed to build mapping for " + clazz.getSimpleName() , 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){ if(query.getQuery() != null){
countRequestBuilder.setQuery(query.getQuery()); countRequestBuilder.setQuery(query.getQuery());
} }
return countRequestBuilder.execute().actionGet().count(); return countRequestBuilder.execute().actionGet().getCount();
} }
@Override @Override
@ -218,9 +218,9 @@ public class ElasticsearchTemplate implements ElasticsearchOperations {
BulkResponse bulkResponse = bulkRequest.execute().actionGet(); BulkResponse bulkResponse = bulkRequest.execute().actionGet();
if (bulkResponse.hasFailures()) { if (bulkResponse.hasFailures()) {
Map<String, String> failedDocuments = new HashMap<String, String>(); Map<String, String> failedDocuments = new HashMap<String, String>();
for (BulkItemResponse item : bulkResponse.items()) { for (BulkItemResponse item : bulkResponse.getItems()) {
if (item.failed()) if (item.isFailed())
failedDocuments.put(item.getId(), item.failureMessage()); failedDocuments.put(item.getId(), item.getFailureMessage());
} }
throw new ElasticsearchException("Bulk indexing has failures. Use ElasticsearchException.getFailedDocuments() for detailed messages [" + failedDocuments+"]", failedDocuments); 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 <T> boolean deleteIndex(Class<T> clazz){ public <T> boolean deleteIndex(Class<T> clazz){
String indexName = getPersistentEntityFor(clazz).getIndexName(); String indexName = getPersistentEntityFor(clazz).getIndexName();
if(indexExists(indexName)){ 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; return false;
} }
@ -376,13 +376,13 @@ public class ElasticsearchTemplate implements ElasticsearchOperations {
private boolean indexExists(String indexName) { private boolean indexExists(String indexName) {
return client.admin() return client.admin()
.indices() .indices()
.exists(indicesExistsRequest(indexName)).actionGet().exists(); .exists(indicesExistsRequest(indexName)).actionGet().isExists();
} }
private <T> boolean createIndexWithSettings(Class<T> clazz) { private <T> boolean createIndexWithSettings(Class<T> clazz) {
ElasticsearchPersistentEntity<T> persistentEntity = getPersistentEntityFor(clazz); ElasticsearchPersistentEntity<T> persistentEntity = getPersistentEntityFor(clazz);
return client.admin().indices().create(Requests.createIndexRequest(persistentEntity.getIndexName()). return client.admin().indices().create(Requests.createIndexRequest(persistentEntity.getIndexName()).
settings(getSettings(persistentEntity))).actionGet().acknowledged(); settings(getSettings(persistentEntity))).actionGet().isAcknowledged();
} }
private <T> Map getSettings(ElasticsearchPersistentEntity<T> persistentEntity) { private <T> Map getSettings(ElasticsearchPersistentEntity<T> persistentEntity) {

View File

@ -41,7 +41,5 @@ public interface ElasticsearchRepository<T, ID extends Serializable> extends Ela
Page<T> search(SearchQuery searchQuery); Page<T> search(SearchQuery searchQuery);
Page<T> searchSimilar(T entity); Page<T> searchSimilar(T entity, SearchQuery searchQuery);
Page<T> searchSimilar(T entity, Pageable pageable);
} }

View File

@ -200,17 +200,19 @@ public abstract class AbstractElasticsearchRepository<T,ID extends Serializable>
} }
@Override @Override
public Page<T> searchSimilar(T entity) { public Page<T> searchSimilar(T entity, SearchQuery searchQuery) {
return searchSimilar(entity, DEFAULT_PAGE);
}
@Override
public Page<T> searchSimilar(T entity, Pageable pageable) {
Assert.notNull(entity, "Cannot search similar records for 'null'."); 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(); MoreLikeThisQuery query = new MoreLikeThisQuery();
query.setId(stringIdRepresentation(extractIdFromBean(entity))); 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()); return elasticsearchOperations.moreLikeThis(query, getEntityClass());
} }

View File

@ -387,7 +387,6 @@ public class SimpleElasticsearchRepositoryTests {
assertThat(sampleEntities,is(notNullValue())); assertThat(sampleEntities,is(notNullValue()));
} }
@Test @Test
public void shouldReturnSimilarEntities(){ public void shouldReturnSimilarEntities(){
//given //given
@ -403,7 +402,11 @@ public class SimpleElasticsearchRepositoryTests {
repository.save(sampleEntities); repository.save(sampleEntities);
//when //when
Page<SampleEntity> results = repository.searchSimilar(sampleEntities.get(0)); SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withPageable(new PageRequest(0, 5))
.withFields("message")
.build();
Page<SampleEntity> results = repository.searchSimilar(sampleEntities.get(0), searchQuery);
//then //then
assertThat(results.getTotalElements(), is(greaterThanOrEqualTo(1L))); assertThat(results.getTotalElements(), is(greaterThanOrEqualTo(1L)));
@ -416,6 +419,7 @@ public class SimpleElasticsearchRepositoryTests {
SampleEntity sampleEntity = new SampleEntity(); SampleEntity sampleEntity = new SampleEntity();
sampleEntity.setId(documentId); sampleEntity.setId(documentId);
sampleEntity.setMessage(message); sampleEntity.setMessage(message);
sampleEntity.setRate(2);
sampleEntity.setVersion(System.currentTimeMillis()); sampleEntity.setVersion(System.currentTimeMillis());
sampleEntities.add(sampleEntity); sampleEntities.add(sampleEntity);
} }