refactored, created searchQuery interface based, NativeSearchQueryBuilder support

This commit is contained in:
Mohsin Husen
2013-04-21 12:38:09 +01:00
parent f2325a94bd
commit 807b194e80
13 changed files with 252 additions and 153 deletions

View File

@@ -19,7 +19,6 @@ package org.springframework.data.elasticsearch.core;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.sort.FieldSortBuilder;
import org.elasticsearch.search.sort.SortBuilder;
import org.elasticsearch.search.sort.SortOrder;
import org.junit.Before;
import org.junit.Ignore;
@@ -61,7 +60,7 @@ public class ElasticsearchTemplateTest {
public void before(){
elasticsearchTemplate.createIndex(SampleEntity.class);
DeleteQuery deleteQuery = new DeleteQuery();
deleteQuery.setElasticsearchQuery(matchAllQuery());
deleteQuery.setQuery(matchAllQuery());
elasticsearchTemplate.delete(deleteQuery,SampleEntity.class);
elasticsearchTemplate.refresh(SampleEntity.class, true);
}
@@ -79,8 +78,7 @@ public class ElasticsearchTemplateTest {
indexQuery.setObject(sampleEntity);
elasticsearchTemplate.index(indexQuery);
elasticsearchTemplate.refresh(SampleEntity.class, true);
SearchQuery searchQuery = new SearchQuery();
searchQuery.setElasticsearchQuery(matchAllQuery());
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).build();
//when
long count = elasticsearchTemplate.count(searchQuery, SampleEntity.class);
//then
@@ -126,8 +124,7 @@ public class ElasticsearchTemplateTest {
elasticsearchTemplate.index(indexQuery);
elasticsearchTemplate.refresh(SampleEntity.class, true);
SearchQuery searchQuery = new SearchQuery();
searchQuery.setElasticsearchQuery(matchAllQuery());
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).build();
//when
Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class);
//then
@@ -167,8 +164,7 @@ public class ElasticsearchTemplateTest {
elasticsearchTemplate.bulkIndex(indexQueries);
elasticsearchTemplate.refresh(SampleEntity.class,true);
//then
SearchQuery searchQuery = new SearchQuery();
searchQuery.setElasticsearchQuery(matchAllQuery());
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(matchAllQuery()).build();
Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(searchQuery,SampleEntity.class);
assertThat(sampleEntities.getTotalElements(), is(equalTo(2L)));
}
@@ -191,8 +187,7 @@ public class ElasticsearchTemplateTest {
elasticsearchTemplate.delete("test-index","test-type",documentId);
elasticsearchTemplate.refresh(SampleEntity.class, true);
//then
SearchQuery searchQuery = new SearchQuery();
searchQuery.setElasticsearchQuery(fieldQuery("id", documentId));
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(fieldQuery("id", documentId)).build();
Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(searchQuery,SampleEntity.class);
assertThat(sampleEntities.getTotalElements(), equalTo(0L));
}
@@ -215,8 +210,7 @@ public class ElasticsearchTemplateTest {
elasticsearchTemplate.delete(SampleEntity.class,documentId);
elasticsearchTemplate.refresh(SampleEntity.class, true);
//then
SearchQuery searchQuery = new SearchQuery();
searchQuery.setElasticsearchQuery(fieldQuery("id", documentId));
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(fieldQuery("id", documentId)).build();
Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(searchQuery,SampleEntity.class);
assertThat(sampleEntities.getTotalElements(), equalTo(0L));
}
@@ -237,17 +231,16 @@ public class ElasticsearchTemplateTest {
elasticsearchTemplate.index(indexQuery);
//when
DeleteQuery deleteQuery = new DeleteQuery();
deleteQuery.setElasticsearchQuery(fieldQuery("id", documentId));
deleteQuery.setQuery(fieldQuery("id", documentId));
elasticsearchTemplate.delete(deleteQuery,SampleEntity.class);
//then
SearchQuery searchQuery = new SearchQuery();
searchQuery.setElasticsearchQuery(fieldQuery("id",documentId));
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(fieldQuery("id",documentId)).build();
Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(searchQuery,SampleEntity.class);
assertThat(sampleEntities.getTotalElements(), equalTo(0L));
}
@Test
public void shouldFilterSearchResultsGivenFilter(){
public void shouldFilterSearchResultsForGivenFilter(){
//given
String documentId = randomNumeric(5);
SampleEntity sampleEntity = new SampleEntity();
@@ -261,9 +254,10 @@ public class ElasticsearchTemplateTest {
elasticsearchTemplate.index(indexQuery);
elasticsearchTemplate.refresh(SampleEntity.class, true);
SearchQuery searchQuery = new SearchQuery();
searchQuery.setElasticsearchQuery(matchAllQuery());
searchQuery.setElasticsearchFilter(boolFilter().must(termFilter("id", documentId)));
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(matchAllQuery())
.withFilter(boolFilter().must(termFilter("id", documentId)))
.build();
//when
Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(searchQuery,SampleEntity.class);
//then
@@ -317,11 +311,10 @@ public class ElasticsearchTemplateTest {
elasticsearchTemplate.bulkIndex(indexQueries);
elasticsearchTemplate.refresh(SampleEntity.class, true);
SearchQuery searchQuery = new SearchQuery();
searchQuery.setElasticsearchQuery(matchAllQuery());
SortBuilder sortBuilder = new FieldSortBuilder("rate").ignoreUnmapped(true).order(SortOrder.ASC);
searchQuery.setElasticsearchSort(sortBuilder);
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(matchAllQuery())
.withSort(new FieldSortBuilder("rate").ignoreUnmapped(true).order(SortOrder.ASC))
.build();
//when
Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(searchQuery,SampleEntity.class);
//then
@@ -473,11 +466,12 @@ public class ElasticsearchTemplateTest {
elasticsearchTemplate.index(indexQuery);
elasticsearchTemplate.refresh(SampleEntity.class, true);
SearchQuery searchQuery = new SearchQuery();
searchQuery.setElasticsearchQuery(matchAllQuery());
searchQuery.addFields("message");
searchQuery.addIndices("test-index");
searchQuery.addTypes("test-type");
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(matchAllQuery())
.withIndices("test-index")
.withTypes("test-type")
.withFields("message")
.build();
//when
Page<String> page = elasticsearchTemplate.queryForPage(searchQuery, new ResultsMapper<String>() {
@Override
@@ -575,11 +569,12 @@ public class ElasticsearchTemplateTest {
elasticsearchTemplate.refresh(SampleEntity.class,true);
//then
SearchQuery searchQuery = new SearchQuery();
searchQuery.addIndices("test-index");
searchQuery.addTypes("test-type");
searchQuery.setElasticsearchQuery(matchAllQuery());
searchQuery.setPageable(new PageRequest(0,1));
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(matchAllQuery())
.withIndices("test-index")
.withTypes("test-type")
.withPageable(new PageRequest(0,1))
.build();
String scrollId = elasticsearchTemplate.scan(searchQuery,1000,false);
List<SampleEntity> sampleEntities = new ArrayList<SampleEntity>();

View File

@@ -51,7 +51,7 @@ public class CriteriaQueryTest {
public void before(){
elasticsearchTemplate.createIndex(SampleEntity.class);
DeleteQuery deleteQuery = new DeleteQuery();
deleteQuery.setElasticsearchQuery(matchAllQuery());
deleteQuery.setQuery(matchAllQuery());
elasticsearchTemplate.delete(deleteQuery,SampleEntity.class);
elasticsearchTemplate.refresh(SampleEntity.class, true);
}

View File

@@ -17,7 +17,6 @@ package org.springframework.data.elasticsearch.repositories;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
@@ -31,7 +30,6 @@ import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;
@@ -58,7 +56,7 @@ public class CustomMethodRepositoryTest {
public void before(){
elasticsearchTemplate.createIndex(SampleEntity.class);
DeleteQuery deleteQuery = new DeleteQuery();
deleteQuery.setElasticsearchQuery(matchAllQuery());
deleteQuery.setQuery(matchAllQuery());
elasticsearchTemplate.delete(deleteQuery,SampleEntity.class);
elasticsearchTemplate.refresh(SampleEntity.class, true);
}

View File

@@ -24,6 +24,7 @@ import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.elasticsearch.SampleEntity;
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
import org.springframework.data.elasticsearch.core.query.SearchQuery;
import org.springframework.data.elasticsearch.repositories.SampleElasticsearchRepository;
import org.springframework.test.context.ContextConfiguration;
@@ -162,8 +163,9 @@ public class SimpleElasticsearchRepositoryTest {
sampleEntity.setVersion(System.currentTimeMillis());
repository.save(sampleEntity);
SearchQuery query = new SearchQuery();
query.setElasticsearchQuery(termQuery("message", "test"));
SearchQuery query = new NativeSearchQueryBuilder()
.withQuery(termQuery("message", "test"))
.build();
//when
Page<SampleEntity> page = repository.search(query);
//then
@@ -263,8 +265,9 @@ public class SimpleElasticsearchRepositoryTest {
sampleEntity.setVersion(System.currentTimeMillis());
repository.save(sampleEntity);
//when
SearchQuery searchQuery = new SearchQuery();
searchQuery.setElasticsearchQuery(fieldQuery("id",documentId));
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(fieldQuery("id",documentId))
.build();
Page<SampleEntity> sampleEntities= repository.search(searchQuery);
//then
assertThat(sampleEntities.getTotalElements(), equalTo(1L));
@@ -275,8 +278,9 @@ public class SimpleElasticsearchRepositoryTest {
//when
repository.deleteAll();
//then
SearchQuery searchQuery = new SearchQuery();
searchQuery.setElasticsearchQuery(matchAllQuery());
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(matchAllQuery())
.build();
Page<SampleEntity> sampleEntities= repository.search(searchQuery);
assertThat(sampleEntities.getTotalElements(), equalTo(0L));
}
@@ -293,8 +297,9 @@ public class SimpleElasticsearchRepositoryTest {
//when
repository.delete(sampleEntity);
//then
SearchQuery searchQuery = new SearchQuery();
searchQuery.setElasticsearchQuery(fieldQuery("id", documentId));
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(fieldQuery("id", documentId))
.build();
Page<SampleEntity> sampleEntities= repository.search(searchQuery);
assertThat(sampleEntities.getTotalElements(),equalTo(0L));
}