Added support for searchSimilar in ElasticsearchRepository
https://github.com/BioMedCentralLtd/spring-data-elasticsearch/issues/4
This commit is contained in:
@@ -22,7 +22,6 @@ import org.springframework.data.elasticsearch.core.query.SearchQuery;
|
||||
import org.springframework.data.repository.NoRepositoryBean;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @param <T>
|
||||
@@ -41,4 +40,6 @@ public interface ElasticsearchRepository<T, ID extends Serializable> extends Ela
|
||||
Page<T> search(QueryBuilder elasticsearchQuery, Pageable pageable);
|
||||
|
||||
Page<T> search(SearchQuery searchQuery);
|
||||
|
||||
Page<T> searchSimilar(T entity);
|
||||
}
|
||||
|
||||
@@ -19,14 +19,10 @@ import org.elasticsearch.index.query.QueryBuilder;
|
||||
import org.springframework.dao.InvalidDataAccessApiUsageException;
|
||||
import org.springframework.data.domain.*;
|
||||
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
|
||||
import org.springframework.data.elasticsearch.core.query.DeleteQuery;
|
||||
import org.springframework.data.elasticsearch.core.query.GetQuery;
|
||||
import org.springframework.data.elasticsearch.core.query.IndexQuery;
|
||||
import org.springframework.data.elasticsearch.core.query.SearchQuery;
|
||||
import org.springframework.data.elasticsearch.core.query.*;
|
||||
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import java.lang.reflect.ParameterizedType;
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
@@ -187,6 +183,14 @@ public class SimpleElasticsearchRepository<T> implements ElasticsearchRepository
|
||||
return elasticsearchOperations.queryForPage(query, getEntityClass());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<T> searchSimilar(T entity) {
|
||||
Assert.notNull(entity, "Cannot search similar records for 'null'.");
|
||||
MoreLikeThisQuery query = new MoreLikeThisQuery();
|
||||
query.setId(extractIdFromBean(entity));
|
||||
return elasticsearchOperations.moreLikeThis(query, getEntityClass());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delete(String id) {
|
||||
Assert.notNull(id, "Cannot delete entity with id 'null'.");
|
||||
|
||||
Reference in New Issue
Block a user