|
31 | 31 | import org.springframework.data.domain.PageRequest;
|
32 | 32 | import org.springframework.data.domain.Pageable;
|
33 | 33 | import org.springframework.data.domain.Sort;
|
| 34 | +import org.springframework.data.elasticsearch.ElasticsearchException; |
34 | 35 | import org.springframework.data.elasticsearch.SampleEntity;
|
35 | 36 | import org.springframework.data.elasticsearch.SampleMappingEntity;
|
36 | 37 | import org.springframework.data.elasticsearch.core.query.*;
|
@@ -939,4 +940,71 @@ public void shouldRemoveAlias(){
|
939 | 940 | assertThat(aliases.size(), is(0));
|
940 | 941 | }
|
941 | 942 |
|
| 943 | + |
| 944 | + @Test |
| 945 | + public void shouldIndexDocumentForSpecifiedSource(){ |
| 946 | + |
| 947 | + // given |
| 948 | + String documentSource = "{\"id\":\"2333343434\",\"type\":null,\"message\":\"some message\",\"rate\":0,\"available\":false,\"highlightedMessage\":null,\"version\":1385208779482}"; |
| 949 | + IndexQuery indexQuery = new IndexQuery(); |
| 950 | + indexQuery.setId("2333343434"); |
| 951 | + indexQuery.setSource(documentSource); |
| 952 | + indexQuery.setIndexName("test-index"); |
| 953 | + indexQuery.setType("test-type"); |
| 954 | + // when |
| 955 | + elasticsearchTemplate.index(indexQuery); |
| 956 | + elasticsearchTemplate.refresh(SampleEntity.class, true); |
| 957 | + SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("id",indexQuery.getId())) |
| 958 | + .withIndices("test-index") |
| 959 | + .withTypes("test-type") |
| 960 | + .build(); |
| 961 | + // then |
| 962 | + Page<SampleEntity> page = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class, new SearchResultMapper() { |
| 963 | + @Override |
| 964 | + public <T> FacetedPage<T> mapResults(SearchResponse response, Class<T> clazz, Pageable pageable) { |
| 965 | + List<SampleEntity> values = new ArrayList<SampleEntity>(); |
| 966 | + for (SearchHit searchHit : response.getHits()) { |
| 967 | + SampleEntity sampleEntity = new SampleEntity(); |
| 968 | + sampleEntity.setId(searchHit.getId()); |
| 969 | + sampleEntity.setMessage((String) searchHit.getSource().get("message")); |
| 970 | + values.add(sampleEntity); |
| 971 | + } |
| 972 | + return new FacetedPageImpl<T>((List<T>) values); |
| 973 | + } |
| 974 | + }); |
| 975 | + assertThat(page, is(notNullValue())); |
| 976 | + assertThat(page.getContent().size(), is(1)); |
| 977 | + assertThat(page.getContent().get(0).getId(), is(indexQuery.getId())); |
| 978 | + } |
| 979 | + |
| 980 | + @Test (expected = ElasticsearchException.class) |
| 981 | + public void shouldThrowElasticsearchExceptionWhenNoDocumentSpecified(){ |
| 982 | + // given |
| 983 | + IndexQuery indexQuery = new IndexQuery(); |
| 984 | + indexQuery.setId("2333343434"); |
| 985 | + indexQuery.setIndexName("test-index"); |
| 986 | + indexQuery.setType("test-type"); |
| 987 | + |
| 988 | + //when |
| 989 | + elasticsearchTemplate.index(indexQuery); |
| 990 | + } |
| 991 | + |
| 992 | + @Test |
| 993 | + public void shouldReturnIds(){ |
| 994 | + //given |
| 995 | + List<IndexQuery> entities = createSampleEntitiesWithMessage("Test message", 30); |
| 996 | + // when |
| 997 | + elasticsearchTemplate.bulkIndex(entities); |
| 998 | + elasticsearchTemplate.refresh(SampleEntity.class, true); |
| 999 | + SearchQuery searchQuery = new NativeSearchQueryBuilder() |
| 1000 | + .withQuery(termQuery("message", "message")) |
| 1001 | + .withIndices("test-index") |
| 1002 | + .withTypes("test-type") |
| 1003 | + .withPageable(new PageRequest(0,100)) |
| 1004 | + .build(); |
| 1005 | + // then |
| 1006 | + List<String> ids = elasticsearchTemplate.queryForIds(searchQuery); |
| 1007 | + assertThat(ids, is(notNullValue())); |
| 1008 | + assertThat(ids.size(), is(30)); |
| 1009 | + } |
942 | 1010 | }
|
0 commit comments