1) added support for user defined indices and types in ElasticsearchOperations

2) added support for custom ResultMapper in ElasticsearchOperations
3) Fixed pagination issues
4) Fixed findAll methods that were returning 10 results (which is the elasticsearch default).
This commit is contained in:
Rizwan Idrees
2013-02-19 11:07:51 +00:00
parent 9c2a541d95
commit 0bc8ae54fe
7 changed files with 216 additions and 20 deletions

View File

@@ -1,12 +1,15 @@
package org.springframework.data.elasticsearch.core;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.search.SearchHit;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.elasticsearch.SampleEntity;
@@ -374,4 +377,42 @@ public class ElasticsearchTemplateTest {
assertThat(sampleEntity1, is(notNullValue()));
}
@Test
public void shouldReturnSpecifiedFields(){
//given
String documentId = randomNumeric(5);
String message = "some test message";
SampleEntity sampleEntity = new SampleEntity();
sampleEntity.setId(documentId);
sampleEntity.setMessage(message);
sampleEntity.setVersion(System.currentTimeMillis());
IndexQuery indexQuery = new IndexQuery();
indexQuery.setId(documentId);
indexQuery.setObject(sampleEntity);
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");
//when
Page<String> page = elasticsearchTemplate.queryForPage(searchQuery, new ResultsMapper<String>() {
@Override
public Page<String> mapResults(SearchResponse response) {
List<String> values = new ArrayList<String>();
for(SearchHit searchHit : response.getHits()){
values.add((String) searchHit.field("message").value());
}
return new PageImpl<String>(values);
}
});
//then
assertThat(page, is(notNullValue()));
assertThat(page.getTotalElements(), is(equalTo(1L)));
assertThat(page.getContent().get(0), is(message));
}
}