mirror of
https://github.com/spring-projects/spring-data-elasticsearch.git
synced 2025-06-29 15:22:11 +00:00
DATAES-54 - upgraded to elasticsearch 1.0
This commit is contained in:
parent
ea50046f45
commit
1352c9f45b
2
pom.xml
2
pom.xml
@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
<commonscollections>3.2.1</commonscollections>
|
<commonscollections>3.2.1</commonscollections>
|
||||||
<commonslang>2.6</commonslang>
|
<commonslang>2.6</commonslang>
|
||||||
<elasticsearch>0.90.11</elasticsearch>
|
<elasticsearch>1.0.0</elasticsearch>
|
||||||
<springdata.commons>1.7.0.RC1</springdata.commons>
|
<springdata.commons>1.7.0.RC1</springdata.commons>
|
||||||
|
|
||||||
</properties>
|
</properties>
|
||||||
|
@ -23,6 +23,7 @@ import java.util.LinkedList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.ListIterator;
|
import java.util.ListIterator;
|
||||||
|
|
||||||
|
import org.apache.lucene.queryparser.flexible.core.util.StringUtils;
|
||||||
import org.elasticsearch.index.query.BoolQueryBuilder;
|
import org.elasticsearch.index.query.BoolQueryBuilder;
|
||||||
import org.elasticsearch.index.query.BoostableQueryBuilder;
|
import org.elasticsearch.index.query.BoostableQueryBuilder;
|
||||||
import org.elasticsearch.index.query.QueryBuilder;
|
import org.elasticsearch.index.query.QueryBuilder;
|
||||||
@ -117,18 +118,20 @@ class CriteriaQueryProcessor {
|
|||||||
}
|
}
|
||||||
QueryBuilder query = null;
|
QueryBuilder query = null;
|
||||||
|
|
||||||
|
String searchText = StringUtils.toString(value);
|
||||||
|
|
||||||
switch (key) {
|
switch (key) {
|
||||||
case EQUALS:
|
case EQUALS:
|
||||||
query = fieldQuery(fieldName, value);
|
query = queryString(searchText).field(fieldName);
|
||||||
break;
|
break;
|
||||||
case CONTAINS:
|
case CONTAINS:
|
||||||
query = fieldQuery(fieldName, "*" + value + "*").analyzeWildcard(true);
|
query = queryString("*" + searchText + "*").field(fieldName).analyzeWildcard(true);
|
||||||
break;
|
break;
|
||||||
case STARTS_WITH:
|
case STARTS_WITH:
|
||||||
query = fieldQuery(fieldName, value + "*").analyzeWildcard(true);
|
query = queryString(searchText + "*").field(fieldName).analyzeWildcard(true);
|
||||||
break;
|
break;
|
||||||
case ENDS_WITH:
|
case ENDS_WITH:
|
||||||
query = fieldQuery(fieldName, "*" + value).analyzeWildcard(true);
|
query = queryString("*" + searchText).field(fieldName).analyzeWildcard(true);
|
||||||
break;
|
break;
|
||||||
case EXPRESSION:
|
case EXPRESSION:
|
||||||
query = queryString((String) value).field(fieldName);
|
query = queryString((String) value).field(fieldName);
|
||||||
@ -144,7 +147,7 @@ class CriteriaQueryProcessor {
|
|||||||
query = boolQuery();
|
query = boolQuery();
|
||||||
Iterable<Object> collection = (Iterable<Object>) value;
|
Iterable<Object> collection = (Iterable<Object>) value;
|
||||||
for (Object item : collection) {
|
for (Object item : collection) {
|
||||||
((BoolQueryBuilder) query).should(fieldQuery(fieldName, item));
|
((BoolQueryBuilder) query).should(queryString((String) item).field(fieldName));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -152,14 +155,6 @@ class CriteriaQueryProcessor {
|
|||||||
return query;
|
return query;
|
||||||
}
|
}
|
||||||
|
|
||||||
private QueryBuilder buildNegationQuery(String fieldName, Iterator<Criteria.CriteriaEntry> it) {
|
|
||||||
BoolQueryBuilder notQuery = boolQuery();
|
|
||||||
while (it.hasNext()) {
|
|
||||||
notQuery.mustNot(fieldQuery(fieldName, it.next().getValue()));
|
|
||||||
}
|
|
||||||
return notQuery;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void addBoost(QueryBuilder query, float boost) {
|
private void addBoost(QueryBuilder query, float boost) {
|
||||||
if (Float.isNaN(boost)) {
|
if (Float.isNaN(boost)) {
|
||||||
return;
|
return;
|
||||||
|
@ -193,7 +193,7 @@ public class ElasticsearchTemplate implements ElasticsearchOperations {
|
|||||||
public <T> List<String> queryForIds(SearchQuery query) {
|
public <T> List<String> queryForIds(SearchQuery query) {
|
||||||
SearchRequestBuilder request = prepareSearch(query).setQuery(query.getQuery()).setNoFields();
|
SearchRequestBuilder request = prepareSearch(query).setQuery(query.getQuery()).setNoFields();
|
||||||
if (query.getFilter() != null) {
|
if (query.getFilter() != null) {
|
||||||
request.setFilter(query.getFilter());
|
request.setPostFilter(query.getFilter());
|
||||||
}
|
}
|
||||||
SearchResponse response = request.execute().actionGet();
|
SearchResponse response = request.execute().actionGet();
|
||||||
return extractIds(response);
|
return extractIds(response);
|
||||||
@ -216,7 +216,7 @@ public class ElasticsearchTemplate implements ElasticsearchOperations {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (elasticsearchFilter != null)
|
if (elasticsearchFilter != null)
|
||||||
searchRequestBuilder.setFilter(elasticsearchFilter);
|
searchRequestBuilder.setPostFilter(elasticsearchFilter);
|
||||||
|
|
||||||
SearchResponse response = searchRequestBuilder
|
SearchResponse response = searchRequestBuilder
|
||||||
.execute().actionGet();
|
.execute().actionGet();
|
||||||
@ -318,7 +318,7 @@ public class ElasticsearchTemplate implements ElasticsearchOperations {
|
|||||||
ImmutableOpenMap<String, MappingMetaData> mappings = client.admin().cluster().prepareState().execute().actionGet()
|
ImmutableOpenMap<String, MappingMetaData> mappings = client.admin().cluster().prepareState().execute().actionGet()
|
||||||
.getState().metaData().index(index).mappings();
|
.getState().metaData().index(index).mappings();
|
||||||
if (mappings.containsKey(type)) {
|
if (mappings.containsKey(type)) {
|
||||||
client.admin().indices().deleteMapping(new DeleteMappingRequest(index).type(type)).actionGet();
|
client.admin().indices().deleteMapping(new DeleteMappingRequest(index).types(type)).actionGet();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -360,7 +360,7 @@ public class ElasticsearchTemplate implements ElasticsearchOperations {
|
|||||||
.setSize(searchQuery.getPageable().getPageSize());
|
.setSize(searchQuery.getPageable().getPageSize());
|
||||||
|
|
||||||
if (searchQuery.getFilter() != null) {
|
if (searchQuery.getFilter() != null) {
|
||||||
requestBuilder.setFilter(searchQuery.getFilter());
|
requestBuilder.setPostFilter(searchQuery.getFilter());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (noFields) {
|
if (noFields) {
|
||||||
@ -448,7 +448,7 @@ public class ElasticsearchTemplate implements ElasticsearchOperations {
|
|||||||
|
|
||||||
private SearchResponse doSearch(SearchRequestBuilder searchRequest, SearchQuery searchQuery) {
|
private SearchResponse doSearch(SearchRequestBuilder searchRequest, SearchQuery searchQuery) {
|
||||||
if (searchQuery.getFilter() != null) {
|
if (searchQuery.getFilter() != null) {
|
||||||
searchRequest.setFilter(searchQuery.getFilter());
|
searchRequest.setPostFilter(searchQuery.getFilter());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (searchQuery.getElasticsearchSort() != null) {
|
if (searchQuery.getElasticsearchSort() != null) {
|
||||||
@ -616,9 +616,7 @@ public class ElasticsearchTemplate implements ElasticsearchOperations {
|
|||||||
@Override
|
@Override
|
||||||
public Set<String> queryForAlias(String indexName) {
|
public Set<String> queryForAlias(String indexName) {
|
||||||
ClusterStateRequest clusterStateRequest = Requests.clusterStateRequest()
|
ClusterStateRequest clusterStateRequest = Requests.clusterStateRequest()
|
||||||
.filterRoutingTable(true)
|
.routingTable(true).nodes(true).indices(indexName);
|
||||||
.filterNodes(true)
|
|
||||||
.filteredIndices(indexName);
|
|
||||||
Iterator<String> iterator = client.admin().cluster().state(clusterStateRequest).actionGet().getState().getMetaData().aliases().keysIt();
|
Iterator<String> iterator = client.admin().cluster().state(clusterStateRequest).actionGet().getState().getMetaData().aliases().keysIt();
|
||||||
return newHashSet(iterator);
|
return newHashSet(iterator);
|
||||||
}
|
}
|
||||||
|
@ -53,7 +53,7 @@ public class Criteria {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new CriterSimpleFieldia for the Filed with provided name
|
* Creates a new Criteria with provided field name
|
||||||
*
|
*
|
||||||
* @param fieldname
|
* @param fieldname
|
||||||
*/
|
*/
|
||||||
@ -394,14 +394,14 @@ public class Criteria {
|
|||||||
/**
|
/**
|
||||||
* Creates new CriteriaEntry for bounding box created from points
|
* Creates new CriteriaEntry for bounding box created from points
|
||||||
*
|
*
|
||||||
* @param topLeftPoint left top corner of bounding box
|
* @param topLeftGeohash left top corner of bounding box as geohash
|
||||||
* @param bottomRightPoint right bottom corner of bounding box
|
* @param bottomRightGeohash right bottom corner of bounding box as geohash
|
||||||
* @return Criteria the chaind criteria with the new 'boundedBy' criteria included.
|
* @return Criteria the chaind criteria with the new 'boundedBy' criteria included.
|
||||||
*/
|
*/
|
||||||
public Criteria boundedBy(String topLeftPoint, String bottomRightPoint) {
|
public Criteria boundedBy(String topLeftGeohash, String bottomRightGeohash) {
|
||||||
Assert.isTrue(StringUtils.isNotBlank(topLeftPoint), "topLeftPoint must not be empty");
|
Assert.isTrue(StringUtils.isNotBlank(topLeftGeohash), "topLeftGeohash must not be empty");
|
||||||
Assert.isTrue(StringUtils.isNotBlank(bottomRightPoint), "bottomRightPoint must not be empty");
|
Assert.isTrue(StringUtils.isNotBlank(bottomRightGeohash), "bottomRightGeohash must not be empty");
|
||||||
filterCriteria.add(new CriteriaEntry(OperationKey.BBOX, new Object[]{topLeftPoint, bottomRightPoint}));
|
filterCriteria.add(new CriteriaEntry(OperationKey.BBOX, new Object[]{topLeftGeohash, bottomRightGeohash}));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ import java.util.Collection;
|
|||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.elasticsearch.ElasticSearchException;
|
import org.elasticsearch.ElasticsearchException;
|
||||||
import org.elasticsearch.index.query.QueryBuilder;
|
import org.elasticsearch.index.query.QueryBuilder;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@ -48,7 +48,7 @@ import org.springframework.util.Assert;
|
|||||||
public abstract class AbstractElasticsearchRepository<T, ID extends Serializable> implements
|
public abstract class AbstractElasticsearchRepository<T, ID extends Serializable> implements
|
||||||
ElasticsearchRepository<T, ID> {
|
ElasticsearchRepository<T, ID> {
|
||||||
|
|
||||||
static final Logger LOGGER = LoggerFactory.getLogger(AbstractElasticsearchRepository.class);
|
static final Logger LOGGER = LoggerFactory.getLogger(AbstractElasticsearchRepository.class);
|
||||||
protected ElasticsearchOperations elasticsearchOperations;
|
protected ElasticsearchOperations elasticsearchOperations;
|
||||||
protected Class<T> entityClass;
|
protected Class<T> entityClass;
|
||||||
protected ElasticsearchEntityInformation<T, ID> entityInformation;
|
protected ElasticsearchEntityInformation<T, ID> entityInformation;
|
||||||
@ -67,12 +67,12 @@ public abstract class AbstractElasticsearchRepository<T, ID extends Serializable
|
|||||||
Assert.notNull(metadata);
|
Assert.notNull(metadata);
|
||||||
this.entityInformation = metadata;
|
this.entityInformation = metadata;
|
||||||
setEntityClass(this.entityInformation.getJavaType());
|
setEntityClass(this.entityInformation.getJavaType());
|
||||||
try {
|
try {
|
||||||
createIndex();
|
createIndex();
|
||||||
putMapping();
|
putMapping();
|
||||||
} catch (ElasticSearchException exception) {
|
} catch (ElasticsearchException exception) {
|
||||||
LOGGER.error("failed to load elasticsearch nodes : " + exception.getDetailedMessage());
|
LOGGER.error("failed to load elasticsearch nodes : " + exception.getDetailedMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createIndex() {
|
private void createIndex() {
|
||||||
|
@ -75,7 +75,7 @@ public class ElasticsearchTemplateParentChildTests {
|
|||||||
elasticsearchTemplate.refresh(ChildEntity.class, true);
|
elasticsearchTemplate.refresh(ChildEntity.class, true);
|
||||||
|
|
||||||
// find all parents that have the first child
|
// find all parents that have the first child
|
||||||
QueryBuilder query = hasChildQuery(ParentEntity.CHILD_TYPE, QueryBuilders.fieldQuery("name", child1name));
|
QueryBuilder query = hasChildQuery(ParentEntity.CHILD_TYPE, QueryBuilders.termQuery("name", child1name.toLowerCase()));
|
||||||
List<ParentEntity> parents = elasticsearchTemplate.queryForList(new NativeSearchQuery(query), ParentEntity.class);
|
List<ParentEntity> parents = elasticsearchTemplate.queryForList(new NativeSearchQuery(query), ParentEntity.class);
|
||||||
|
|
||||||
// we're expecting only the first parent as result
|
// we're expecting only the first parent as result
|
||||||
@ -97,7 +97,7 @@ public class ElasticsearchTemplateParentChildTests {
|
|||||||
elasticsearchTemplate.refresh(ChildEntity.class, true);
|
elasticsearchTemplate.refresh(ChildEntity.class, true);
|
||||||
|
|
||||||
// find all parents that have the first child using topChildren Query
|
// find all parents that have the first child using topChildren Query
|
||||||
QueryBuilder query = topChildrenQuery(ParentEntity.CHILD_TYPE, QueryBuilders.fieldQuery("name", child1name));
|
QueryBuilder query = topChildrenQuery(ParentEntity.CHILD_TYPE, QueryBuilders.termQuery("name", child1name.toLowerCase()));
|
||||||
List<ParentEntity> parents = elasticsearchTemplate.queryForList(new NativeSearchQuery(query), ParentEntity.class);
|
List<ParentEntity> parents = elasticsearchTemplate.queryForList(new NativeSearchQuery(query), ParentEntity.class);
|
||||||
|
|
||||||
// we're expecting only the first parent as result
|
// we're expecting only the first parent as result
|
||||||
|
@ -21,11 +21,7 @@ import static org.elasticsearch.index.query.QueryBuilders.*;
|
|||||||
import static org.hamcrest.Matchers.*;
|
import static org.hamcrest.Matchers.*;
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.HashMap;
|
|
||||||
|
|
||||||
import org.elasticsearch.action.index.IndexRequest;
|
import org.elasticsearch.action.index.IndexRequest;
|
||||||
import org.elasticsearch.action.search.SearchResponse;
|
import org.elasticsearch.action.search.SearchResponse;
|
||||||
@ -195,7 +191,7 @@ public class ElasticsearchTemplateTests {
|
|||||||
elasticsearchTemplate.delete(INDEX_NAME, TYPE_NAME, documentId);
|
elasticsearchTemplate.delete(INDEX_NAME, TYPE_NAME, documentId);
|
||||||
elasticsearchTemplate.refresh(SampleEntity.class, true);
|
elasticsearchTemplate.refresh(SampleEntity.class, true);
|
||||||
// then
|
// then
|
||||||
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(fieldQuery("id", documentId)).build();
|
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("id", documentId)).build();
|
||||||
Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class);
|
Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class);
|
||||||
assertThat(sampleEntities.getTotalElements(), equalTo(0L));
|
assertThat(sampleEntities.getTotalElements(), equalTo(0L));
|
||||||
}
|
}
|
||||||
@ -218,7 +214,7 @@ public class ElasticsearchTemplateTests {
|
|||||||
elasticsearchTemplate.delete(SampleEntity.class, documentId);
|
elasticsearchTemplate.delete(SampleEntity.class, documentId);
|
||||||
elasticsearchTemplate.refresh(SampleEntity.class, true);
|
elasticsearchTemplate.refresh(SampleEntity.class, true);
|
||||||
// then
|
// then
|
||||||
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(fieldQuery("id", documentId)).build();
|
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("id", documentId)).build();
|
||||||
Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class);
|
Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class);
|
||||||
assertThat(sampleEntities.getTotalElements(), equalTo(0L));
|
assertThat(sampleEntities.getTotalElements(), equalTo(0L));
|
||||||
}
|
}
|
||||||
@ -239,10 +235,10 @@ public class ElasticsearchTemplateTests {
|
|||||||
elasticsearchTemplate.index(indexQuery);
|
elasticsearchTemplate.index(indexQuery);
|
||||||
// when
|
// when
|
||||||
DeleteQuery deleteQuery = new DeleteQuery();
|
DeleteQuery deleteQuery = new DeleteQuery();
|
||||||
deleteQuery.setQuery(fieldQuery("id", documentId));
|
deleteQuery.setQuery(termQuery("id", documentId));
|
||||||
elasticsearchTemplate.delete(deleteQuery, SampleEntity.class);
|
elasticsearchTemplate.delete(deleteQuery, SampleEntity.class);
|
||||||
// then
|
// then
|
||||||
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(fieldQuery("id", documentId)).build();
|
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("id", documentId)).build();
|
||||||
Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class);
|
Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class);
|
||||||
assertThat(sampleEntities.getTotalElements(), equalTo(0L));
|
assertThat(sampleEntities.getTotalElements(), equalTo(0L));
|
||||||
}
|
}
|
||||||
@ -415,7 +411,7 @@ public class ElasticsearchTemplateTests {
|
|||||||
elasticsearchTemplate.index(indexQuery);
|
elasticsearchTemplate.index(indexQuery);
|
||||||
elasticsearchTemplate.refresh(SampleEntity.class, true);
|
elasticsearchTemplate.refresh(SampleEntity.class, true);
|
||||||
|
|
||||||
StringQuery stringQuery = new StringQuery(fieldQuery("id", documentId).toString());
|
StringQuery stringQuery = new StringQuery(termQuery("id", documentId).toString());
|
||||||
// when
|
// when
|
||||||
SampleEntity sampleEntity1 = elasticsearchTemplate.queryForObject(stringQuery, SampleEntity.class);
|
SampleEntity sampleEntity1 = elasticsearchTemplate.queryForObject(stringQuery, SampleEntity.class);
|
||||||
// then
|
// then
|
||||||
@ -898,12 +894,12 @@ public class ElasticsearchTemplateTests {
|
|||||||
elasticsearchTemplate.refresh(SampleEntity.class, true);
|
elasticsearchTemplate.refresh(SampleEntity.class, true);
|
||||||
// when
|
// when
|
||||||
DeleteQuery deleteQuery = new DeleteQuery();
|
DeleteQuery deleteQuery = new DeleteQuery();
|
||||||
deleteQuery.setQuery(fieldQuery("id", documentId));
|
deleteQuery.setQuery(termQuery("id", documentId));
|
||||||
deleteQuery.setIndex(INDEX_NAME);
|
deleteQuery.setIndex(INDEX_NAME);
|
||||||
deleteQuery.setType(TYPE_NAME);
|
deleteQuery.setType(TYPE_NAME);
|
||||||
elasticsearchTemplate.delete(deleteQuery);
|
elasticsearchTemplate.delete(deleteQuery);
|
||||||
// then
|
// then
|
||||||
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(fieldQuery("id", documentId)).build();
|
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("id", documentId)).build();
|
||||||
Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class);
|
Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class);
|
||||||
assertThat(sampleEntities.getTotalElements(), equalTo(0L));
|
assertThat(sampleEntities.getTotalElements(), equalTo(0L));
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,7 @@ import static org.junit.Assert.*;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.elasticsearch.common.geo.GeoHashUtils;
|
||||||
import org.elasticsearch.index.query.FilterBuilders;
|
import org.elasticsearch.index.query.FilterBuilders;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@ -178,7 +179,7 @@ public class ElasticsearchTemplateGeoTests {
|
|||||||
public void shouldFindAllMarkersForNativeSearchQuery() {
|
public void shouldFindAllMarkersForNativeSearchQuery() {
|
||||||
//Given
|
//Given
|
||||||
loadAnnotationBaseEntities();
|
loadAnnotationBaseEntities();
|
||||||
NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder().withFilter(FilterBuilders.geoBoundingBoxFilter("additionalLocation").topLeft("52, -1").bottomRight("50,1"));
|
NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder().withFilter(FilterBuilders.geoBoundingBoxFilter("additionalLocation").topLeft(52, -1).bottomRight(50, 1));
|
||||||
//When
|
//When
|
||||||
List<AuthorMarkerAnnotatedEntity> geoAuthorsForGeoCriteria = elasticsearchTemplate.queryForList(queryBuilder.build(), AuthorMarkerAnnotatedEntity.class);
|
List<AuthorMarkerAnnotatedEntity> geoAuthorsForGeoCriteria = elasticsearchTemplate.queryForList(queryBuilder.build(), AuthorMarkerAnnotatedEntity.class);
|
||||||
//Then
|
//Then
|
||||||
@ -202,11 +203,11 @@ public class ElasticsearchTemplateGeoTests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void shouldFindAuthorMarkersInBoxForGivenCriteriaQueryUsingString() {
|
public void shouldFindAuthorMarkersInBoxForGivenCriteriaQueryUsingGeohash() {
|
||||||
//given
|
//given
|
||||||
loadClassBaseEntities();
|
loadClassBaseEntities();
|
||||||
CriteriaQuery geoLocationCriteriaQuery3 = new CriteriaQuery(
|
CriteriaQuery geoLocationCriteriaQuery3 = new CriteriaQuery(
|
||||||
new Criteria("location").boundedBy("53.5171d, 0", "49.5171d, 0.2062d"));
|
new Criteria("location").boundedBy(GeoHashUtils.encode(53.5171d, 0), GeoHashUtils.encode(49.5171d, 0.2062d)));
|
||||||
//when
|
//when
|
||||||
List<AuthorMarkerEntity> geoAuthorsForGeoCriteria3 = elasticsearchTemplate.queryForList(geoLocationCriteriaQuery3, AuthorMarkerEntity.class);
|
List<AuthorMarkerEntity> geoAuthorsForGeoCriteria3 = elasticsearchTemplate.queryForList(geoLocationCriteriaQuery3, AuthorMarkerEntity.class);
|
||||||
|
|
||||||
|
@ -94,10 +94,11 @@ public class CustomMethodRepositoryTests {
|
|||||||
SampleEntity sampleEntity = new SampleEntity();
|
SampleEntity sampleEntity = new SampleEntity();
|
||||||
sampleEntity.setId(documentId);
|
sampleEntity.setId(documentId);
|
||||||
sampleEntity.setType("test");
|
sampleEntity.setType("test");
|
||||||
sampleEntity.setMessage("customQuery");
|
String searchTerm = "customQuery";
|
||||||
|
sampleEntity.setMessage(searchTerm);
|
||||||
repository.save(sampleEntity);
|
repository.save(sampleEntity);
|
||||||
// when
|
// when
|
||||||
Page<SampleEntity> page = repository.findByMessage("customQuery", new PageRequest(0, 10));
|
Page<SampleEntity> page = repository.findByMessage(searchTerm.toLowerCase(), new PageRequest(0, 10));
|
||||||
// then
|
// then
|
||||||
assertThat(page, is(notNullValue()));
|
assertThat(page, is(notNullValue()));
|
||||||
assertThat(page.getTotalElements(), is(greaterThanOrEqualTo(1L)));
|
assertThat(page.getTotalElements(), is(greaterThanOrEqualTo(1L)));
|
||||||
@ -418,8 +419,7 @@ public class CustomMethodRepositoryTests {
|
|||||||
repository.save(sampleEntity);
|
repository.save(sampleEntity);
|
||||||
}
|
}
|
||||||
// when
|
// when
|
||||||
Page<SampleEntity> pageResult = repository.findByMessage("message", new PageRequest(0, 23, new Sort(new Sort.Order(
|
Page<SampleEntity> pageResult = repository.findByMessage("message", new PageRequest(0, 23));
|
||||||
Sort.Direction.ASC, "message"))));
|
|
||||||
// then
|
// then
|
||||||
assertThat(pageResult.getTotalElements(), is(equalTo(30L)));
|
assertThat(pageResult.getTotalElements(), is(equalTo(30L)));
|
||||||
assertThat(pageResult.getContent().size(), is(equalTo(23)));
|
assertThat(pageResult.getContent().size(), is(equalTo(23)));
|
||||||
|
@ -33,10 +33,10 @@ public interface SampleCustomMethodRepository extends ElasticsearchRepository<Sa
|
|||||||
|
|
||||||
Page<SampleEntity> findByTypeNot(String type, Pageable pageable);
|
Page<SampleEntity> findByTypeNot(String type, Pageable pageable);
|
||||||
|
|
||||||
@Query("{\"bool\" : {\"must\" : {\"field\" : {\"message\" : \"?0\"}}}}")
|
@Query("{\"bool\" : {\"must\" : {\"term\" : {\"message\" : \"?0\"}}}}")
|
||||||
Page<SampleEntity> findByMessage(String message, Pageable pageable);
|
Page<SampleEntity> findByMessage(String message, Pageable pageable);
|
||||||
|
|
||||||
@Query("{\"bool\" : {\"must\" : {\"field\" : {\"message\" : \"?0\"}}}}")
|
@Query("{\"bool\" : {\"must\" : {\"term\" : {\"message\" : \"?0\"}}}}")
|
||||||
List<SampleEntity> findByMessage(String message);
|
List<SampleEntity> findByMessage(String message);
|
||||||
|
|
||||||
Page<SampleEntity> findByAvailable(boolean available, Pageable pageable);
|
Page<SampleEntity> findByAvailable(boolean available, Pageable pageable);
|
||||||
|
@ -249,7 +249,7 @@ public class SimpleElasticsearchRepositoryTests {
|
|||||||
// when
|
// when
|
||||||
repository.save(sampleEntities);
|
repository.save(sampleEntities);
|
||||||
// then
|
// then
|
||||||
Page<SampleEntity> entities = repository.search(fieldQuery("id", documentId), new PageRequest(0, 50));
|
Page<SampleEntity> entities = repository.search(termQuery("id", documentId), new PageRequest(0, 50));
|
||||||
assertNotNull(entities);
|
assertNotNull(entities);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -280,7 +280,7 @@ public class SimpleElasticsearchRepositoryTests {
|
|||||||
sampleEntity.setVersion(System.currentTimeMillis());
|
sampleEntity.setVersion(System.currentTimeMillis());
|
||||||
repository.save(sampleEntity);
|
repository.save(sampleEntity);
|
||||||
// when
|
// when
|
||||||
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(fieldQuery("id", documentId)).build();
|
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("id", documentId)).build();
|
||||||
Page<SampleEntity> sampleEntities = repository.search(searchQuery);
|
Page<SampleEntity> sampleEntities = repository.search(searchQuery);
|
||||||
// then
|
// then
|
||||||
assertThat(sampleEntities.getTotalElements(), equalTo(1L));
|
assertThat(sampleEntities.getTotalElements(), equalTo(1L));
|
||||||
@ -308,7 +308,7 @@ public class SimpleElasticsearchRepositoryTests {
|
|||||||
// when
|
// when
|
||||||
repository.delete(sampleEntity);
|
repository.delete(sampleEntity);
|
||||||
// then
|
// then
|
||||||
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(fieldQuery("id", documentId)).build();
|
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("id", documentId)).build();
|
||||||
Page<SampleEntity> sampleEntities = repository.search(searchQuery);
|
Page<SampleEntity> sampleEntities = repository.search(searchQuery);
|
||||||
assertThat(sampleEntities.getTotalElements(), equalTo(0L));
|
assertThat(sampleEntities.getTotalElements(), equalTo(0L));
|
||||||
}
|
}
|
||||||
@ -331,7 +331,7 @@ public class SimpleElasticsearchRepositoryTests {
|
|||||||
repository.save(sampleEntity2);
|
repository.save(sampleEntity2);
|
||||||
|
|
||||||
// when
|
// when
|
||||||
Iterable<SampleEntity> sampleEntities = repository.search(fieldQuery("id", documentId1));
|
Iterable<SampleEntity> sampleEntities = repository.search(termQuery("id", documentId1));
|
||||||
// then
|
// then
|
||||||
assertNotNull("sample entities cant be null..", sampleEntities);
|
assertNotNull("sample entities cant be null..", sampleEntities);
|
||||||
}
|
}
|
||||||
@ -371,7 +371,7 @@ public class SimpleElasticsearchRepositoryTests {
|
|||||||
// when
|
// when
|
||||||
repository.index(sampleEntity);
|
repository.index(sampleEntity);
|
||||||
// then
|
// then
|
||||||
Page<SampleEntity> entities = repository.search(fieldQuery("id", documentId), new PageRequest(0, 50));
|
Page<SampleEntity> entities = repository.search(termQuery("id", documentId), new PageRequest(0, 50));
|
||||||
assertThat(entities.getTotalElements(), equalTo(1L));
|
assertThat(entities.getTotalElements(), equalTo(1L));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,9 +12,9 @@ Import-Template:
|
|||||||
org.apache.commons.lang.*;version="${commonslang:[=.=.=,+1.0.0)}",
|
org.apache.commons.lang.*;version="${commonslang:[=.=.=,+1.0.0)}",
|
||||||
com.fasterxml.jackson.*;version="${jackson:[=.=.=,+1.0.0)}";resolution:=optional,
|
com.fasterxml.jackson.*;version="${jackson:[=.=.=,+1.0.0)}";resolution:=optional,
|
||||||
org.elasticsearch.*;version="${elasticsearch:[=.=.=,+1.0.0)}",
|
org.elasticsearch.*;version="${elasticsearch:[=.=.=,+1.0.0)}",
|
||||||
|
org.apache.lucene.*;version="4.6.1",
|
||||||
org.joda.time.*;version="${jodatime:[=.=.=,+1.0.0)}",
|
org.joda.time.*;version="${jodatime:[=.=.=,+1.0.0)}",
|
||||||
org.slf4j.*;version="${slf4j:[=.=.=,+1.0.0)}",
|
org.slf4j.*;version="${slf4j:[=.=.=,+1.0.0)}",
|
||||||
org.springframework.*;version="${spring:[=.=.=.=,+1.0.0)}",
|
org.springframework.*;version="${spring:[=.=.=.=,+1.0.0)}",
|
||||||
org.springframework.data.*;version="${springdata.commons:[=.=.=.=,+1.0.0)}",
|
org.springframework.data.*;version="${springdata.commons:[=.=.=.=,+1.0.0)}",
|
||||||
org.w3c.*;version="0.0.0"
|
org.w3c.*;version="0.0.0"
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user