mirror of
https://github.com/spring-projects/spring-data-elasticsearch.git
synced 2025-07-28 13:13:26 +00:00
DATAES-579 - Polishing.
Use Lombok's Data where possible. Extract duplicate code into ResourceUtil and StreamQueries. Generalize multiGet to return List instead of LinkedList. Reorder methods. Reduce properties usage by removing unused properties from test entities. Remove final keyword usage in methods. Formatting. Original pull request: #283.
This commit is contained in:
parent
4c206f7de5
commit
198ad0e02b
@ -15,41 +15,81 @@
|
|||||||
*/
|
*/
|
||||||
package org.springframework.data.elasticsearch.annotations;
|
package org.springframework.data.elasticsearch.annotations;
|
||||||
|
|
||||||
import java.lang.annotation.*;
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Inherited;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
import org.elasticsearch.index.VersionType;
|
import org.elasticsearch.index.VersionType;
|
||||||
|
|
||||||
import org.springframework.data.annotation.Persistent;
|
import org.springframework.data.annotation.Persistent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Document
|
* Identifies a domain object to be persisted to Elasticsearch.
|
||||||
*
|
*
|
||||||
* @author Rizwan Idrees
|
* @author Rizwan Idrees
|
||||||
* @author Mohsin Husen
|
* @author Mohsin Husen
|
||||||
* @author Mason Chan
|
* @author Mason Chan
|
||||||
* @author Ivan Greene
|
* @author Ivan Greene
|
||||||
|
* @author Mark Paluch
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@Persistent
|
@Persistent
|
||||||
@Inherited
|
@Inherited
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
@Target({ElementType.TYPE})
|
@Target({ ElementType.TYPE })
|
||||||
public @interface Document {
|
public @interface Document {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Name of the Elasticsearch index.
|
||||||
|
* <ul>
|
||||||
|
* <li>Lowercase only</li>
|
||||||
|
* <li><Cannot include \, /, *, ?, ", <, >, |, ` ` (space character), ,, #/li>
|
||||||
|
* <li>Cannot start with -, _, +</li>
|
||||||
|
* <li>Cannot be . or ..</li>
|
||||||
|
* <li>Cannot be longer than 255 bytes (note it is bytes, so multi-byte characters will count towards the 255 limit
|
||||||
|
* faster)</li>
|
||||||
|
* </ul>
|
||||||
|
*/
|
||||||
String indexName();
|
String indexName();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mapping type name.
|
||||||
|
*/
|
||||||
String type() default "";
|
String type() default "";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use server-side settings when creating the index.
|
||||||
|
*/
|
||||||
boolean useServerConfiguration() default false;
|
boolean useServerConfiguration() default false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Number of shards for the index {@link #indexName()}. Used for index creation.
|
||||||
|
*/
|
||||||
short shards() default 5;
|
short shards() default 5;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Number of replicas for the index {@link #indexName()}. Used for index creation.
|
||||||
|
*/
|
||||||
short replicas() default 1;
|
short replicas() default 1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Refresh interval for the index {@link #indexName()}. Used for index creation.
|
||||||
|
*/
|
||||||
String refreshInterval() default "1s";
|
String refreshInterval() default "1s";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Index storage type for the index {@link #indexName()}. Used for index creation.
|
||||||
|
*/
|
||||||
String indexStoreType() default "fs";
|
String indexStoreType() default "fs";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configuration whether to create an index on repository bootstrapping.
|
||||||
|
*/
|
||||||
boolean createIndex() default true;
|
boolean createIndex() default true;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configuration of version management.
|
||||||
|
*/
|
||||||
VersionType versionType() default VersionType.EXTERNAL;
|
VersionType versionType() default VersionType.EXTERNAL;
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,6 @@ import java.io.IOException;
|
|||||||
import java.nio.charset.Charset;
|
import java.nio.charset.Charset;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.elasticsearch.action.get.GetResponse;
|
import org.elasticsearch.action.get.GetResponse;
|
||||||
@ -29,6 +28,7 @@ import org.elasticsearch.action.get.MultiGetResponse;
|
|||||||
import org.elasticsearch.action.search.SearchResponse;
|
import org.elasticsearch.action.search.SearchResponse;
|
||||||
import org.elasticsearch.common.document.DocumentField;
|
import org.elasticsearch.common.document.DocumentField;
|
||||||
import org.elasticsearch.search.SearchHit;
|
import org.elasticsearch.search.SearchHit;
|
||||||
|
|
||||||
import org.springframework.core.convert.ConversionService;
|
import org.springframework.core.convert.ConversionService;
|
||||||
import org.springframework.core.convert.support.DefaultConversionService;
|
import org.springframework.core.convert.support.DefaultConversionService;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
@ -189,8 +189,8 @@ public class DefaultResultMapper extends AbstractResultMapper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> LinkedList<T> mapResults(MultiGetResponse responses, Class<T> clazz) {
|
public <T> List<T> mapResults(MultiGetResponse responses, Class<T> clazz) {
|
||||||
LinkedList<T> list = new LinkedList<>();
|
List<T> list = new ArrayList<>();
|
||||||
for (MultiGetItemResponse response : responses.getResponses()) {
|
for (MultiGetItemResponse response : responses.getResponses()) {
|
||||||
if (!response.isFailed() && response.getResponse().isExists()) {
|
if (!response.isFailed() && response.getResponse().isExists()) {
|
||||||
T result = mapEntity(response.getResponse().getSourceAsString(), clazz);
|
T result = mapEntity(response.getResponse().getSourceAsString(), clazz);
|
||||||
|
@ -15,20 +15,28 @@
|
|||||||
*/
|
*/
|
||||||
package org.springframework.data.elasticsearch.core;
|
package org.springframework.data.elasticsearch.core;
|
||||||
|
|
||||||
import org.elasticsearch.action.update.UpdateResponse;
|
|
||||||
import org.elasticsearch.cluster.metadata.AliasMetaData;
|
|
||||||
import org.elasticsearch.common.Nullable;
|
|
||||||
import org.springframework.data.domain.Page;
|
|
||||||
import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter;
|
|
||||||
import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentEntity;
|
|
||||||
import org.springframework.data.elasticsearch.core.query.*;
|
|
||||||
import org.springframework.data.util.CloseableIterator;
|
|
||||||
|
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import org.elasticsearch.action.update.UpdateResponse;
|
||||||
|
import org.elasticsearch.cluster.metadata.AliasMetaData;
|
||||||
|
import org.elasticsearch.common.Nullable;
|
||||||
|
|
||||||
|
import org.springframework.data.domain.Page;
|
||||||
|
import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter;
|
||||||
|
import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentEntity;
|
||||||
|
import org.springframework.data.elasticsearch.core.query.AliasQuery;
|
||||||
|
import org.springframework.data.elasticsearch.core.query.CriteriaQuery;
|
||||||
|
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.MoreLikeThisQuery;
|
||||||
|
import org.springframework.data.elasticsearch.core.query.SearchQuery;
|
||||||
|
import org.springframework.data.elasticsearch.core.query.StringQuery;
|
||||||
|
import org.springframework.data.elasticsearch.core.query.UpdateQuery;
|
||||||
|
import org.springframework.data.util.CloseableIterator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ElasticsearchOperations
|
* ElasticsearchOperations
|
||||||
*
|
*
|
||||||
@ -42,9 +50,20 @@ import java.util.stream.Collectors;
|
|||||||
public interface ElasticsearchOperations {
|
public interface ElasticsearchOperations {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Converter in use
|
* adding new alias
|
||||||
|
*
|
||||||
|
* @param query
|
||||||
|
* @return
|
||||||
*/
|
*/
|
||||||
ElasticsearchConverter getElasticsearchConverter();
|
boolean addAlias(AliasQuery query);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* removing previously created alias
|
||||||
|
*
|
||||||
|
* @param query
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
boolean removeAlias(AliasQuery query);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create an index for a class
|
* Create an index for a class
|
||||||
@ -102,7 +121,6 @@ public interface ElasticsearchOperations {
|
|||||||
*/
|
*/
|
||||||
<T> boolean putMapping(Class<T> clazz, Object mappings);
|
<T> boolean putMapping(Class<T> clazz, Object mappings);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get mapping for a class
|
* Get mapping for a class
|
||||||
*
|
*
|
||||||
@ -133,6 +151,15 @@ public interface ElasticsearchOperations {
|
|||||||
*/
|
*/
|
||||||
<T> Map<String, Object> getSetting(Class<T> clazz);
|
<T> Map<String, Object> getSetting(Class<T> clazz);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get all the alias pointing to specified index
|
||||||
|
*
|
||||||
|
* @param indexName
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<AliasMetaData> queryForAlias(String indexName);
|
||||||
|
|
||||||
|
<T> T query(SearchQuery query, ResultsExtractor<T> resultsExtractor);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Execute the query against elasticsearch and return the first returned object
|
* Execute the query against elasticsearch and return the first returned object
|
||||||
@ -199,7 +226,8 @@ public interface ElasticsearchOperations {
|
|||||||
<T> List<Page<T>> queryForPage(List<SearchQuery> queries, Class<T> clazz);
|
<T> List<Page<T>> queryForPage(List<SearchQuery> queries, Class<T> clazz);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Execute the multi-search against elasticsearch and return result as {@link List} of {@link Page} using custom mapper
|
* Execute the multi-search against elasticsearch and return result as {@link List} of {@link Page} using custom
|
||||||
|
* mapper
|
||||||
*
|
*
|
||||||
* @param queries
|
* @param queries
|
||||||
* @param clazz
|
* @param clazz
|
||||||
@ -217,7 +245,8 @@ public interface ElasticsearchOperations {
|
|||||||
List<Page<?>> queryForPage(List<SearchQuery> queries, List<Class<?>> classes);
|
List<Page<?>> queryForPage(List<SearchQuery> queries, List<Class<?>> classes);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Execute the multi-search against elasticsearch and return result as {@link List} of {@link Page} using custom mapper
|
* Execute the multi-search against elasticsearch and return result as {@link List} of {@link Page} using custom
|
||||||
|
* mapper
|
||||||
*
|
*
|
||||||
* @param queries
|
* @param queries
|
||||||
* @param classes
|
* @param classes
|
||||||
@ -255,7 +284,8 @@ public interface ElasticsearchOperations {
|
|||||||
/**
|
/**
|
||||||
* Executes the given {@link CriteriaQuery} against elasticsearch and return result as {@link CloseableIterator}.
|
* Executes the given {@link CriteriaQuery} against elasticsearch and return result as {@link CloseableIterator}.
|
||||||
* <p>
|
* <p>
|
||||||
* Returns a {@link CloseableIterator} that wraps an Elasticsearch scroll context that needs to be closed in case of error.
|
* Returns a {@link CloseableIterator} that wraps an Elasticsearch scroll context that needs to be closed in case of
|
||||||
|
* error.
|
||||||
*
|
*
|
||||||
* @param <T> element return type
|
* @param <T> element return type
|
||||||
* @param query
|
* @param query
|
||||||
@ -268,7 +298,8 @@ public interface ElasticsearchOperations {
|
|||||||
/**
|
/**
|
||||||
* Executes the given {@link SearchQuery} against elasticsearch and return result as {@link CloseableIterator}.
|
* Executes the given {@link SearchQuery} against elasticsearch and return result as {@link CloseableIterator}.
|
||||||
* <p>
|
* <p>
|
||||||
* Returns a {@link CloseableIterator} that wraps an Elasticsearch scroll context that needs to be closed in case of error.
|
* Returns a {@link CloseableIterator} that wraps an Elasticsearch scroll context that needs to be closed in case of
|
||||||
|
* error.
|
||||||
*
|
*
|
||||||
* @param <T> element return type
|
* @param <T> element return type
|
||||||
* @param query
|
* @param query
|
||||||
@ -279,9 +310,11 @@ public interface ElasticsearchOperations {
|
|||||||
<T> CloseableIterator<T> stream(SearchQuery query, Class<T> clazz);
|
<T> CloseableIterator<T> stream(SearchQuery query, Class<T> clazz);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Executes the given {@link SearchQuery} against elasticsearch and return result as {@link CloseableIterator} using custom mapper.
|
* Executes the given {@link SearchQuery} against elasticsearch and return result as {@link CloseableIterator} using
|
||||||
|
* custom mapper.
|
||||||
* <p>
|
* <p>
|
||||||
* Returns a {@link CloseableIterator} that wraps an Elasticsearch scroll context that needs to be closed in case of error.
|
* Returns a {@link CloseableIterator} that wraps an Elasticsearch scroll context that needs to be closed in case of
|
||||||
|
* error.
|
||||||
*
|
*
|
||||||
* @param <T> element return type
|
* @param <T> element return type
|
||||||
* @param query
|
* @param query
|
||||||
@ -394,7 +427,7 @@ public interface ElasticsearchOperations {
|
|||||||
* @param clazz
|
* @param clazz
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
<T> LinkedList<T> multiGet(SearchQuery searchQuery, Class<T> clazz);
|
<T> List<T> multiGet(SearchQuery searchQuery, Class<T> clazz);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Execute a multiGet against elasticsearch for the given ids with MultiGetResultMapper
|
* Execute a multiGet against elasticsearch for the given ids with MultiGetResultMapper
|
||||||
@ -404,7 +437,7 @@ public interface ElasticsearchOperations {
|
|||||||
* @param multiGetResultMapper
|
* @param multiGetResultMapper
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
<T> LinkedList<T> multiGet(SearchQuery searchQuery, Class<T> clazz, MultiGetResultMapper multiGetResultMapper);
|
<T> List<T> multiGet(SearchQuery searchQuery, Class<T> clazz, MultiGetResultMapper multiGetResultMapper);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Index an object. Will do save or update
|
* Index an object. Will do save or update
|
||||||
@ -446,7 +479,6 @@ public interface ElasticsearchOperations {
|
|||||||
*/
|
*/
|
||||||
String delete(String indexName, String type, String id);
|
String delete(String indexName, String type, String id);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete all records matching the criteria
|
* Delete all records matching the criteria
|
||||||
*
|
*
|
||||||
@ -454,6 +486,7 @@ public interface ElasticsearchOperations {
|
|||||||
* @param criteriaQuery
|
* @param criteriaQuery
|
||||||
*/
|
*/
|
||||||
<T> void delete(CriteriaQuery criteriaQuery, Class<T> clazz);
|
<T> void delete(CriteriaQuery criteriaQuery, Class<T> clazz);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete the one object with provided id
|
* Delete the one object with provided id
|
||||||
*
|
*
|
||||||
@ -525,7 +558,6 @@ public interface ElasticsearchOperations {
|
|||||||
* refresh the index
|
* refresh the index
|
||||||
*
|
*
|
||||||
* @param indexName
|
* @param indexName
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
void refresh(String indexName);
|
void refresh(String indexName);
|
||||||
|
|
||||||
@ -533,7 +565,6 @@ public interface ElasticsearchOperations {
|
|||||||
* refresh the index
|
* refresh the index
|
||||||
*
|
*
|
||||||
* @param clazz
|
* @param clazz
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
<T> void refresh(Class<T> clazz);
|
<T> void refresh(Class<T> clazz);
|
||||||
|
|
||||||
@ -542,7 +573,7 @@ public interface ElasticsearchOperations {
|
|||||||
*
|
*
|
||||||
* @param query The search query.
|
* @param query The search query.
|
||||||
* @param scrollTimeInMillis The time in millisecond for scroll feature
|
* @param scrollTimeInMillis The time in millisecond for scroll feature
|
||||||
* {@link org.elasticsearch.action.search.SearchRequestBuilder#setScroll(org.elasticsearch.common.unit.TimeValue)}.
|
* {@link org.elasticsearch.action.search.SearchRequestBuilder#setScroll(org.elasticsearch.common.unit.TimeValue)}.
|
||||||
* @param clazz The class of entity to retrieve.
|
* @param clazz The class of entity to retrieve.
|
||||||
* @return The scan id for input query.
|
* @return The scan id for input query.
|
||||||
*/
|
*/
|
||||||
@ -553,18 +584,19 @@ public interface ElasticsearchOperations {
|
|||||||
*
|
*
|
||||||
* @param query The search query.
|
* @param query The search query.
|
||||||
* @param scrollTimeInMillis The time in millisecond for scroll feature
|
* @param scrollTimeInMillis The time in millisecond for scroll feature
|
||||||
* {@link org.elasticsearch.action.search.SearchRequestBuilder#setScroll(org.elasticsearch.common.unit.TimeValue)}.
|
* {@link org.elasticsearch.action.search.SearchRequestBuilder#setScroll(org.elasticsearch.common.unit.TimeValue)}.
|
||||||
* @param mapper Custom impl to map result to entities
|
* @param mapper Custom impl to map result to entities
|
||||||
* @return The scan id for input query.
|
* @return The scan id for input query.
|
||||||
*/
|
*/
|
||||||
<T> ScrolledPage<T> startScroll(long scrollTimeInMillis, SearchQuery query, Class<T> clazz, SearchResultMapper mapper);
|
<T> ScrolledPage<T> startScroll(long scrollTimeInMillis, SearchQuery query, Class<T> clazz,
|
||||||
|
SearchResultMapper mapper);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns scrolled page for given query
|
* Returns scrolled page for given query
|
||||||
*
|
*
|
||||||
* @param criteriaQuery The search query.
|
* @param criteriaQuery The search query.
|
||||||
* @param scrollTimeInMillis The time in millisecond for scroll feature
|
* @param scrollTimeInMillis The time in millisecond for scroll feature
|
||||||
* {@link org.elasticsearch.action.search.SearchRequestBuilder#setScroll(org.elasticsearch.common.unit.TimeValue)}.
|
* {@link org.elasticsearch.action.search.SearchRequestBuilder#setScroll(org.elasticsearch.common.unit.TimeValue)}.
|
||||||
* @param clazz The class of entity to retrieve.
|
* @param clazz The class of entity to retrieve.
|
||||||
* @return The scan id for input query.
|
* @return The scan id for input query.
|
||||||
*/
|
*/
|
||||||
@ -575,20 +607,22 @@ public interface ElasticsearchOperations {
|
|||||||
*
|
*
|
||||||
* @param criteriaQuery The search query.
|
* @param criteriaQuery The search query.
|
||||||
* @param scrollTimeInMillis The time in millisecond for scroll feature
|
* @param scrollTimeInMillis The time in millisecond for scroll feature
|
||||||
* {@link org.elasticsearch.action.search.SearchRequestBuilder#setScroll(org.elasticsearch.common.unit.TimeValue)}.
|
* {@link org.elasticsearch.action.search.SearchRequestBuilder#setScroll(org.elasticsearch.common.unit.TimeValue)}.
|
||||||
* @param mapper Custom impl to map result to entities
|
* @param mapper Custom impl to map result to entities
|
||||||
* @return The scan id for input query.
|
* @return The scan id for input query.
|
||||||
*/
|
*/
|
||||||
<T> ScrolledPage<T> startScroll(long scrollTimeInMillis, CriteriaQuery criteriaQuery, Class<T> clazz, SearchResultMapper mapper);
|
<T> ScrolledPage<T> startScroll(long scrollTimeInMillis, CriteriaQuery criteriaQuery, Class<T> clazz,
|
||||||
|
SearchResultMapper mapper);
|
||||||
|
|
||||||
<T> ScrolledPage<T> continueScroll(@Nullable String scrollId, long scrollTimeInMillis, Class<T> clazz);
|
<T> ScrolledPage<T> continueScroll(@Nullable String scrollId, long scrollTimeInMillis, Class<T> clazz);
|
||||||
<T> ScrolledPage<T> continueScroll(@Nullable String scrollId, long scrollTimeInMillis, Class<T> clazz, SearchResultMapper mapper);
|
|
||||||
|
<T> ScrolledPage<T> continueScroll(@Nullable String scrollId, long scrollTimeInMillis, Class<T> clazz,
|
||||||
|
SearchResultMapper mapper);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clears the search contexts associated with specified scroll ids.
|
* Clears the search contexts associated with specified scroll ids.
|
||||||
*
|
*
|
||||||
* @param scrollId
|
* @param scrollId
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
<T> void clearScroll(String scrollId);
|
<T> void clearScroll(String scrollId);
|
||||||
|
|
||||||
@ -602,33 +636,10 @@ public interface ElasticsearchOperations {
|
|||||||
*/
|
*/
|
||||||
<T> Page<T> moreLikeThis(MoreLikeThisQuery query, Class<T> clazz);
|
<T> Page<T> moreLikeThis(MoreLikeThisQuery query, Class<T> clazz);
|
||||||
|
|
||||||
/**
|
|
||||||
* adding new alias
|
|
||||||
*
|
|
||||||
* @param query
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
Boolean addAlias(AliasQuery query);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* removing previously created alias
|
|
||||||
*
|
|
||||||
* @param query
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
Boolean removeAlias(AliasQuery query);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* get all the alias pointing to specified index
|
|
||||||
*
|
|
||||||
* @param indexName
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
List<AliasMetaData> queryForAlias(String indexName);
|
|
||||||
|
|
||||||
|
|
||||||
<T> T query(SearchQuery query, ResultsExtractor<T> resultsExtractor);
|
|
||||||
|
|
||||||
|
|
||||||
ElasticsearchPersistentEntity getPersistentEntityFor(Class clazz);
|
ElasticsearchPersistentEntity getPersistentEntityFor(Class clazz);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Converter in use
|
||||||
|
*/
|
||||||
|
ElasticsearchConverter getElasticsearchConverter();
|
||||||
}
|
}
|
||||||
|
@ -20,16 +20,12 @@ import static org.elasticsearch.index.query.QueryBuilders.*;
|
|||||||
import static org.springframework.util.CollectionUtils.isEmpty;
|
import static org.springframework.util.CollectionUtils.isEmpty;
|
||||||
import static org.springframework.util.StringUtils.*;
|
import static org.springframework.util.StringUtils.*;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStreamReader;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.NoSuchElementException;
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@ -93,7 +89,6 @@ import org.slf4j.LoggerFactory;
|
|||||||
import org.springframework.beans.BeansException;
|
import org.springframework.beans.BeansException;
|
||||||
import org.springframework.context.ApplicationContext;
|
import org.springframework.context.ApplicationContext;
|
||||||
import org.springframework.context.ApplicationContextAware;
|
import org.springframework.context.ApplicationContextAware;
|
||||||
import org.springframework.core.io.ClassPathResource;
|
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.data.domain.Sort;
|
import org.springframework.data.domain.Sort;
|
||||||
@ -195,6 +190,48 @@ public class ElasticsearchRestTemplate
|
|||||||
this.searchTimeout = searchTimeout;
|
this.searchTimeout = searchTimeout;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean addAlias(AliasQuery query) {
|
||||||
|
Assert.notNull(query.getIndexName(), "No index defined for Alias");
|
||||||
|
Assert.notNull(query.getAliasName(), "No alias defined");
|
||||||
|
IndicesAliasesRequest.AliasActions aliasAction = IndicesAliasesRequest.AliasActions.add()
|
||||||
|
.alias(query.getAliasName()).index(query.getIndexName());
|
||||||
|
|
||||||
|
if (query.getFilterBuilder() != null) {
|
||||||
|
aliasAction.filter(query.getFilterBuilder());
|
||||||
|
} else if (query.getFilter() != null) {
|
||||||
|
aliasAction.filter(query.getFilter());
|
||||||
|
} else if (hasText(query.getRouting())) {
|
||||||
|
aliasAction.routing(query.getRouting());
|
||||||
|
} else if (hasText(query.getSearchRouting())) {
|
||||||
|
aliasAction.searchRouting(query.getSearchRouting());
|
||||||
|
} else if (hasText(query.getIndexRouting())) {
|
||||||
|
aliasAction.indexRouting(query.getIndexRouting());
|
||||||
|
}
|
||||||
|
|
||||||
|
IndicesAliasesRequest request = new IndicesAliasesRequest();
|
||||||
|
request.addAliasAction(aliasAction);
|
||||||
|
try {
|
||||||
|
return client.indices().updateAliases(request).isAcknowledged();
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new ElasticsearchException("failed to update aliases with request: " + request, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean removeAlias(AliasQuery query) {
|
||||||
|
Assert.notNull(query.getIndexName(), "No index defined for Alias");
|
||||||
|
Assert.notNull(query.getAliasName(), "No alias defined");
|
||||||
|
IndicesAliasesRequest request = new IndicesAliasesRequest();
|
||||||
|
AliasActions aliasAction = new AliasActions(AliasActions.Type.REMOVE);
|
||||||
|
request.addAliasAction(aliasAction);
|
||||||
|
try {
|
||||||
|
return client.indices().updateAliases(request).isAcknowledged();
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new ElasticsearchException("failed to update aliases with request: " + request, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> boolean createIndex(Class<T> clazz) {
|
public <T> boolean createIndex(Class<T> clazz) {
|
||||||
return createIndexIfNotCreated(clazz);
|
return createIndexIfNotCreated(clazz);
|
||||||
@ -215,7 +252,7 @@ public class ElasticsearchRestTemplate
|
|||||||
if (clazz.isAnnotationPresent(Mapping.class)) {
|
if (clazz.isAnnotationPresent(Mapping.class)) {
|
||||||
String mappingPath = clazz.getAnnotation(Mapping.class).mappingPath();
|
String mappingPath = clazz.getAnnotation(Mapping.class).mappingPath();
|
||||||
if (hasText(mappingPath)) {
|
if (hasText(mappingPath)) {
|
||||||
String mappings = readFileFromClasspath(mappingPath);
|
String mappings = ResourceUtil.readFileFromClasspath(mappingPath);
|
||||||
if (hasText(mappings)) {
|
if (hasText(mappings)) {
|
||||||
return putMapping(clazz, mappings);
|
return putMapping(clazz, mappings);
|
||||||
}
|
}
|
||||||
@ -257,10 +294,10 @@ public class ElasticsearchRestTemplate
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map getMapping(String indexName, String type) {
|
public Map<String, Object> getMapping(String indexName, String type) {
|
||||||
Assert.notNull(indexName, "No index defined for getMapping()");
|
Assert.notNull(indexName, "No index defined for getMapping()");
|
||||||
Assert.notNull(type, "No type defined for getMapping()");
|
Assert.notNull(type, "No type defined for getMapping()");
|
||||||
Map mappings = null;
|
Map<String, Object> mappings = null;
|
||||||
RestClient restClient = client.getLowLevelClient();
|
RestClient restClient = client.getLowLevelClient();
|
||||||
try {
|
try {
|
||||||
Response response = restClient.performRequest("GET", "/" + indexName + "/_mapping/" + type);
|
Response response = restClient.performRequest("GET", "/" + indexName + "/_mapping/" + type);
|
||||||
@ -273,7 +310,7 @@ public class ElasticsearchRestTemplate
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> Map getMapping(Class<T> clazz) {
|
public <T> Map<String, Object> getMapping(Class<T> clazz) {
|
||||||
return getMapping(getPersistentEntityFor(clazz).getIndexName(), getPersistentEntityFor(clazz).getIndexType());
|
return getMapping(getPersistentEntityFor(clazz).getIndexName(), getPersistentEntityFor(clazz).getIndexType());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -281,7 +318,7 @@ public class ElasticsearchRestTemplate
|
|||||||
ObjectMapper mapper = new ObjectMapper();
|
ObjectMapper mapper = new ObjectMapper();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Map result = null;
|
Map<String, Object> result = null;
|
||||||
JsonNode node = mapper.readTree(mappingResponse);
|
JsonNode node = mapper.readTree(mappingResponse);
|
||||||
|
|
||||||
node = node.findValue("mappings").findValue(type);
|
node = node.findValue("mappings").findValue(type);
|
||||||
@ -312,8 +349,7 @@ public class ElasticsearchRestTemplate
|
|||||||
GetResponse response;
|
GetResponse response;
|
||||||
try {
|
try {
|
||||||
response = client.get(request);
|
response = client.get(request);
|
||||||
T entity = mapper.mapResult(response, clazz);
|
return mapper.mapResult(response, clazz);
|
||||||
return entity;
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
throw new ElasticsearchException("Error while getting for request: " + request.toString(), e);
|
throw new ElasticsearchException("Error while getting for request: " + request.toString(), e);
|
||||||
}
|
}
|
||||||
@ -497,7 +533,7 @@ public class ElasticsearchRestTemplate
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> CloseableIterator<T> stream(CriteriaQuery query, Class<T> clazz) {
|
public <T> CloseableIterator<T> stream(CriteriaQuery query, Class<T> clazz) {
|
||||||
final long scrollTimeInMillis = TimeValue.timeValueMinutes(1).millis();
|
long scrollTimeInMillis = TimeValue.timeValueMinutes(1).millis();
|
||||||
return doStream(scrollTimeInMillis, startScroll(scrollTimeInMillis, query, clazz), clazz, resultsMapper);
|
return doStream(scrollTimeInMillis, startScroll(scrollTimeInMillis, query, clazz), clazz, resultsMapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -507,68 +543,15 @@ public class ElasticsearchRestTemplate
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> CloseableIterator<T> stream(SearchQuery query, final Class<T> clazz, final SearchResultMapper mapper) {
|
public <T> CloseableIterator<T> stream(SearchQuery query, Class<T> clazz, SearchResultMapper mapper) {
|
||||||
final long scrollTimeInMillis = TimeValue.timeValueMinutes(1).millis();
|
long scrollTimeInMillis = TimeValue.timeValueMinutes(1).millis();
|
||||||
return doStream(scrollTimeInMillis, startScroll(scrollTimeInMillis, query, clazz, mapper), clazz, mapper);
|
return doStream(scrollTimeInMillis, startScroll(scrollTimeInMillis, query, clazz, mapper), clazz, mapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
private <T> CloseableIterator<T> doStream(final long scrollTimeInMillis, final ScrolledPage<T> page,
|
private <T> CloseableIterator<T> doStream(long scrollTimeInMillis, ScrolledPage<T> page, Class<T> clazz,
|
||||||
final Class<T> clazz, final SearchResultMapper mapper) {
|
SearchResultMapper mapper) {
|
||||||
return new CloseableIterator<T>() {
|
return StreamQueries.streamResults(page, scrollId -> continueScroll(scrollId, scrollTimeInMillis, clazz, mapper),
|
||||||
|
this::clearScroll);
|
||||||
/** As we couldn't retrieve single result with scroll, store current hits. */
|
|
||||||
private volatile Iterator<T> currentHits = page.iterator();
|
|
||||||
|
|
||||||
/** The scroll id. */
|
|
||||||
private volatile String scrollId = page.getScrollId();
|
|
||||||
|
|
||||||
/** If stream is finished (ie: cluster returns no results. */
|
|
||||||
private volatile boolean finished = !currentHits.hasNext();
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void close() {
|
|
||||||
try {
|
|
||||||
// Clear scroll on cluster only in case of error (cause elasticsearch auto clear scroll when it's done)
|
|
||||||
if (!finished && scrollId != null && currentHits != null && currentHits.hasNext()) {
|
|
||||||
clearScroll(scrollId);
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
currentHits = null;
|
|
||||||
scrollId = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean hasNext() {
|
|
||||||
// Test if stream is finished
|
|
||||||
if (finished) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
// Test if it remains hits
|
|
||||||
if (currentHits == null || !currentHits.hasNext()) {
|
|
||||||
// Do a new request
|
|
||||||
final ScrolledPage<T> scroll = continueScroll(scrollId, scrollTimeInMillis, clazz, mapper);
|
|
||||||
// Save hits and scroll id
|
|
||||||
currentHits = scroll.iterator();
|
|
||||||
finished = !currentHits.hasNext();
|
|
||||||
scrollId = scroll.getScrollId();
|
|
||||||
}
|
|
||||||
return currentHits.hasNext();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public T next() {
|
|
||||||
if (hasNext()) {
|
|
||||||
return currentHits.next();
|
|
||||||
}
|
|
||||||
throw new NoSuchElementException();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void remove() {
|
|
||||||
throw new UnsupportedOperationException("remove");
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -658,7 +641,7 @@ public class ElasticsearchRestTemplate
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> LinkedList<T> multiGet(SearchQuery searchQuery, Class<T> clazz) {
|
public <T> List<T> multiGet(SearchQuery searchQuery, Class<T> clazz) {
|
||||||
return resultsMapper.mapResults(getMultiResponse(searchQuery, clazz), clazz);
|
return resultsMapper.mapResults(getMultiResponse(searchQuery, clazz), clazz);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -697,7 +680,7 @@ public class ElasticsearchRestTemplate
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> LinkedList<T> multiGet(SearchQuery searchQuery, Class<T> clazz, MultiGetResultMapper getResultMapper) {
|
public <T> List<T> multiGet(SearchQuery searchQuery, Class<T> clazz, MultiGetResultMapper getResultMapper) {
|
||||||
return getResultMapper.mapResults(getMultiResponse(searchQuery, clazz), clazz);
|
return getResultMapper.mapResults(getMultiResponse(searchQuery, clazz), clazz);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1162,7 +1145,7 @@ public class ElasticsearchRestTemplate
|
|||||||
if (clazz.isAnnotationPresent(Setting.class)) {
|
if (clazz.isAnnotationPresent(Setting.class)) {
|
||||||
String settingPath = clazz.getAnnotation(Setting.class).settingPath();
|
String settingPath = clazz.getAnnotation(Setting.class).settingPath();
|
||||||
if (hasText(settingPath)) {
|
if (hasText(settingPath)) {
|
||||||
String settings = readFileFromClasspath(settingPath);
|
String settings = ResourceUtil.readFileFromClasspath(settingPath);
|
||||||
if (hasText(settings)) {
|
if (hasText(settings)) {
|
||||||
return createIndex(getPersistentEntityFor(clazz).getIndexName(), settings);
|
return createIndex(getPersistentEntityFor(clazz).getIndexName(), settings);
|
||||||
}
|
}
|
||||||
@ -1375,48 +1358,6 @@ public class ElasticsearchRestTemplate
|
|||||||
refresh(getPersistentEntityFor(clazz).getIndexName());
|
refresh(getPersistentEntityFor(clazz).getIndexName());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Boolean addAlias(AliasQuery query) {
|
|
||||||
Assert.notNull(query.getIndexName(), "No index defined for Alias");
|
|
||||||
Assert.notNull(query.getAliasName(), "No alias defined");
|
|
||||||
final IndicesAliasesRequest.AliasActions aliasAction = IndicesAliasesRequest.AliasActions.add()
|
|
||||||
.alias(query.getAliasName()).index(query.getIndexName());
|
|
||||||
|
|
||||||
if (query.getFilterBuilder() != null) {
|
|
||||||
aliasAction.filter(query.getFilterBuilder());
|
|
||||||
} else if (query.getFilter() != null) {
|
|
||||||
aliasAction.filter(query.getFilter());
|
|
||||||
} else if (hasText(query.getRouting())) {
|
|
||||||
aliasAction.routing(query.getRouting());
|
|
||||||
} else if (hasText(query.getSearchRouting())) {
|
|
||||||
aliasAction.searchRouting(query.getSearchRouting());
|
|
||||||
} else if (hasText(query.getIndexRouting())) {
|
|
||||||
aliasAction.indexRouting(query.getIndexRouting());
|
|
||||||
}
|
|
||||||
|
|
||||||
IndicesAliasesRequest request = new IndicesAliasesRequest();
|
|
||||||
request.addAliasAction(aliasAction);
|
|
||||||
try {
|
|
||||||
return client.indices().updateAliases(request).isAcknowledged();
|
|
||||||
} catch (IOException e) {
|
|
||||||
throw new ElasticsearchException("failed to update aliases with request: " + request, e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Boolean removeAlias(AliasQuery query) {
|
|
||||||
Assert.notNull(query.getIndexName(), "No index defined for Alias");
|
|
||||||
Assert.notNull(query.getAliasName(), "No alias defined");
|
|
||||||
IndicesAliasesRequest request = new IndicesAliasesRequest();
|
|
||||||
AliasActions aliasAction = new AliasActions(AliasActions.Type.REMOVE);
|
|
||||||
request.addAliasAction(aliasAction);
|
|
||||||
try {
|
|
||||||
return client.indices().updateAliases(request).isAcknowledged();
|
|
||||||
} catch (IOException e) {
|
|
||||||
throw new ElasticsearchException("failed to update aliases with request: " + request, e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<AliasMetaData> queryForAlias(String indexName) {
|
public List<AliasMetaData> queryForAlias(String indexName) {
|
||||||
List<AliasMetaData> aliases = null;
|
List<AliasMetaData> aliases = null;
|
||||||
@ -1441,7 +1382,7 @@ public class ElasticsearchRestTemplate
|
|||||||
* @param aliasResponse
|
* @param aliasResponse
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
List<AliasMetaData> convertAliasResponse(String aliasResponse) {
|
private List<AliasMetaData> convertAliasResponse(String aliasResponse) {
|
||||||
ObjectMapper mapper = new ObjectMapper();
|
ObjectMapper mapper = new ObjectMapper();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -1560,34 +1501,9 @@ public class ElasticsearchRestTemplate
|
|||||||
return resultsMapper;
|
return resultsMapper;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public static String readFileFromClasspath(String url) {
|
public static String readFileFromClasspath(String url) {
|
||||||
StringBuilder stringBuilder = new StringBuilder();
|
return ResourceUtil.readFileFromClasspath(url);
|
||||||
|
|
||||||
BufferedReader bufferedReader = null;
|
|
||||||
|
|
||||||
try {
|
|
||||||
ClassPathResource classPathResource = new ClassPathResource(url);
|
|
||||||
InputStreamReader inputStreamReader = new InputStreamReader(classPathResource.getInputStream());
|
|
||||||
bufferedReader = new BufferedReader(inputStreamReader);
|
|
||||||
String line;
|
|
||||||
|
|
||||||
String lineSeparator = System.getProperty("line.separator");
|
|
||||||
while ((line = bufferedReader.readLine()) != null) {
|
|
||||||
stringBuilder.append(line).append(lineSeparator);
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
logger.debug(String.format("Failed to load file from url: %s: %s", url, e.getMessage()));
|
|
||||||
return null;
|
|
||||||
} finally {
|
|
||||||
if (bufferedReader != null)
|
|
||||||
try {
|
|
||||||
bufferedReader.close();
|
|
||||||
} catch (IOException e) {
|
|
||||||
logger.debug(String.format("Unable to close buffered reader.. %s", e.getMessage()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return stringBuilder.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public SearchResponse suggest(SuggestBuilder suggestion, String... indices) {
|
public SearchResponse suggest(SuggestBuilder suggestion, String... indices) {
|
||||||
|
@ -19,16 +19,12 @@ import static org.elasticsearch.client.Requests.*;
|
|||||||
import static org.elasticsearch.index.query.QueryBuilders.*;
|
import static org.elasticsearch.index.query.QueryBuilders.*;
|
||||||
import static org.springframework.util.CollectionUtils.*;
|
import static org.springframework.util.CollectionUtils.*;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStreamReader;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.NoSuchElementException;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import org.elasticsearch.action.ActionFuture;
|
import org.elasticsearch.action.ActionFuture;
|
||||||
@ -79,10 +75,10 @@ import org.elasticsearch.search.sort.SortOrder;
|
|||||||
import org.elasticsearch.search.suggest.SuggestBuilder;
|
import org.elasticsearch.search.suggest.SuggestBuilder;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import org.springframework.beans.BeansException;
|
import org.springframework.beans.BeansException;
|
||||||
import org.springframework.context.ApplicationContext;
|
import org.springframework.context.ApplicationContext;
|
||||||
import org.springframework.context.ApplicationContextAware;
|
import org.springframework.context.ApplicationContextAware;
|
||||||
import org.springframework.core.io.ClassPathResource;
|
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.data.domain.Sort;
|
import org.springframework.data.domain.Sort;
|
||||||
@ -181,6 +177,35 @@ public class ElasticsearchTemplate implements ElasticsearchOperations, EsClient<
|
|||||||
this.searchTimeout = searchTimeout;
|
this.searchTimeout = searchTimeout;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean addAlias(AliasQuery query) {
|
||||||
|
Assert.notNull(query.getIndexName(), "No index defined for Alias");
|
||||||
|
Assert.notNull(query.getAliasName(), "No alias defined");
|
||||||
|
IndicesAliasesRequest.AliasActions aliasAction = IndicesAliasesRequest.AliasActions.add()
|
||||||
|
.alias(query.getAliasName()).index(query.getIndexName());
|
||||||
|
|
||||||
|
if (query.getFilterBuilder() != null) {
|
||||||
|
aliasAction.filter(query.getFilterBuilder());
|
||||||
|
} else if (query.getFilter() != null) {
|
||||||
|
aliasAction.filter(query.getFilter());
|
||||||
|
} else if (!StringUtils.isEmpty(query.getRouting())) {
|
||||||
|
aliasAction.routing(query.getRouting());
|
||||||
|
} else if (!StringUtils.isEmpty(query.getSearchRouting())) {
|
||||||
|
aliasAction.searchRouting(query.getSearchRouting());
|
||||||
|
} else if (!StringUtils.isEmpty(query.getIndexRouting())) {
|
||||||
|
aliasAction.indexRouting(query.getIndexRouting());
|
||||||
|
}
|
||||||
|
return client.admin().indices().prepareAliases().addAliasAction(aliasAction).execute().actionGet().isAcknowledged();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean removeAlias(AliasQuery query) {
|
||||||
|
Assert.notNull(query.getIndexName(), "No index defined for Alias");
|
||||||
|
Assert.notNull(query.getAliasName(), "No alias defined");
|
||||||
|
return client.admin().indices().prepareAliases().removeAlias(query.getIndexName(), query.getAliasName()).execute()
|
||||||
|
.actionGet().isAcknowledged();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> boolean createIndex(Class<T> clazz) {
|
public <T> boolean createIndex(Class<T> clazz) {
|
||||||
return createIndexIfNotCreated(clazz);
|
return createIndexIfNotCreated(clazz);
|
||||||
@ -197,7 +222,7 @@ public class ElasticsearchTemplate implements ElasticsearchOperations, EsClient<
|
|||||||
if (clazz.isAnnotationPresent(Mapping.class)) {
|
if (clazz.isAnnotationPresent(Mapping.class)) {
|
||||||
String mappingPath = clazz.getAnnotation(Mapping.class).mappingPath();
|
String mappingPath = clazz.getAnnotation(Mapping.class).mappingPath();
|
||||||
if (!StringUtils.isEmpty(mappingPath)) {
|
if (!StringUtils.isEmpty(mappingPath)) {
|
||||||
String mappings = readFileFromClasspath(mappingPath);
|
String mappings = ResourceUtil.readFileFromClasspath(mappingPath);
|
||||||
if (!StringUtils.isEmpty(mappings)) {
|
if (!StringUtils.isEmpty(mappings)) {
|
||||||
return putMapping(clazz, mappings);
|
return putMapping(clazz, mappings);
|
||||||
}
|
}
|
||||||
@ -429,9 +454,8 @@ public class ElasticsearchTemplate implements ElasticsearchOperations, EsClient<
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> CloseableIterator<T> stream(CriteriaQuery query, Class<T> clazz) {
|
public <T> CloseableIterator<T> stream(CriteriaQuery query, Class<T> clazz) {
|
||||||
final long scrollTimeInMillis = TimeValue.timeValueMinutes(1).millis();
|
long scrollTimeInMillis = TimeValue.timeValueMinutes(1).millis();
|
||||||
return doStream(scrollTimeInMillis, startScroll(scrollTimeInMillis, query, clazz), clazz,
|
return doStream(scrollTimeInMillis, startScroll(scrollTimeInMillis, query, clazz), clazz, resultsMapper);
|
||||||
resultsMapper);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -440,69 +464,15 @@ public class ElasticsearchTemplate implements ElasticsearchOperations, EsClient<
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> CloseableIterator<T> stream(SearchQuery query, final Class<T> clazz, final SearchResultMapper mapper) {
|
public <T> CloseableIterator<T> stream(SearchQuery query, Class<T> clazz, SearchResultMapper mapper) {
|
||||||
final long scrollTimeInMillis = TimeValue.timeValueMinutes(1).millis();
|
long scrollTimeInMillis = TimeValue.timeValueMinutes(1).millis();
|
||||||
return doStream(scrollTimeInMillis, startScroll(scrollTimeInMillis, query, clazz, mapper), clazz,
|
return doStream(scrollTimeInMillis, startScroll(scrollTimeInMillis, query, clazz, mapper), clazz, mapper);
|
||||||
mapper);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private <T> CloseableIterator<T> doStream(final long scrollTimeInMillis, final ScrolledPage<T> page,
|
private <T> CloseableIterator<T> doStream(long scrollTimeInMillis, ScrolledPage<T> page, Class<T> clazz,
|
||||||
final Class<T> clazz, final SearchResultMapper mapper) {
|
SearchResultMapper mapper) {
|
||||||
return new CloseableIterator<T>() {
|
return StreamQueries.streamResults(page, scrollId -> continueScroll(scrollId, scrollTimeInMillis, clazz, mapper),
|
||||||
|
this::clearScroll);
|
||||||
/** As we couldn't retrieve single result with scroll, store current hits. */
|
|
||||||
private volatile Iterator<T> currentHits = page.iterator();
|
|
||||||
|
|
||||||
/** The scroll id. */
|
|
||||||
private volatile String scrollId = page.getScrollId();
|
|
||||||
|
|
||||||
/** If stream is finished (ie: cluster returns no results. */
|
|
||||||
private volatile boolean finished = !currentHits.hasNext();
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void close() {
|
|
||||||
try {
|
|
||||||
// Clear scroll on cluster only in case of error (cause elasticsearch auto clear scroll when it's done)
|
|
||||||
if (!finished && scrollId != null && currentHits != null && currentHits.hasNext()) {
|
|
||||||
clearScroll(scrollId);
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
currentHits = null;
|
|
||||||
scrollId = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean hasNext() {
|
|
||||||
// Test if stream is finished
|
|
||||||
if (finished) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
// Test if it remains hits
|
|
||||||
if (currentHits == null || !currentHits.hasNext()) {
|
|
||||||
// Do a new request
|
|
||||||
final ScrolledPage<T> scroll = continueScroll(scrollId, scrollTimeInMillis, clazz, mapper);
|
|
||||||
// Save hits and scroll id
|
|
||||||
currentHits = scroll.iterator();
|
|
||||||
finished = !currentHits.hasNext();
|
|
||||||
scrollId = scroll.getScrollId();
|
|
||||||
}
|
|
||||||
return currentHits.hasNext();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public T next() {
|
|
||||||
if (hasNext()) {
|
|
||||||
return currentHits.next();
|
|
||||||
}
|
|
||||||
throw new NoSuchElementException();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void remove() {
|
|
||||||
throw new UnsupportedOperationException("remove");
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -582,7 +552,7 @@ public class ElasticsearchTemplate implements ElasticsearchOperations, EsClient<
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> LinkedList<T> multiGet(SearchQuery searchQuery, Class<T> clazz) {
|
public <T> List<T> multiGet(SearchQuery searchQuery, Class<T> clazz) {
|
||||||
return resultsMapper.mapResults(getMultiResponse(searchQuery, clazz), clazz);
|
return resultsMapper.mapResults(getMultiResponse(searchQuery, clazz), clazz);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -617,7 +587,7 @@ public class ElasticsearchTemplate implements ElasticsearchOperations, EsClient<
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> LinkedList<T> multiGet(SearchQuery searchQuery, Class<T> clazz, MultiGetResultMapper getResultMapper) {
|
public <T> List<T> multiGet(SearchQuery searchQuery, Class<T> clazz, MultiGetResultMapper getResultMapper) {
|
||||||
return getResultMapper.mapResults(getMultiResponse(searchQuery, clazz), clazz);
|
return getResultMapper.mapResults(getMultiResponse(searchQuery, clazz), clazz);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1006,7 +976,7 @@ public class ElasticsearchTemplate implements ElasticsearchOperations, EsClient<
|
|||||||
if (clazz.isAnnotationPresent(Setting.class)) {
|
if (clazz.isAnnotationPresent(Setting.class)) {
|
||||||
String settingPath = clazz.getAnnotation(Setting.class).settingPath();
|
String settingPath = clazz.getAnnotation(Setting.class).settingPath();
|
||||||
if (!StringUtils.isEmpty(settingPath)) {
|
if (!StringUtils.isEmpty(settingPath)) {
|
||||||
String settings = readFileFromClasspath(settingPath);
|
String settings = ResourceUtil.readFileFromClasspath(settingPath);
|
||||||
if (!StringUtils.isEmpty(settings)) {
|
if (!StringUtils.isEmpty(settings)) {
|
||||||
return createIndex(getPersistentEntityFor(clazz).getIndexName(), settings);
|
return createIndex(getPersistentEntityFor(clazz).getIndexName(), settings);
|
||||||
}
|
}
|
||||||
@ -1183,35 +1153,6 @@ public class ElasticsearchTemplate implements ElasticsearchOperations, EsClient<
|
|||||||
refresh(getPersistentEntityFor(clazz).getIndexName());
|
refresh(getPersistentEntityFor(clazz).getIndexName());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Boolean addAlias(AliasQuery query) {
|
|
||||||
Assert.notNull(query.getIndexName(), "No index defined for Alias");
|
|
||||||
Assert.notNull(query.getAliasName(), "No alias defined");
|
|
||||||
final IndicesAliasesRequest.AliasActions aliasAction = IndicesAliasesRequest.AliasActions.add()
|
|
||||||
.alias(query.getAliasName()).index(query.getIndexName());
|
|
||||||
|
|
||||||
if (query.getFilterBuilder() != null) {
|
|
||||||
aliasAction.filter(query.getFilterBuilder());
|
|
||||||
} else if (query.getFilter() != null) {
|
|
||||||
aliasAction.filter(query.getFilter());
|
|
||||||
} else if (!StringUtils.isEmpty(query.getRouting())) {
|
|
||||||
aliasAction.routing(query.getRouting());
|
|
||||||
} else if (!StringUtils.isEmpty(query.getSearchRouting())) {
|
|
||||||
aliasAction.searchRouting(query.getSearchRouting());
|
|
||||||
} else if (!StringUtils.isEmpty(query.getIndexRouting())) {
|
|
||||||
aliasAction.indexRouting(query.getIndexRouting());
|
|
||||||
}
|
|
||||||
return client.admin().indices().prepareAliases().addAliasAction(aliasAction).execute().actionGet().isAcknowledged();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Boolean removeAlias(AliasQuery query) {
|
|
||||||
Assert.notNull(query.getIndexName(), "No index defined for Alias");
|
|
||||||
Assert.notNull(query.getAliasName(), "No alias defined");
|
|
||||||
return client.admin().indices().prepareAliases().removeAlias(query.getIndexName(), query.getAliasName()).execute()
|
|
||||||
.actionGet().isAcknowledged();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<AliasMetaData> queryForAlias(String indexName) {
|
public List<AliasMetaData> queryForAlias(String indexName) {
|
||||||
return client.admin().indices().getAliases(new GetAliasesRequest().indices(indexName)).actionGet().getAliases()
|
return client.admin().indices().getAliases(new GetAliasesRequest().indices(indexName)).actionGet().getAliases()
|
||||||
@ -1309,34 +1250,9 @@ public class ElasticsearchTemplate implements ElasticsearchOperations, EsClient<
|
|||||||
return resultsMapper;
|
return resultsMapper;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public static String readFileFromClasspath(String url) {
|
public static String readFileFromClasspath(String url) {
|
||||||
StringBuilder stringBuilder = new StringBuilder();
|
return ResourceUtil.readFileFromClasspath(url);
|
||||||
|
|
||||||
BufferedReader bufferedReader = null;
|
|
||||||
|
|
||||||
try {
|
|
||||||
ClassPathResource classPathResource = new ClassPathResource(url);
|
|
||||||
InputStreamReader inputStreamReader = new InputStreamReader(classPathResource.getInputStream());
|
|
||||||
bufferedReader = new BufferedReader(inputStreamReader);
|
|
||||||
String line;
|
|
||||||
|
|
||||||
String lineSeparator = System.getProperty("line.separator");
|
|
||||||
while ((line = bufferedReader.readLine()) != null) {
|
|
||||||
stringBuilder.append(line).append(lineSeparator);
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
LOGGER.debug(String.format("Failed to load file from url: %s: %s", url, e.getMessage()));
|
|
||||||
return null;
|
|
||||||
} finally {
|
|
||||||
if (bufferedReader != null)
|
|
||||||
try {
|
|
||||||
bufferedReader.close();
|
|
||||||
} catch (IOException e) {
|
|
||||||
LOGGER.debug(String.format("Unable to close buffered reader.. %s", e.getMessage()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return stringBuilder.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public SearchResponse suggest(SuggestBuilder suggestion, String... indices) {
|
public SearchResponse suggest(SuggestBuilder suggestion, String... indices) {
|
||||||
|
@ -418,7 +418,7 @@ class MappingBuilder {
|
|||||||
String mappingPath = entity.getRequiredAnnotation(DynamicTemplates.class).mappingPath();
|
String mappingPath = entity.getRequiredAnnotation(DynamicTemplates.class).mappingPath();
|
||||||
if (hasText(mappingPath)) {
|
if (hasText(mappingPath)) {
|
||||||
|
|
||||||
String jsonString = ElasticsearchTemplate.readFileFromClasspath(mappingPath);
|
String jsonString = ResourceUtil.readFileFromClasspath(mappingPath);
|
||||||
if (hasText(jsonString)) {
|
if (hasText(jsonString)) {
|
||||||
|
|
||||||
ObjectMapper objectMapper = new ObjectMapper();
|
ObjectMapper objectMapper = new ObjectMapper();
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
package org.springframework.data.elasticsearch.core;
|
package org.springframework.data.elasticsearch.core;
|
||||||
|
|
||||||
import java.util.LinkedList;
|
import java.util.List;
|
||||||
|
|
||||||
import org.elasticsearch.action.get.MultiGetResponse;
|
import org.elasticsearch.action.get.MultiGetResponse;
|
||||||
|
|
||||||
@ -25,5 +25,5 @@ import org.elasticsearch.action.get.MultiGetResponse;
|
|||||||
*/
|
*/
|
||||||
public interface MultiGetResultMapper {
|
public interface MultiGetResultMapper {
|
||||||
|
|
||||||
<T> LinkedList<T> mapResults(MultiGetResponse responses, Class<T> clazz);
|
<T> List<T> mapResults(MultiGetResponse responses, Class<T> clazz);
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,56 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2019 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.springframework.data.elasticsearch.core;
|
||||||
|
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.nio.charset.Charset;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import org.springframework.core.io.ClassPathResource;
|
||||||
|
import org.springframework.util.StreamUtils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Utility to read {@link org.springframework.core.io.Resource}s.
|
||||||
|
*
|
||||||
|
* @author Mark Paluch
|
||||||
|
* @since 3.2
|
||||||
|
*/
|
||||||
|
abstract class ResourceUtil {
|
||||||
|
|
||||||
|
private static final Logger LOGGER = LoggerFactory.getLogger(ResourceUtil.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read a {@link ClassPathResource} into a {@link String}.
|
||||||
|
*
|
||||||
|
* @param url
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String readFileFromClasspath(String url) {
|
||||||
|
|
||||||
|
ClassPathResource classPathResource = new ClassPathResource(url);
|
||||||
|
try (InputStream is = classPathResource.getInputStream()) {
|
||||||
|
return StreamUtils.copyToString(is, Charset.defaultCharset());
|
||||||
|
} catch (Exception e) {
|
||||||
|
LOGGER.debug(String.format("Failed to load file from url: %s: %s", url, e.getMessage()));
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Utility constructor
|
||||||
|
private ResourceUtil() {}
|
||||||
|
}
|
@ -0,0 +1,104 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2019 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.springframework.data.elasticsearch.core;
|
||||||
|
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.NoSuchElementException;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
|
import org.springframework.data.util.CloseableIterator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Utility to support streaming queries.
|
||||||
|
*
|
||||||
|
* @author Mark Paluch
|
||||||
|
* @since 3.2
|
||||||
|
*/
|
||||||
|
abstract class StreamQueries {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stream query results using {@link ScrolledPage}.
|
||||||
|
*
|
||||||
|
* @param page the initial page.
|
||||||
|
* @param continueFunction continuation function accepting the current scrollId.
|
||||||
|
* @param clearScroll cleanup function accepting the current scrollId.
|
||||||
|
* @param <T>
|
||||||
|
* @return the {@link CloseableIterator}.
|
||||||
|
*/
|
||||||
|
static <T> CloseableIterator<T> streamResults(ScrolledPage<T> page,
|
||||||
|
Function<String, ScrolledPage<T>> continueFunction, Consumer<String> clearScroll) {
|
||||||
|
|
||||||
|
return new CloseableIterator<T>() {
|
||||||
|
|
||||||
|
/** As we couldn't retrieve single result with scroll, store current hits. */
|
||||||
|
private volatile Iterator<T> currentHits = page.iterator();
|
||||||
|
|
||||||
|
/** The scroll id. */
|
||||||
|
private volatile String scrollId = page.getScrollId();
|
||||||
|
|
||||||
|
/** If stream is finished (ie: cluster returns no results. */
|
||||||
|
private volatile boolean finished = !currentHits.hasNext();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void close() {
|
||||||
|
try {
|
||||||
|
// Clear scroll on cluster only in case of error (cause elasticsearch auto clear scroll when it's done)
|
||||||
|
if (!finished && scrollId != null && currentHits != null && currentHits.hasNext()) {
|
||||||
|
clearScroll.accept(scrollId);
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
currentHits = null;
|
||||||
|
scrollId = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasNext() {
|
||||||
|
// Test if stream is finished
|
||||||
|
if (finished) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// Test if it remains hits
|
||||||
|
if (currentHits == null || !currentHits.hasNext()) {
|
||||||
|
// Do a new request
|
||||||
|
ScrolledPage<T> scroll = continueFunction.apply(scrollId);
|
||||||
|
// Save hits and scroll id
|
||||||
|
currentHits = scroll.iterator();
|
||||||
|
finished = !currentHits.hasNext();
|
||||||
|
scrollId = scroll.getScrollId();
|
||||||
|
}
|
||||||
|
return currentHits.hasNext();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public T next() {
|
||||||
|
if (hasNext()) {
|
||||||
|
return currentHits.next();
|
||||||
|
}
|
||||||
|
throw new NoSuchElementException();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void remove() {
|
||||||
|
throw new UnsupportedOperationException("remove");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// utility constructor
|
||||||
|
private StreamQueries() {}
|
||||||
|
}
|
@ -39,7 +39,7 @@ public class SimpleElasticsearchMappingContext
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected <T> SimpleElasticsearchPersistentEntity<?> createPersistentEntity(TypeInformation<T> typeInformation) {
|
protected <T> SimpleElasticsearchPersistentEntity<?> createPersistentEntity(TypeInformation<T> typeInformation) {
|
||||||
final SimpleElasticsearchPersistentEntity<T> persistentEntity = new SimpleElasticsearchPersistentEntity<>(
|
SimpleElasticsearchPersistentEntity<T> persistentEntity = new SimpleElasticsearchPersistentEntity<>(
|
||||||
typeInformation);
|
typeInformation);
|
||||||
if (context != null) {
|
if (context != null) {
|
||||||
persistentEntity.setApplicationContext(context);
|
persistentEntity.setApplicationContext(context);
|
||||||
|
@ -59,7 +59,7 @@ public class ElasticsearchVersionRule implements TestRule {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Statement apply(final Statement base, Description description) {
|
public Statement apply(Statement base, Description description) {
|
||||||
|
|
||||||
return new Statement() {
|
return new Statement() {
|
||||||
|
|
||||||
|
@ -19,6 +19,7 @@ import static org.apache.commons.lang.RandomStringUtils.*;
|
|||||||
import static org.assertj.core.api.Assertions.*;
|
import static org.assertj.core.api.Assertions.*;
|
||||||
import static org.elasticsearch.index.query.QueryBuilders.*;
|
import static org.elasticsearch.index.query.QueryBuilders.*;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
@ -58,6 +59,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
|||||||
* @author Mohsin Husen
|
* @author Mohsin Husen
|
||||||
* @author Artur Konczak
|
* @author Artur Konczak
|
||||||
* @author Peter-Josef Meisch
|
* @author Peter-Josef Meisch
|
||||||
|
* @author Mark Paluch
|
||||||
*/
|
*/
|
||||||
@RunWith(SpringJUnit4ClassRunner.class)
|
@RunWith(SpringJUnit4ClassRunner.class)
|
||||||
@ContextConfiguration("classpath:/elasticsearch-template-test.xml")
|
@ContextConfiguration("classpath:/elasticsearch-template-test.xml")
|
||||||
@ -76,17 +78,17 @@ public class NestedObjectTests {
|
|||||||
@Test
|
@Test
|
||||||
public void shouldIndexInitialLevelNestedObject() {
|
public void shouldIndexInitialLevelNestedObject() {
|
||||||
|
|
||||||
final List<Car> cars = new ArrayList<>();
|
List<Car> cars = new ArrayList<>();
|
||||||
|
|
||||||
final Car saturn = new Car();
|
Car saturn = new Car();
|
||||||
saturn.setName("Saturn");
|
saturn.setName("Saturn");
|
||||||
saturn.setModel("SL");
|
saturn.setModel("SL");
|
||||||
|
|
||||||
final Car subaru = new Car();
|
Car subaru = new Car();
|
||||||
subaru.setName("Subaru");
|
subaru.setName("Subaru");
|
||||||
subaru.setModel("Imprezza");
|
subaru.setModel("Imprezza");
|
||||||
|
|
||||||
final Car ford = new Car();
|
Car ford = new Car();
|
||||||
ford.setName("Ford");
|
ford.setName("Ford");
|
||||||
ford.setModel("Focus");
|
ford.setModel("Focus");
|
||||||
|
|
||||||
@ -94,26 +96,26 @@ public class NestedObjectTests {
|
|||||||
cars.add(subaru);
|
cars.add(subaru);
|
||||||
cars.add(ford);
|
cars.add(ford);
|
||||||
|
|
||||||
final Person foo = new Person();
|
Person foo = new Person();
|
||||||
foo.setName("Foo");
|
foo.setName("Foo");
|
||||||
foo.setId("1");
|
foo.setId("1");
|
||||||
foo.setCar(cars);
|
foo.setCar(cars);
|
||||||
|
|
||||||
final Car car = new Car();
|
Car car = new Car();
|
||||||
car.setName("Saturn");
|
car.setName("Saturn");
|
||||||
car.setModel("Imprezza");
|
car.setModel("Imprezza");
|
||||||
|
|
||||||
final Person bar = new Person();
|
Person bar = new Person();
|
||||||
bar.setId("2");
|
bar.setId("2");
|
||||||
bar.setName("Bar");
|
bar.setName("Bar");
|
||||||
bar.setCar(Arrays.asList(car));
|
bar.setCar(Collections.singletonList(car));
|
||||||
|
|
||||||
final List<IndexQuery> indexQueries = new ArrayList<>();
|
List<IndexQuery> indexQueries = new ArrayList<>();
|
||||||
final IndexQuery indexQuery1 = new IndexQuery();
|
IndexQuery indexQuery1 = new IndexQuery();
|
||||||
indexQuery1.setId(foo.getId());
|
indexQuery1.setId(foo.getId());
|
||||||
indexQuery1.setObject(foo);
|
indexQuery1.setObject(foo);
|
||||||
|
|
||||||
final IndexQuery indexQuery2 = new IndexQuery();
|
IndexQuery indexQuery2 = new IndexQuery();
|
||||||
indexQuery2.setId(bar.getId());
|
indexQuery2.setId(bar.getId());
|
||||||
indexQuery2.setObject(bar);
|
indexQuery2.setObject(bar);
|
||||||
|
|
||||||
@ -123,11 +125,11 @@ public class NestedObjectTests {
|
|||||||
elasticsearchTemplate.bulkIndex(indexQueries);
|
elasticsearchTemplate.bulkIndex(indexQueries);
|
||||||
elasticsearchTemplate.refresh(Person.class);
|
elasticsearchTemplate.refresh(Person.class);
|
||||||
|
|
||||||
final QueryBuilder builder = nestedQuery("car",
|
QueryBuilder builder = nestedQuery("car",
|
||||||
boolQuery().must(termQuery("car.name", "saturn")).must(termQuery("car.model", "imprezza")), ScoreMode.None);
|
boolQuery().must(termQuery("car.name", "saturn")).must(termQuery("car.model", "imprezza")), ScoreMode.None);
|
||||||
|
|
||||||
final SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(builder).build();
|
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(builder).build();
|
||||||
final List<Person> persons = elasticsearchTemplate.queryForList(searchQuery, Person.class);
|
List<Person> persons = elasticsearchTemplate.queryForList(searchQuery, Person.class);
|
||||||
|
|
||||||
assertThat(persons).hasSize(1);
|
assertThat(persons).hasSize(1);
|
||||||
}
|
}
|
||||||
@ -136,16 +138,16 @@ public class NestedObjectTests {
|
|||||||
public void shouldIndexMultipleLevelNestedObject() {
|
public void shouldIndexMultipleLevelNestedObject() {
|
||||||
|
|
||||||
// given
|
// given
|
||||||
final List<IndexQuery> indexQueries = createPerson();
|
List<IndexQuery> indexQueries = createPerson();
|
||||||
|
|
||||||
// when
|
// when
|
||||||
elasticsearchTemplate.bulkIndex(indexQueries);
|
elasticsearchTemplate.bulkIndex(indexQueries);
|
||||||
elasticsearchTemplate.refresh(PersonMultipleLevelNested.class);
|
elasticsearchTemplate.refresh(PersonMultipleLevelNested.class);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
final GetQuery getQuery = new GetQuery();
|
GetQuery getQuery = new GetQuery();
|
||||||
getQuery.setId("1");
|
getQuery.setId("1");
|
||||||
final PersonMultipleLevelNested personIndexed = elasticsearchTemplate.queryForObject(getQuery,
|
PersonMultipleLevelNested personIndexed = elasticsearchTemplate.queryForObject(getQuery,
|
||||||
PersonMultipleLevelNested.class);
|
PersonMultipleLevelNested.class);
|
||||||
assertThat(personIndexed).isNotNull();
|
assertThat(personIndexed).isNotNull();
|
||||||
}
|
}
|
||||||
@ -154,18 +156,18 @@ public class NestedObjectTests {
|
|||||||
public void shouldIndexMultipleLevelNestedObjectWithIncludeInParent() {
|
public void shouldIndexMultipleLevelNestedObjectWithIncludeInParent() {
|
||||||
|
|
||||||
// given
|
// given
|
||||||
final List<IndexQuery> indexQueries = createPerson();
|
List<IndexQuery> indexQueries = createPerson();
|
||||||
|
|
||||||
// when
|
// when
|
||||||
elasticsearchTemplate.bulkIndex(indexQueries);
|
elasticsearchTemplate.bulkIndex(indexQueries);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
final Map<String, Object> mapping = elasticsearchTemplate.getMapping(PersonMultipleLevelNested.class);
|
Map<String, Object> mapping = elasticsearchTemplate.getMapping(PersonMultipleLevelNested.class);
|
||||||
|
|
||||||
assertThat(mapping).isNotNull();
|
assertThat(mapping).isNotNull();
|
||||||
final Map<String, Object> propertyMap = (Map<String, Object>) mapping.get("properties");
|
Map<String, Object> propertyMap = (Map<String, Object>) mapping.get("properties");
|
||||||
assertThat(propertyMap).isNotNull();
|
assertThat(propertyMap).isNotNull();
|
||||||
final Map bestCarsAttributes = (Map) propertyMap.get("bestCars");
|
Map bestCarsAttributes = (Map) propertyMap.get("bestCars");
|
||||||
assertThat(bestCarsAttributes.get("include_in_parent")).isNotNull();
|
assertThat(bestCarsAttributes.get("include_in_parent")).isNotNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -173,20 +175,20 @@ public class NestedObjectTests {
|
|||||||
public void shouldSearchUsingNestedQueryOnMultipleLevelNestedObject() {
|
public void shouldSearchUsingNestedQueryOnMultipleLevelNestedObject() {
|
||||||
|
|
||||||
// given
|
// given
|
||||||
final List<IndexQuery> indexQueries = createPerson();
|
List<IndexQuery> indexQueries = createPerson();
|
||||||
|
|
||||||
// when
|
// when
|
||||||
elasticsearchTemplate.bulkIndex(indexQueries);
|
elasticsearchTemplate.bulkIndex(indexQueries);
|
||||||
elasticsearchTemplate.refresh(PersonMultipleLevelNested.class);
|
elasticsearchTemplate.refresh(PersonMultipleLevelNested.class);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
final BoolQueryBuilder builder = boolQuery();
|
BoolQueryBuilder builder = boolQuery();
|
||||||
builder.must(nestedQuery("girlFriends", termQuery("girlFriends.type", "temp"), ScoreMode.None)).must(
|
builder.must(nestedQuery("girlFriends", termQuery("girlFriends.type", "temp"), ScoreMode.None)).must(
|
||||||
nestedQuery("girlFriends.cars", termQuery("girlFriends.cars.name", "Ford".toLowerCase()), ScoreMode.None));
|
nestedQuery("girlFriends.cars", termQuery("girlFriends.cars.name", "Ford".toLowerCase()), ScoreMode.None));
|
||||||
|
|
||||||
final SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(builder).build();
|
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(builder).build();
|
||||||
|
|
||||||
final Page<PersonMultipleLevelNested> personIndexed = elasticsearchTemplate.queryForPage(searchQuery,
|
Page<PersonMultipleLevelNested> personIndexed = elasticsearchTemplate.queryForPage(searchQuery,
|
||||||
PersonMultipleLevelNested.class);
|
PersonMultipleLevelNested.class);
|
||||||
assertThat(personIndexed).isNotNull();
|
assertThat(personIndexed).isNotNull();
|
||||||
assertThat(personIndexed.getTotalElements()).isEqualTo(1);
|
assertThat(personIndexed.getTotalElements()).isEqualTo(1);
|
||||||
@ -195,55 +197,55 @@ public class NestedObjectTests {
|
|||||||
|
|
||||||
private List<IndexQuery> createPerson() {
|
private List<IndexQuery> createPerson() {
|
||||||
|
|
||||||
final PersonMultipleLevelNested person1 = new PersonMultipleLevelNested();
|
PersonMultipleLevelNested person1 = new PersonMultipleLevelNested();
|
||||||
|
|
||||||
person1.setId("1");
|
person1.setId("1");
|
||||||
person1.setName("name");
|
person1.setName("name");
|
||||||
|
|
||||||
final Car saturn = new Car();
|
Car saturn = new Car();
|
||||||
saturn.setName("Saturn");
|
saturn.setName("Saturn");
|
||||||
saturn.setModel("SL");
|
saturn.setModel("SL");
|
||||||
|
|
||||||
final Car subaru = new Car();
|
Car subaru = new Car();
|
||||||
subaru.setName("Subaru");
|
subaru.setName("Subaru");
|
||||||
subaru.setModel("Imprezza");
|
subaru.setModel("Imprezza");
|
||||||
|
|
||||||
final Car car = new Car();
|
Car car = new Car();
|
||||||
car.setName("Saturn");
|
car.setName("Saturn");
|
||||||
car.setModel("Imprezza");
|
car.setModel("Imprezza");
|
||||||
|
|
||||||
final Car ford = new Car();
|
Car ford = new Car();
|
||||||
ford.setName("Ford");
|
ford.setName("Ford");
|
||||||
ford.setModel("Focus");
|
ford.setModel("Focus");
|
||||||
|
|
||||||
final GirlFriend permanent = new GirlFriend();
|
GirlFriend permanent = new GirlFriend();
|
||||||
permanent.setName("permanent");
|
permanent.setName("permanent");
|
||||||
permanent.setType("permanent");
|
permanent.setType("permanent");
|
||||||
permanent.setCars(Arrays.asList(saturn, subaru));
|
permanent.setCars(Arrays.asList(saturn, subaru));
|
||||||
|
|
||||||
final GirlFriend temp = new GirlFriend();
|
GirlFriend temp = new GirlFriend();
|
||||||
temp.setName("temp");
|
temp.setName("temp");
|
||||||
temp.setType("temp");
|
temp.setType("temp");
|
||||||
temp.setCars(Arrays.asList(car, ford));
|
temp.setCars(Arrays.asList(car, ford));
|
||||||
|
|
||||||
person1.setGirlFriends(Arrays.asList(permanent, temp));
|
person1.setGirlFriends(Arrays.asList(permanent, temp));
|
||||||
|
|
||||||
final IndexQuery indexQuery1 = new IndexQuery();
|
IndexQuery indexQuery1 = new IndexQuery();
|
||||||
indexQuery1.setId(person1.getId());
|
indexQuery1.setId(person1.getId());
|
||||||
indexQuery1.setObject(person1);
|
indexQuery1.setObject(person1);
|
||||||
|
|
||||||
final PersonMultipleLevelNested person2 = new PersonMultipleLevelNested();
|
PersonMultipleLevelNested person2 = new PersonMultipleLevelNested();
|
||||||
|
|
||||||
person2.setId("2");
|
person2.setId("2");
|
||||||
person2.setName("name");
|
person2.setName("name");
|
||||||
|
|
||||||
person2.setGirlFriends(Collections.singletonList(permanent));
|
person2.setGirlFriends(Collections.singletonList(permanent));
|
||||||
|
|
||||||
final IndexQuery indexQuery2 = new IndexQuery();
|
IndexQuery indexQuery2 = new IndexQuery();
|
||||||
indexQuery2.setId(person2.getId());
|
indexQuery2.setId(person2.getId());
|
||||||
indexQuery2.setObject(person2);
|
indexQuery2.setObject(person2);
|
||||||
|
|
||||||
final List<IndexQuery> indexQueries = new ArrayList<>();
|
List<IndexQuery> indexQueries = new ArrayList<>();
|
||||||
indexQueries.add(indexQuery1);
|
indexQueries.add(indexQuery1);
|
||||||
indexQueries.add(indexQuery2);
|
indexQueries.add(indexQuery2);
|
||||||
|
|
||||||
@ -254,17 +256,17 @@ public class NestedObjectTests {
|
|||||||
public void shouldSearchBooksForPersonInitialLevelNestedType() {
|
public void shouldSearchBooksForPersonInitialLevelNestedType() {
|
||||||
|
|
||||||
// given
|
// given
|
||||||
final List<Car> cars = new ArrayList<>();
|
List<Car> cars = new ArrayList<>();
|
||||||
|
|
||||||
final Car saturn = new Car();
|
Car saturn = new Car();
|
||||||
saturn.setName("Saturn");
|
saturn.setName("Saturn");
|
||||||
saturn.setModel("SL");
|
saturn.setModel("SL");
|
||||||
|
|
||||||
final Car subaru = new Car();
|
Car subaru = new Car();
|
||||||
subaru.setName("Subaru");
|
subaru.setName("Subaru");
|
||||||
subaru.setModel("Imprezza");
|
subaru.setModel("Imprezza");
|
||||||
|
|
||||||
final Car ford = new Car();
|
Car ford = new Car();
|
||||||
ford.setName("Ford");
|
ford.setName("Ford");
|
||||||
ford.setModel("Focus");
|
ford.setModel("Focus");
|
||||||
|
|
||||||
@ -272,43 +274,43 @@ public class NestedObjectTests {
|
|||||||
cars.add(subaru);
|
cars.add(subaru);
|
||||||
cars.add(ford);
|
cars.add(ford);
|
||||||
|
|
||||||
final Book java = new Book();
|
Book java = new Book();
|
||||||
java.setId("1");
|
java.setId("1");
|
||||||
java.setName("java");
|
java.setName("java");
|
||||||
final Author javaAuthor = new Author();
|
Author javaAuthor = new Author();
|
||||||
javaAuthor.setId("1");
|
javaAuthor.setId("1");
|
||||||
javaAuthor.setName("javaAuthor");
|
javaAuthor.setName("javaAuthor");
|
||||||
java.setAuthor(javaAuthor);
|
java.setAuthor(javaAuthor);
|
||||||
|
|
||||||
final Book spring = new Book();
|
Book spring = new Book();
|
||||||
spring.setId("2");
|
spring.setId("2");
|
||||||
spring.setName("spring");
|
spring.setName("spring");
|
||||||
final Author springAuthor = new Author();
|
Author springAuthor = new Author();
|
||||||
springAuthor.setId("2");
|
springAuthor.setId("2");
|
||||||
springAuthor.setName("springAuthor");
|
springAuthor.setName("springAuthor");
|
||||||
spring.setAuthor(springAuthor);
|
spring.setAuthor(springAuthor);
|
||||||
|
|
||||||
final Person foo = new Person();
|
Person foo = new Person();
|
||||||
foo.setName("Foo");
|
foo.setName("Foo");
|
||||||
foo.setId("1");
|
foo.setId("1");
|
||||||
foo.setCar(cars);
|
foo.setCar(cars);
|
||||||
foo.setBooks(Arrays.asList(java, spring));
|
foo.setBooks(Arrays.asList(java, spring));
|
||||||
|
|
||||||
final Car car = new Car();
|
Car car = new Car();
|
||||||
car.setName("Saturn");
|
car.setName("Saturn");
|
||||||
car.setModel("Imprezza");
|
car.setModel("Imprezza");
|
||||||
|
|
||||||
final Person bar = new Person();
|
Person bar = new Person();
|
||||||
bar.setId("2");
|
bar.setId("2");
|
||||||
bar.setName("Bar");
|
bar.setName("Bar");
|
||||||
bar.setCar(Arrays.asList(car));
|
bar.setCar(Collections.singletonList(car));
|
||||||
|
|
||||||
final List<IndexQuery> indexQueries = new ArrayList<>();
|
List<IndexQuery> indexQueries = new ArrayList<>();
|
||||||
final IndexQuery indexQuery1 = new IndexQuery();
|
IndexQuery indexQuery1 = new IndexQuery();
|
||||||
indexQuery1.setId(foo.getId());
|
indexQuery1.setId(foo.getId());
|
||||||
indexQuery1.setObject(foo);
|
indexQuery1.setObject(foo);
|
||||||
|
|
||||||
final IndexQuery indexQuery2 = new IndexQuery();
|
IndexQuery indexQuery2 = new IndexQuery();
|
||||||
indexQuery2.setId(bar.getId());
|
indexQuery2.setId(bar.getId());
|
||||||
indexQuery2.setObject(bar);
|
indexQuery2.setObject(bar);
|
||||||
|
|
||||||
@ -319,11 +321,10 @@ public class NestedObjectTests {
|
|||||||
elasticsearchTemplate.refresh(Person.class);
|
elasticsearchTemplate.refresh(Person.class);
|
||||||
|
|
||||||
// when
|
// when
|
||||||
final QueryBuilder builder = nestedQuery("books", boolQuery().must(termQuery("books.name", "java")),
|
QueryBuilder builder = nestedQuery("books", boolQuery().must(termQuery("books.name", "java")), ScoreMode.None);
|
||||||
ScoreMode.None);
|
|
||||||
|
|
||||||
final SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(builder).build();
|
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(builder).build();
|
||||||
final List<Person> persons = elasticsearchTemplate.queryForList(searchQuery, Person.class);
|
List<Person> persons = elasticsearchTemplate.queryForList(searchQuery, Person.class);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(persons).hasSize(1);
|
assertThat(persons).hasSize(1);
|
||||||
@ -333,8 +334,8 @@ public class NestedObjectTests {
|
|||||||
public void shouldIndexAndSearchMapAsNestedType() {
|
public void shouldIndexAndSearchMapAsNestedType() {
|
||||||
|
|
||||||
// given
|
// given
|
||||||
final Book book1 = new Book();
|
Book book1 = new Book();
|
||||||
final Book book2 = new Book();
|
Book book2 = new Book();
|
||||||
|
|
||||||
book1.setId(randomNumeric(5));
|
book1.setId(randomNumeric(5));
|
||||||
book1.setName("testBook1");
|
book1.setName("testBook1");
|
||||||
@ -342,21 +343,21 @@ public class NestedObjectTests {
|
|||||||
book2.setId(randomNumeric(5));
|
book2.setId(randomNumeric(5));
|
||||||
book2.setName("testBook2");
|
book2.setName("testBook2");
|
||||||
|
|
||||||
final Map<Integer, Collection<String>> map1 = new HashMap<>();
|
Map<Integer, Collection<String>> map1 = new HashMap<>();
|
||||||
map1.put(1, Arrays.asList("test1", "test2"));
|
map1.put(1, Arrays.asList("test1", "test2"));
|
||||||
|
|
||||||
final Map<Integer, Collection<String>> map2 = new HashMap<>();
|
Map<Integer, Collection<String>> map2 = new HashMap<>();
|
||||||
map2.put(1, Arrays.asList("test3", "test4"));
|
map2.put(1, Arrays.asList("test3", "test4"));
|
||||||
|
|
||||||
book1.setBuckets(map1);
|
book1.setBuckets(map1);
|
||||||
book2.setBuckets(map2);
|
book2.setBuckets(map2);
|
||||||
|
|
||||||
final List<IndexQuery> indexQueries = new ArrayList<>();
|
List<IndexQuery> indexQueries = new ArrayList<>();
|
||||||
final IndexQuery indexQuery1 = new IndexQuery();
|
IndexQuery indexQuery1 = new IndexQuery();
|
||||||
indexQuery1.setId(book1.getId());
|
indexQuery1.setId(book1.getId());
|
||||||
indexQuery1.setObject(book1);
|
indexQuery1.setObject(book1);
|
||||||
|
|
||||||
final IndexQuery indexQuery2 = new IndexQuery();
|
IndexQuery indexQuery2 = new IndexQuery();
|
||||||
indexQuery2.setId(book2.getId());
|
indexQuery2.setId(book2.getId());
|
||||||
indexQuery2.setObject(book2);
|
indexQuery2.setObject(book2);
|
||||||
|
|
||||||
@ -368,9 +369,9 @@ public class NestedObjectTests {
|
|||||||
elasticsearchTemplate.refresh(Book.class);
|
elasticsearchTemplate.refresh(Book.class);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
final SearchQuery searchQuery = new NativeSearchQueryBuilder()
|
SearchQuery searchQuery = new NativeSearchQueryBuilder()
|
||||||
.withQuery(nestedQuery("buckets", termQuery("buckets.1", "test3"), ScoreMode.None)).build();
|
.withQuery(nestedQuery("buckets", termQuery("buckets.1", "test3"), ScoreMode.None)).build();
|
||||||
final Page<Book> books = elasticsearchTemplate.queryForPage(searchQuery, Book.class);
|
Page<Book> books = elasticsearchTemplate.queryForPage(searchQuery, Book.class);
|
||||||
|
|
||||||
assertThat(books.getContent()).hasSize(1);
|
assertThat(books.getContent()).hasSize(1);
|
||||||
assertThat(books.getContent().get(0).getId()).isEqualTo(book2.getId());
|
assertThat(books.getContent().get(0).getId()).isEqualTo(book2.getId());
|
||||||
@ -378,7 +379,8 @@ public class NestedObjectTests {
|
|||||||
|
|
||||||
@Setter
|
@Setter
|
||||||
@Getter
|
@Getter
|
||||||
@Document(indexName = "test-index-book-nested-objects", type = "book", shards = 1, replicas = 0, refreshInterval = "-1")
|
@Document(indexName = "test-index-book-nested-objects", type = "book", shards = 1, replicas = 0,
|
||||||
|
refreshInterval = "-1")
|
||||||
static class Book {
|
static class Book {
|
||||||
|
|
||||||
@Id private String id;
|
@Id private String id;
|
||||||
@ -390,6 +392,7 @@ public class NestedObjectTests {
|
|||||||
searchAnalyzer = "standard") }) private String description;
|
searchAnalyzer = "standard") }) private String description;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
@Document(indexName = "test-index-person", type = "user", shards = 1, replicas = 0, refreshInterval = "-1")
|
@Document(indexName = "test-index-person", type = "user", shards = 1, replicas = 0, refreshInterval = "-1")
|
||||||
static class Person {
|
static class Person {
|
||||||
|
|
||||||
@ -400,60 +403,13 @@ public class NestedObjectTests {
|
|||||||
@Field(type = FieldType.Nested) private List<Car> car;
|
@Field(type = FieldType.Nested) private List<Car> car;
|
||||||
|
|
||||||
@Field(type = FieldType.Nested, includeInParent = true) private List<Book> books;
|
@Field(type = FieldType.Nested, includeInParent = true) private List<Book> books;
|
||||||
|
|
||||||
public String getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(String id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setName(String name) {
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Car> getCar() {
|
|
||||||
return car;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCar(List<Car> car) {
|
|
||||||
this.car = car;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Book> getBooks() {
|
|
||||||
return books;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBooks(List<Book> books) {
|
|
||||||
this.books = books;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
static class Car {
|
static class Car {
|
||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
private String model;
|
private String model;
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setName(String name) {
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getModel() {
|
|
||||||
return model;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setModel(String model) {
|
|
||||||
this.model = model;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -461,6 +417,7 @@ public class NestedObjectTests {
|
|||||||
* @author Mohsin Husen
|
* @author Mohsin Husen
|
||||||
* @author Artur Konczak
|
* @author Artur Konczak
|
||||||
*/
|
*/
|
||||||
|
@Data
|
||||||
@Document(indexName = "test-index-person-multiple-level-nested", type = "user", shards = 1, replicas = 0,
|
@Document(indexName = "test-index-person-multiple-level-nested", type = "user", shards = 1, replicas = 0,
|
||||||
refreshInterval = "-1")
|
refreshInterval = "-1")
|
||||||
static class PersonMultipleLevelNested {
|
static class PersonMultipleLevelNested {
|
||||||
@ -474,52 +431,12 @@ public class NestedObjectTests {
|
|||||||
@Field(type = FieldType.Nested) private List<Car> cars;
|
@Field(type = FieldType.Nested) private List<Car> cars;
|
||||||
|
|
||||||
@Field(type = FieldType.Nested, includeInParent = true) private List<Car> bestCars;
|
@Field(type = FieldType.Nested, includeInParent = true) private List<Car> bestCars;
|
||||||
|
|
||||||
public String getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(String id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setName(String name) {
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<GirlFriend> getGirlFriends() {
|
|
||||||
return girlFriends;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGirlFriends(List<GirlFriend> girlFriends) {
|
|
||||||
this.girlFriends = girlFriends;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Car> getCars() {
|
|
||||||
return cars;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCars(List<Car> cars) {
|
|
||||||
this.cars = cars;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Car> getBestCars() {
|
|
||||||
return bestCars;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBestCars(List<Car> bestCars) {
|
|
||||||
this.bestCars = bestCars;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Mohsin Husen
|
* @author Mohsin Husen
|
||||||
*/
|
*/
|
||||||
|
@Data
|
||||||
static class GirlFriend {
|
static class GirlFriend {
|
||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
@ -527,56 +444,17 @@ public class NestedObjectTests {
|
|||||||
private String type;
|
private String type;
|
||||||
|
|
||||||
@Field(type = FieldType.Nested) private List<Car> cars;
|
@Field(type = FieldType.Nested) private List<Car> cars;
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setName(String name) {
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getType() {
|
|
||||||
return type;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setType(String type) {
|
|
||||||
this.type = type;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Car> getCars() {
|
|
||||||
return cars;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCars(List<Car> cars) {
|
|
||||||
this.cars = cars;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Rizwan Idrees
|
* @author Rizwan Idrees
|
||||||
* @author Mohsin Husen
|
* @author Mohsin Husen
|
||||||
*/
|
*/
|
||||||
|
@Data
|
||||||
static class Author {
|
static class Author {
|
||||||
|
|
||||||
private String id;
|
private String id;
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
public String getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(String id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setName(String name) {
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -18,12 +18,8 @@ package org.springframework.data.elasticsearch.config.nested;
|
|||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.*;
|
||||||
import static org.springframework.data.elasticsearch.annotations.FieldType.*;
|
import static org.springframework.data.elasticsearch.annotations.FieldType.*;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
import lombok.Setter;
|
|
||||||
import lombok.ToString;
|
|
||||||
|
|
||||||
import java.lang.Double;
|
import java.lang.Double;
|
||||||
import java.lang.Long;
|
import java.lang.Long;
|
||||||
@ -31,6 +27,7 @@ import java.lang.Long;
|
|||||||
import org.elasticsearch.node.NodeValidationException;
|
import org.elasticsearch.node.NodeValidationException;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
@ -71,22 +68,12 @@ public class EnableNestedElasticsearchRepositoriesTests {
|
|||||||
|
|
||||||
@Autowired(required = false) private SampleRepository nestedRepository;
|
@Autowired(required = false) private SampleRepository nestedRepository;
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Rizwan Idrees
|
|
||||||
* @author Mohsin Husen
|
|
||||||
* @author Chris White
|
|
||||||
* @author Sascha Woo
|
|
||||||
*/
|
|
||||||
@Test
|
@Test
|
||||||
public void hasNestedRepository() {
|
public void hasNestedRepository() {
|
||||||
assertNotNull(nestedRepository);
|
assertNotNull(nestedRepository);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Setter
|
@Data
|
||||||
@Getter
|
|
||||||
@NoArgsConstructor
|
|
||||||
@AllArgsConstructor
|
|
||||||
@ToString
|
|
||||||
@Builder
|
@Builder
|
||||||
@Document(indexName = "test-index-sample-config-nested", type = "test-type", shards = 1, replicas = 0, refreshInterval = "-1")
|
@Document(indexName = "test-index-sample-config-nested", type = "test-type", shards = 1, replicas = 0, refreshInterval = "-1")
|
||||||
static class SampleEntity {
|
static class SampleEntity {
|
||||||
|
@ -18,12 +18,7 @@ package org.springframework.data.elasticsearch.config.notnested;
|
|||||||
import static org.assertj.core.api.Assertions.*;
|
import static org.assertj.core.api.Assertions.*;
|
||||||
import static org.springframework.data.elasticsearch.annotations.FieldType.*;
|
import static org.springframework.data.elasticsearch.annotations.FieldType.*;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.Data;
|
||||||
import lombok.Builder;
|
|
||||||
import lombok.Getter;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
import lombok.Setter;
|
|
||||||
import lombok.ToString;
|
|
||||||
|
|
||||||
import java.lang.Double;
|
import java.lang.Double;
|
||||||
import java.lang.Long;
|
import java.lang.Long;
|
||||||
@ -33,6 +28,7 @@ import org.elasticsearch.node.NodeValidationException;
|
|||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
import org.springframework.beans.BeansException;
|
import org.springframework.beans.BeansException;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.context.ApplicationContext;
|
import org.springframework.context.ApplicationContext;
|
||||||
@ -97,7 +93,6 @@ public class EnableElasticsearchRepositoriesTests implements ApplicationContextA
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void before() {
|
public void before() {
|
||||||
|
|
||||||
IndexInitializer.init(elasticsearchTemplate, SampleEntity.class);
|
IndexInitializer.init(elasticsearchTemplate, SampleEntity.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -126,18 +121,7 @@ public class EnableElasticsearchRepositoriesTests implements ApplicationContextA
|
|||||||
assertThat(nestedRepository).isNull();
|
assertThat(nestedRepository).isNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Data
|
||||||
* @author Rizwan Idrees
|
|
||||||
* @author Mohsin Husen
|
|
||||||
* @author Chris White
|
|
||||||
* @author Sascha Woo
|
|
||||||
*/
|
|
||||||
@Setter
|
|
||||||
@Getter
|
|
||||||
@NoArgsConstructor
|
|
||||||
@AllArgsConstructor
|
|
||||||
@ToString
|
|
||||||
@Builder
|
|
||||||
@Document(indexName = "test-index-sample-config-not-nested", type = "test-type", shards = 1, replicas = 0,
|
@Document(indexName = "test-index-sample-config-not-nested", type = "test-type", shards = 1, replicas = 0,
|
||||||
refreshInterval = "-1")
|
refreshInterval = "-1")
|
||||||
static class SampleEntity {
|
static class SampleEntity {
|
||||||
@ -152,20 +136,9 @@ public class EnableElasticsearchRepositoriesTests implements ApplicationContextA
|
|||||||
private GeoPoint location;
|
private GeoPoint location;
|
||||||
@Version private Long version;
|
@Version private Long version;
|
||||||
@Score private float score;
|
@Score private float score;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Data
|
||||||
* @author Gad Akuka
|
|
||||||
* @author Rizwan Idrees
|
|
||||||
* @author Mohsin Husen
|
|
||||||
*/
|
|
||||||
|
|
||||||
@Setter
|
|
||||||
@Getter
|
|
||||||
@NoArgsConstructor
|
|
||||||
@AllArgsConstructor
|
|
||||||
@Builder
|
|
||||||
@Document(indexName = "test-index-uuid-keyed-config-not-nested", type = "test-type-uuid-keyed", shards = 1,
|
@Document(indexName = "test-index-uuid-keyed-config-not-nested", type = "test-type-uuid-keyed", shards = 1,
|
||||||
replicas = 0, refreshInterval = "-1")
|
replicas = 0, refreshInterval = "-1")
|
||||||
static class SampleEntityUUIDKeyed {
|
static class SampleEntityUUIDKeyed {
|
||||||
@ -177,10 +150,7 @@ public class EnableElasticsearchRepositoriesTests implements ApplicationContextA
|
|||||||
@ScriptedField private Long scriptedRate;
|
@ScriptedField private Long scriptedRate;
|
||||||
private boolean available;
|
private boolean available;
|
||||||
private String highlightedMessage;
|
private String highlightedMessage;
|
||||||
|
|
||||||
private GeoPoint location;
|
private GeoPoint location;
|
||||||
|
|
||||||
@Version private Long version;
|
@Version private Long version;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,11 +22,9 @@ import static org.springframework.data.elasticsearch.annotations.FieldType.*;
|
|||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.Setter;
|
|
||||||
|
|
||||||
import java.lang.Double;
|
|
||||||
import java.lang.Long;
|
import java.lang.Long;
|
||||||
import java.lang.Object;
|
import java.lang.Object;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@ -37,14 +35,12 @@ import org.elasticsearch.cluster.metadata.AliasMetaData;
|
|||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.annotation.Id;
|
import org.springframework.data.annotation.Id;
|
||||||
import org.springframework.data.annotation.Version;
|
import org.springframework.data.annotation.Version;
|
||||||
import org.springframework.data.elasticsearch.annotations.Document;
|
import org.springframework.data.elasticsearch.annotations.Document;
|
||||||
import org.springframework.data.elasticsearch.annotations.Field;
|
import org.springframework.data.elasticsearch.annotations.Field;
|
||||||
import org.springframework.data.elasticsearch.annotations.Score;
|
|
||||||
import org.springframework.data.elasticsearch.annotations.ScriptedField;
|
|
||||||
import org.springframework.data.elasticsearch.core.geo.GeoPoint;
|
|
||||||
import org.springframework.data.elasticsearch.core.query.AliasBuilder;
|
import org.springframework.data.elasticsearch.core.query.AliasBuilder;
|
||||||
import org.springframework.data.elasticsearch.core.query.AliasQuery;
|
import org.springframework.data.elasticsearch.core.query.AliasQuery;
|
||||||
import org.springframework.data.elasticsearch.core.query.IndexQuery;
|
import org.springframework.data.elasticsearch.core.query.IndexQuery;
|
||||||
@ -89,7 +85,7 @@ public class AliasTests {
|
|||||||
elasticsearchTemplate.createIndex(INDEX_NAME_2, settings);
|
elasticsearchTemplate.createIndex(INDEX_NAME_2, settings);
|
||||||
elasticsearchTemplate.refresh(INDEX_NAME_2);
|
elasticsearchTemplate.refresh(INDEX_NAME_2);
|
||||||
|
|
||||||
IndexInitializer.init(elasticsearchTemplate, SampleEntity.class);
|
IndexInitializer.init(elasticsearchTemplate, AliasedEntity.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -141,11 +137,11 @@ public class AliasTests {
|
|||||||
elasticsearchTemplate.addAlias(aliasQuery);
|
elasticsearchTemplate.addAlias(aliasQuery);
|
||||||
|
|
||||||
String documentId = randomNumeric(5);
|
String documentId = randomNumeric(5);
|
||||||
SampleEntity sampleEntity = SampleEntity.builder().id(documentId).message("some message")
|
AliasedEntity aliasedEntity = AliasedEntity.builder().id(documentId).message("some message")
|
||||||
.version(System.currentTimeMillis()).build();
|
.version(System.currentTimeMillis()).build();
|
||||||
|
|
||||||
IndexQuery indexQuery = new IndexQueryBuilder().withIndexName(alias).withId(sampleEntity.getId())
|
IndexQuery indexQuery = new IndexQueryBuilder().withIndexName(alias).withId(aliasedEntity.getId())
|
||||||
.withType(TYPE_NAME).withObject(sampleEntity).build();
|
.withType(TYPE_NAME).withObject(aliasedEntity).build();
|
||||||
|
|
||||||
elasticsearchTemplate.index(indexQuery);
|
elasticsearchTemplate.index(indexQuery);
|
||||||
elasticsearchTemplate.refresh(INDEX_NAME_1);
|
elasticsearchTemplate.refresh(INDEX_NAME_1);
|
||||||
@ -157,7 +153,7 @@ public class AliasTests {
|
|||||||
// then
|
// then
|
||||||
List<AliasMetaData> aliases = elasticsearchTemplate.queryForAlias(INDEX_NAME_1);
|
List<AliasMetaData> aliases = elasticsearchTemplate.queryForAlias(INDEX_NAME_1);
|
||||||
assertThat(aliases).isNotNull();
|
assertThat(aliases).isNotNull();
|
||||||
final AliasMetaData aliasMetaData = aliases.get(0);
|
AliasMetaData aliasMetaData = aliases.get(0);
|
||||||
assertThat(aliasMetaData.alias()).isEqualTo(alias);
|
assertThat(aliasMetaData.alias()).isEqualTo(alias);
|
||||||
assertThat(aliasMetaData.searchRouting()).isEqualTo("0");
|
assertThat(aliasMetaData.searchRouting()).isEqualTo("0");
|
||||||
assertThat(aliasMetaData.indexRouting()).isEqualTo("0");
|
assertThat(aliasMetaData.indexRouting()).isEqualTo("0");
|
||||||
@ -185,24 +181,24 @@ public class AliasTests {
|
|||||||
elasticsearchTemplate.addAlias(aliasQuery2);
|
elasticsearchTemplate.addAlias(aliasQuery2);
|
||||||
|
|
||||||
String documentId = randomNumeric(5);
|
String documentId = randomNumeric(5);
|
||||||
SampleEntity sampleEntity = SampleEntity.builder().id(documentId).message("some message")
|
AliasedEntity aliasedEntity = AliasedEntity.builder().id(documentId).message("some message")
|
||||||
.version(System.currentTimeMillis()).build();
|
.version(System.currentTimeMillis()).build();
|
||||||
|
|
||||||
IndexQuery indexQuery = new IndexQueryBuilder().withIndexName(alias1).withType(TYPE_NAME)
|
IndexQuery indexQuery = new IndexQueryBuilder().withIndexName(alias1).withType(TYPE_NAME)
|
||||||
.withId(sampleEntity.getId()).withObject(sampleEntity).build();
|
.withId(aliasedEntity.getId()).withObject(aliasedEntity).build();
|
||||||
|
|
||||||
elasticsearchTemplate.index(indexQuery);
|
elasticsearchTemplate.index(indexQuery);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
List<AliasMetaData> responseAlias1 = elasticsearchTemplate.queryForAlias(INDEX_NAME_1);
|
List<AliasMetaData> responseAlias1 = elasticsearchTemplate.queryForAlias(INDEX_NAME_1);
|
||||||
assertThat(responseAlias1).isNotNull();
|
assertThat(responseAlias1).isNotNull();
|
||||||
final AliasMetaData aliasMetaData1 = responseAlias1.get(0);
|
AliasMetaData aliasMetaData1 = responseAlias1.get(0);
|
||||||
assertThat(aliasMetaData1.alias()).isEqualTo(alias1);
|
assertThat(aliasMetaData1.alias()).isEqualTo(alias1);
|
||||||
assertThat(aliasMetaData1.indexRouting()).isEqualTo("0");
|
assertThat(aliasMetaData1.indexRouting()).isEqualTo("0");
|
||||||
|
|
||||||
List<AliasMetaData> responseAlias2 = elasticsearchTemplate.queryForAlias(INDEX_NAME_2);
|
List<AliasMetaData> responseAlias2 = elasticsearchTemplate.queryForAlias(INDEX_NAME_2);
|
||||||
assertThat(responseAlias2).isNotNull();
|
assertThat(responseAlias2).isNotNull();
|
||||||
final AliasMetaData aliasMetaData2 = responseAlias2.get(0);
|
AliasMetaData aliasMetaData2 = responseAlias2.get(0);
|
||||||
assertThat(aliasMetaData2.alias()).isEqualTo(alias2);
|
assertThat(aliasMetaData2.alias()).isEqualTo(alias2);
|
||||||
assertThat(aliasMetaData2.searchRouting()).isEqualTo("1");
|
assertThat(aliasMetaData2.searchRouting()).isEqualTo("1");
|
||||||
|
|
||||||
@ -212,22 +208,15 @@ public class AliasTests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Builder
|
@Builder
|
||||||
@Setter
|
@Data
|
||||||
@Getter
|
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Document(indexName = "test-index-sample-core-alias", type = "test-type", shards = 1, replicas = 0, refreshInterval = "-1")
|
@Document(indexName = "test-index-sample-core-alias", type = "test-type", shards = 1, replicas = 0,
|
||||||
static class SampleEntity {
|
refreshInterval = "-1")
|
||||||
|
static class AliasedEntity {
|
||||||
|
|
||||||
@Id private String id;
|
@Id private String id;
|
||||||
@Field(type = Text, store = true, fielddata = true) private String type;
|
|
||||||
@Field(type = Text, store = true, fielddata = true) private String message;
|
@Field(type = Text, store = true, fielddata = true) private String message;
|
||||||
private int rate;
|
|
||||||
@ScriptedField private Double scriptedRate;
|
|
||||||
private boolean available;
|
|
||||||
private String highlightedMessage;
|
|
||||||
private GeoPoint location;
|
|
||||||
@Version private Long version;
|
@Version private Long version;
|
||||||
@Score private float score;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,11 +15,12 @@
|
|||||||
*/
|
*/
|
||||||
package org.springframework.data.elasticsearch.core;
|
package org.springframework.data.elasticsearch.core;
|
||||||
|
|
||||||
import java.util.LinkedList;
|
import java.util.List;
|
||||||
|
|
||||||
import org.elasticsearch.action.get.GetResponse;
|
import org.elasticsearch.action.get.GetResponse;
|
||||||
import org.elasticsearch.action.get.MultiGetResponse;
|
import org.elasticsearch.action.get.MultiGetResponse;
|
||||||
import org.elasticsearch.action.search.SearchResponse;
|
import org.elasticsearch.action.search.SearchResponse;
|
||||||
|
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.data.elasticsearch.core.aggregation.AggregatedPage;
|
import org.springframework.data.elasticsearch.core.aggregation.AggregatedPage;
|
||||||
|
|
||||||
@ -52,7 +53,7 @@ public class CustomResultMapper implements ResultsMapper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> LinkedList<T> mapResults(MultiGetResponse responses, Class<T> clazz) {
|
public <T> List<T> mapResults(MultiGetResponse responses, Class<T> clazz) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,15 +19,15 @@ import static org.assertj.core.api.Assertions.*;
|
|||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.Setter;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import org.springframework.data.annotation.Id;
|
import org.springframework.data.annotation.Id;
|
||||||
import org.springframework.data.annotation.ReadOnlyProperty;
|
import org.springframework.data.annotation.ReadOnlyProperty;
|
||||||
import org.springframework.data.annotation.Transient;
|
import org.springframework.data.annotation.Transient;
|
||||||
@ -35,10 +35,7 @@ import org.springframework.data.elasticsearch.annotations.Document;
|
|||||||
import org.springframework.data.elasticsearch.annotations.GeoPointField;
|
import org.springframework.data.elasticsearch.annotations.GeoPointField;
|
||||||
import org.springframework.data.elasticsearch.core.geo.GeoPoint;
|
import org.springframework.data.elasticsearch.core.geo.GeoPoint;
|
||||||
import org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchMappingContext;
|
import org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchMappingContext;
|
||||||
import org.springframework.data.geo.Box;
|
|
||||||
import org.springframework.data.geo.Circle;
|
|
||||||
import org.springframework.data.geo.Point;
|
import org.springframework.data.geo.Point;
|
||||||
import org.springframework.data.geo.Polygon;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Artur Konczak
|
* @author Artur Konczak
|
||||||
@ -64,7 +61,7 @@ public class DefaultEntityMapperTests {
|
|||||||
// given
|
// given
|
||||||
|
|
||||||
// when
|
// when
|
||||||
String jsonResult = entityMapper.mapToString(Car.builder().model(CAR_MODEL).name(CAR_NAME).build());
|
String jsonResult = entityMapper.mapToString(new Car(CAR_NAME, CAR_MODEL));
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(jsonResult).isEqualTo(JSON_STRING);
|
assertThat(jsonResult).isEqualTo(JSON_STRING);
|
||||||
@ -86,11 +83,11 @@ public class DefaultEntityMapperTests {
|
|||||||
@Test
|
@Test
|
||||||
public void shouldMapGeoPointElasticsearchNames() throws IOException {
|
public void shouldMapGeoPointElasticsearchNames() throws IOException {
|
||||||
// given
|
// given
|
||||||
final Point point = new Point(10, 20);
|
Point point = new Point(10, 20);
|
||||||
final String pointAsString = point.getX() + "," + point.getY();
|
String pointAsString = point.getX() + "," + point.getY();
|
||||||
final double[] pointAsArray = { point.getX(), point.getY() };
|
double[] pointAsArray = { point.getX(), point.getY() };
|
||||||
final GeoEntity geoEntity = GeoEntity.builder().pointA(point).pointB(GeoPoint.fromPoint(point))
|
GeoEntity geoEntity = GeoEntity.builder().pointA(point).pointB(GeoPoint.fromPoint(point)).pointC(pointAsString)
|
||||||
.pointC(pointAsString).pointD(pointAsArray).build();
|
.pointD(pointAsArray).build();
|
||||||
// when
|
// when
|
||||||
String jsonResult = entityMapper.mapToString(geoEntity);
|
String jsonResult = entityMapper.mapToString(geoEntity);
|
||||||
|
|
||||||
@ -135,43 +132,16 @@ public class DefaultEntityMapperTests {
|
|||||||
public String property;
|
public String property;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Data
|
||||||
* @author Rizwan Idrees
|
|
||||||
* @author Mohsin Husen
|
|
||||||
* @author Artur Konczak
|
|
||||||
*/
|
|
||||||
@Setter
|
|
||||||
@Getter
|
|
||||||
@NoArgsConstructor
|
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Builder
|
@NoArgsConstructor
|
||||||
static class Car {
|
static class Car {
|
||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
private String model;
|
private String model;
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setName(String name) {
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getModel() {
|
|
||||||
return model;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setModel(String model) {
|
|
||||||
this.model = model;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Data
|
||||||
* @author Artur Konczak
|
|
||||||
*/
|
|
||||||
@Setter
|
|
||||||
@Getter
|
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Builder
|
@Builder
|
||||||
@ -181,11 +151,6 @@ public class DefaultEntityMapperTests {
|
|||||||
|
|
||||||
@Id private String id;
|
@Id private String id;
|
||||||
|
|
||||||
// geo shape - Spring Data
|
|
||||||
private Box box;
|
|
||||||
private Circle circle;
|
|
||||||
private Polygon polygon;
|
|
||||||
|
|
||||||
// geo point - Custom implementation + Spring Data
|
// geo point - Custom implementation + Spring Data
|
||||||
@GeoPointField private Point pointA;
|
@GeoPointField private Point pointA;
|
||||||
|
|
||||||
|
@ -20,12 +20,9 @@ import static org.assertj.core.api.Assertions.*;
|
|||||||
import static org.mockito.Mockito.*;
|
import static org.mockito.Mockito.*;
|
||||||
import static org.springframework.data.elasticsearch.annotations.FieldType.*;
|
import static org.springframework.data.elasticsearch.annotations.FieldType.*;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.Data;
|
||||||
import lombok.Builder;
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.Setter;
|
|
||||||
import lombok.ToString;
|
|
||||||
|
|
||||||
import java.lang.Double;
|
import java.lang.Double;
|
||||||
import java.lang.Long;
|
import java.lang.Long;
|
||||||
@ -33,7 +30,7 @@ import java.lang.Object;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.LinkedList;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.elasticsearch.action.get.GetResponse;
|
import org.elasticsearch.action.get.GetResponse;
|
||||||
@ -54,6 +51,7 @@ import org.junit.runners.Parameterized;
|
|||||||
import org.junit.runners.Parameterized.Parameters;
|
import org.junit.runners.Parameterized.Parameters;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
|
|
||||||
import org.springframework.core.convert.support.DefaultConversionService;
|
import org.springframework.core.convert.support.DefaultConversionService;
|
||||||
import org.springframework.data.annotation.Id;
|
import org.springframework.data.annotation.Id;
|
||||||
import org.springframework.data.annotation.Version;
|
import org.springframework.data.annotation.Version;
|
||||||
@ -206,7 +204,7 @@ public class DefaultResultMapperTests {
|
|||||||
when(response.getSourceAsString()).thenReturn("{}");
|
when(response.getSourceAsString()).thenReturn("{}");
|
||||||
when(response.getVersion()).thenReturn(1234L);
|
when(response.getVersion()).thenReturn(1234L);
|
||||||
|
|
||||||
SampleEntity result = resultMapper.mapResult(response, SampleEntity.class);
|
MappedEntity result = resultMapper.mapResult(response, MappedEntity.class);
|
||||||
|
|
||||||
assertThat(result).isNotNull();
|
assertThat(result).isNotNull();
|
||||||
assertThat(result.getVersion()).isEqualTo(1234);
|
assertThat(result.getVersion()).isEqualTo(1234);
|
||||||
@ -229,7 +227,7 @@ public class DefaultResultMapperTests {
|
|||||||
when(multiResponse.getResponses()).thenReturn(new MultiGetItemResponse[] {
|
when(multiResponse.getResponses()).thenReturn(new MultiGetItemResponse[] {
|
||||||
new MultiGetItemResponse(response1, null), new MultiGetItemResponse(response2, null) });
|
new MultiGetItemResponse(response1, null), new MultiGetItemResponse(response2, null) });
|
||||||
|
|
||||||
LinkedList<SampleEntity> results = resultMapper.mapResults(multiResponse, SampleEntity.class);
|
List<MappedEntity> results = resultMapper.mapResults(multiResponse, MappedEntity.class);
|
||||||
|
|
||||||
assertThat(results).isNotNull().hasSize(2);
|
assertThat(results).isNotNull().hasSize(2);
|
||||||
|
|
||||||
@ -255,7 +253,7 @@ public class DefaultResultMapperTests {
|
|||||||
SearchResponse searchResponse = mock(SearchResponse.class);
|
SearchResponse searchResponse = mock(SearchResponse.class);
|
||||||
when(searchResponse.getHits()).thenReturn(searchHits);
|
when(searchResponse.getHits()).thenReturn(searchHits);
|
||||||
|
|
||||||
AggregatedPage<SampleEntity> results = resultMapper.mapResults(searchResponse, SampleEntity.class,
|
AggregatedPage<MappedEntity> results = resultMapper.mapResults(searchResponse, MappedEntity.class,
|
||||||
mock(Pageable.class));
|
mock(Pageable.class));
|
||||||
|
|
||||||
assertThat(results).isNotNull();
|
assertThat(results).isNotNull();
|
||||||
@ -288,7 +286,7 @@ public class DefaultResultMapperTests {
|
|||||||
|
|
||||||
private String createJsonCar(String name, String model) {
|
private String createJsonCar(String name, String model) {
|
||||||
|
|
||||||
final String q = "\"";
|
String q = "\"";
|
||||||
StringBuffer sb = new StringBuffer();
|
StringBuffer sb = new StringBuffer();
|
||||||
sb.append("{").append(q).append("name").append(q).append(":").append(q).append(name).append(q).append(",");
|
sb.append("{").append(q).append("name").append(q).append(":").append(q).append(name).append(q).append(",");
|
||||||
sb.append(q).append("model").append(q).append(":").append(q).append(model).append(q).append("}");
|
sb.append(q).append("model").append(q).append(":").append(q).append(model).append(q).append("}");
|
||||||
@ -311,52 +309,16 @@ public class DefaultResultMapperTests {
|
|||||||
private final String id, name;
|
private final String id, name;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Data
|
||||||
* @author Rizwan Idrees
|
|
||||||
* @author Mohsin Husen
|
|
||||||
* @author Artur Konczak
|
|
||||||
*/
|
|
||||||
@Setter
|
|
||||||
@Getter
|
|
||||||
@NoArgsConstructor
|
|
||||||
@AllArgsConstructor
|
|
||||||
@Builder
|
|
||||||
static class Car {
|
static class Car {
|
||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
private String model;
|
private String model;
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setName(String name) {
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getModel() {
|
|
||||||
return model;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setModel(String model) {
|
|
||||||
this.model = model;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Data
|
||||||
* @author Rizwan Idrees
|
@Document(indexName = "test-index-sample-default-result-mapper", type = "test-type")
|
||||||
* @author Mohsin Husen
|
static class MappedEntity {
|
||||||
* @author Chris White
|
|
||||||
* @author Sascha Woo
|
|
||||||
*/
|
|
||||||
@Setter
|
|
||||||
@Getter
|
|
||||||
@NoArgsConstructor
|
|
||||||
@AllArgsConstructor
|
|
||||||
@ToString
|
|
||||||
@Builder
|
|
||||||
@Document(indexName = "test-index-sample-default-result-mapper", type = "test-type", shards = 1, replicas = 0, refreshInterval = "-1")
|
|
||||||
static class SampleEntity {
|
|
||||||
|
|
||||||
@Id private String id;
|
@Id private String id;
|
||||||
@Field(type = Text, store = true, fielddata = true) private String type;
|
@Field(type = Text, store = true, fielddata = true) private String type;
|
||||||
@ -368,49 +330,6 @@ public class DefaultResultMapperTests {
|
|||||||
private GeoPoint location;
|
private GeoPoint location;
|
||||||
@Version private Long version;
|
@Version private Long version;
|
||||||
@Score private float score;
|
@Score private float score;
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals(Object o) {
|
|
||||||
if (this == o)
|
|
||||||
return true;
|
|
||||||
if (o == null || getClass() != o.getClass())
|
|
||||||
return false;
|
|
||||||
|
|
||||||
SampleEntity that = (SampleEntity) o;
|
|
||||||
|
|
||||||
if (available != that.available)
|
|
||||||
return false;
|
|
||||||
if (rate != that.rate)
|
|
||||||
return false;
|
|
||||||
if (highlightedMessage != null ? !highlightedMessage.equals(that.highlightedMessage)
|
|
||||||
: that.highlightedMessage != null)
|
|
||||||
return false;
|
|
||||||
if (id != null ? !id.equals(that.id) : that.id != null)
|
|
||||||
return false;
|
|
||||||
if (location != null ? !location.equals(that.location) : that.location != null)
|
|
||||||
return false;
|
|
||||||
if (message != null ? !message.equals(that.message) : that.message != null)
|
|
||||||
return false;
|
|
||||||
if (type != null ? !type.equals(that.type) : that.type != null)
|
|
||||||
return false;
|
|
||||||
if (version != null ? !version.equals(that.version) : that.version != null)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode() {
|
|
||||||
int result = id != null ? id.hashCode() : 0;
|
|
||||||
result = 31 * result + (type != null ? type.hashCode() : 0);
|
|
||||||
result = 31 * result + (message != null ? message.hashCode() : 0);
|
|
||||||
result = 31 * result + rate;
|
|
||||||
result = 31 * result + (available ? 1 : 0);
|
|
||||||
result = 31 * result + (highlightedMessage != null ? highlightedMessage.hashCode() : 0);
|
|
||||||
result = 31 * result + (location != null ? location.hashCode() : 0);
|
|
||||||
result = 31 * result + (version != null ? version.hashCode() : 0);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,6 @@ import lombok.EqualsAndHashCode;
|
|||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.Setter;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -39,6 +38,7 @@ import java.util.Map;
|
|||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import org.springframework.core.convert.converter.Converter;
|
import org.springframework.core.convert.converter.Converter;
|
||||||
import org.springframework.core.convert.support.GenericConversionService;
|
import org.springframework.core.convert.support.GenericConversionService;
|
||||||
import org.springframework.data.annotation.Id;
|
import org.springframework.data.annotation.Id;
|
||||||
@ -210,11 +210,11 @@ public class ElasticsearchEntityMapperUnitTests {
|
|||||||
@Test // DATAES-530
|
@Test // DATAES-530
|
||||||
public void shouldMapGeoPointElasticsearchNames() throws IOException {
|
public void shouldMapGeoPointElasticsearchNames() throws IOException {
|
||||||
// given
|
// given
|
||||||
final Point point = new Point(10, 20);
|
Point point = new Point(10, 20);
|
||||||
final String pointAsString = point.getX() + "," + point.getY();
|
String pointAsString = point.getX() + "," + point.getY();
|
||||||
final double[] pointAsArray = { point.getX(), point.getY() };
|
double[] pointAsArray = { point.getX(), point.getY() };
|
||||||
final GeoEntity geoEntity = GeoEntity.builder().pointA(point).pointB(GeoPoint.fromPoint(point))
|
GeoEntity geoEntity = GeoEntity.builder().pointA(point).pointB(GeoPoint.fromPoint(point)).pointC(pointAsString)
|
||||||
.pointC(pointAsString).pointD(pointAsArray).build();
|
.pointD(pointAsArray).build();
|
||||||
// when
|
// when
|
||||||
String jsonResult = entityMapper.mapToString(geoEntity);
|
String jsonResult = entityMapper.mapToString(geoEntity);
|
||||||
|
|
||||||
@ -682,13 +682,7 @@ public class ElasticsearchEntityMapperUnitTests {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Data
|
||||||
* @author Rizwan Idrees
|
|
||||||
* @author Mohsin Husen
|
|
||||||
* @author Artur Konczak
|
|
||||||
*/
|
|
||||||
@Setter
|
|
||||||
@Getter
|
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Builder
|
@Builder
|
||||||
@ -696,29 +690,9 @@ public class ElasticsearchEntityMapperUnitTests {
|
|||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
private String model;
|
private String model;
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setName(String name) {
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getModel() {
|
|
||||||
return model;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setModel(String model) {
|
|
||||||
this.model = model;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Data
|
||||||
* @author Artur Konczak
|
|
||||||
*/
|
|
||||||
@Setter
|
|
||||||
@Getter
|
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Builder
|
@Builder
|
||||||
|
@ -18,29 +18,18 @@ package org.springframework.data.elasticsearch.core;
|
|||||||
import static org.apache.commons.lang.RandomStringUtils.*;
|
import static org.apache.commons.lang.RandomStringUtils.*;
|
||||||
import static org.springframework.data.elasticsearch.annotations.FieldType.*;
|
import static org.springframework.data.elasticsearch.annotations.FieldType.*;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
import lombok.Setter;
|
|
||||||
import lombok.ToString;
|
|
||||||
|
|
||||||
import java.lang.Double;
|
|
||||||
import java.lang.Long;
|
|
||||||
import java.lang.Object;
|
|
||||||
|
|
||||||
import org.elasticsearch.ElasticsearchStatusException;
|
import org.elasticsearch.ElasticsearchStatusException;
|
||||||
import org.elasticsearch.action.index.IndexRequest;
|
import org.elasticsearch.action.index.IndexRequest;
|
||||||
import org.elasticsearch.common.xcontent.XContentType;
|
import org.elasticsearch.common.xcontent.XContentType;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
import org.springframework.data.annotation.Id;
|
import org.springframework.data.annotation.Id;
|
||||||
import org.springframework.data.annotation.Version;
|
|
||||||
import org.springframework.data.elasticsearch.annotations.Document;
|
import org.springframework.data.elasticsearch.annotations.Document;
|
||||||
import org.springframework.data.elasticsearch.annotations.Field;
|
import org.springframework.data.elasticsearch.annotations.Field;
|
||||||
import org.springframework.data.elasticsearch.annotations.Score;
|
|
||||||
import org.springframework.data.elasticsearch.annotations.ScriptedField;
|
|
||||||
import org.springframework.data.elasticsearch.core.geo.GeoPoint;
|
|
||||||
import org.springframework.data.elasticsearch.core.query.UpdateQuery;
|
import org.springframework.data.elasticsearch.core.query.UpdateQuery;
|
||||||
import org.springframework.data.elasticsearch.core.query.UpdateQueryBuilder;
|
import org.springframework.data.elasticsearch.core.query.UpdateQueryBuilder;
|
||||||
import org.springframework.test.context.ContextConfiguration;
|
import org.springframework.test.context.ContextConfiguration;
|
||||||
@ -75,73 +64,13 @@ public class ElasticsearchRestTemplateTests extends ElasticsearchTemplateTests {
|
|||||||
elasticsearchTemplate.update(updateQuery);
|
elasticsearchTemplate.update(updateQuery);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Data
|
||||||
* @author Rizwan Idrees
|
|
||||||
* @author Mohsin Husen
|
|
||||||
* @author Chris White
|
|
||||||
* @author Sascha Woo
|
|
||||||
*/
|
|
||||||
@Setter
|
|
||||||
@Getter
|
|
||||||
@NoArgsConstructor
|
|
||||||
@AllArgsConstructor
|
|
||||||
@ToString
|
|
||||||
@Builder
|
@Builder
|
||||||
@Document(indexName = "test-index-sample-core-rest-template", type = "test-type", shards = 1, replicas = 0, refreshInterval = "-1")
|
@Document(indexName = "test-index-sample-core-rest-template", type = "test-type", shards = 1, replicas = 0,
|
||||||
|
refreshInterval = "-1")
|
||||||
static class SampleEntity {
|
static class SampleEntity {
|
||||||
|
|
||||||
@Id private String id;
|
@Id private String id;
|
||||||
@Field(type = Text, store = true, fielddata = true) private String type;
|
@Field(type = Text, store = true, fielddata = true) private String type;
|
||||||
@Field(type = Text, store = true, fielddata = true) private String message;
|
|
||||||
private int rate;
|
|
||||||
@ScriptedField private Double scriptedRate;
|
|
||||||
private boolean available;
|
|
||||||
private String highlightedMessage;
|
|
||||||
private GeoPoint location;
|
|
||||||
@Version private Long version;
|
|
||||||
@Score private float score;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals(Object o) {
|
|
||||||
if (this == o)
|
|
||||||
return true;
|
|
||||||
if (o == null || getClass() != o.getClass())
|
|
||||||
return false;
|
|
||||||
|
|
||||||
SampleEntity that = (SampleEntity) o;
|
|
||||||
|
|
||||||
if (available != that.available)
|
|
||||||
return false;
|
|
||||||
if (rate != that.rate)
|
|
||||||
return false;
|
|
||||||
if (highlightedMessage != null ? !highlightedMessage.equals(that.highlightedMessage)
|
|
||||||
: that.highlightedMessage != null)
|
|
||||||
return false;
|
|
||||||
if (id != null ? !id.equals(that.id) : that.id != null)
|
|
||||||
return false;
|
|
||||||
if (location != null ? !location.equals(that.location) : that.location != null)
|
|
||||||
return false;
|
|
||||||
if (message != null ? !message.equals(that.message) : that.message != null)
|
|
||||||
return false;
|
|
||||||
if (type != null ? !type.equals(that.type) : that.type != null)
|
|
||||||
return false;
|
|
||||||
if (version != null ? !version.equals(that.version) : that.version != null)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode() {
|
|
||||||
int result = id != null ? id.hashCode() : 0;
|
|
||||||
result = 31 * result + (type != null ? type.hashCode() : 0);
|
|
||||||
result = 31 * result + (message != null ? message.hashCode() : 0);
|
|
||||||
result = 31 * result + rate;
|
|
||||||
result = 31 * result + (available ? 1 : 0);
|
|
||||||
result = 31 * result + (highlightedMessage != null ? highlightedMessage.hashCode() : 0);
|
|
||||||
result = 31 * result + (location != null ? location.hashCode() : 0);
|
|
||||||
result = 31 * result + (version != null ? version.hashCode() : 0);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -105,7 +105,7 @@ public class ElasticsearchTemplateParentChildTests {
|
|||||||
XContentBuilder builder;
|
XContentBuilder builder;
|
||||||
builder = jsonBuilder().startObject().field("name", newChildName).endObject();
|
builder = jsonBuilder().startObject().field("name", newChildName).endObject();
|
||||||
updateRequest.doc(builder);
|
updateRequest.doc(builder);
|
||||||
final UpdateResponse response = update(updateRequest);
|
UpdateResponse response = update(updateRequest);
|
||||||
|
|
||||||
assertThat(response.getShardInfo().getSuccessful()).isEqualTo(1);
|
assertThat(response.getShardInfo().getSuccessful()).isEqualTo(1);
|
||||||
}
|
}
|
||||||
@ -170,7 +170,7 @@ public class ElasticsearchTemplateParentChildTests {
|
|||||||
|
|
||||||
private UpdateResponse update(UpdateRequest updateRequest) {
|
private UpdateResponse update(UpdateRequest updateRequest) {
|
||||||
|
|
||||||
final UpdateQuery update = new UpdateQuery();
|
UpdateQuery update = new UpdateQuery();
|
||||||
update.setId(updateRequest.id());
|
update.setId(updateRequest.id());
|
||||||
update.setType(updateRequest.type());
|
update.setType(updateRequest.type());
|
||||||
update.setIndexName(updateRequest.index());
|
update.setIndexName(updateRequest.index());
|
||||||
|
@ -23,10 +23,9 @@ import static org.springframework.data.elasticsearch.utils.IndexBuilder.*;
|
|||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.Setter;
|
|
||||||
import lombok.ToString;
|
|
||||||
|
|
||||||
import java.lang.Double;
|
import java.lang.Double;
|
||||||
import java.lang.Integer;
|
import java.lang.Integer;
|
||||||
@ -44,8 +43,6 @@ import java.util.UUID;
|
|||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.apache.commons.lang.builder.EqualsBuilder;
|
|
||||||
import org.apache.commons.lang.builder.HashCodeBuilder;
|
|
||||||
import org.assertj.core.util.Lists;
|
import org.assertj.core.util.Lists;
|
||||||
import org.elasticsearch.action.get.MultiGetItemResponse;
|
import org.elasticsearch.action.get.MultiGetItemResponse;
|
||||||
import org.elasticsearch.action.get.MultiGetResponse;
|
import org.elasticsearch.action.get.MultiGetResponse;
|
||||||
@ -65,6 +62,7 @@ import org.junit.After;
|
|||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.annotation.Id;
|
import org.springframework.data.annotation.Id;
|
||||||
import org.springframework.data.annotation.Version;
|
import org.springframework.data.annotation.Version;
|
||||||
@ -259,7 +257,7 @@ public class ElasticsearchTemplateTests {
|
|||||||
|
|
||||||
// when
|
// when
|
||||||
SearchQuery query = new NativeSearchQueryBuilder().withIds(Arrays.asList(documentId, documentId2)).build();
|
SearchQuery query = new NativeSearchQueryBuilder().withIds(Arrays.asList(documentId, documentId2)).build();
|
||||||
LinkedList<SampleEntity> sampleEntities = elasticsearchTemplate.multiGet(query, SampleEntity.class);
|
List<SampleEntity> sampleEntities = elasticsearchTemplate.multiGet(query, SampleEntity.class);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(sampleEntities).hasSize(2);
|
assertThat(sampleEntities).hasSize(2);
|
||||||
@ -289,7 +287,7 @@ public class ElasticsearchTemplateTests {
|
|||||||
// when
|
// when
|
||||||
SearchQuery query = new NativeSearchQueryBuilder().withIds(Arrays.asList(documentId, documentId2))
|
SearchQuery query = new NativeSearchQueryBuilder().withIds(Arrays.asList(documentId, documentId2))
|
||||||
.withFields("message", "type").build();
|
.withFields("message", "type").build();
|
||||||
LinkedList<SampleEntity> sampleEntities = elasticsearchTemplate.multiGet(query, SampleEntity.class,
|
List<SampleEntity> sampleEntities = elasticsearchTemplate.multiGet(query, SampleEntity.class,
|
||||||
new MultiGetResultMapper() {
|
new MultiGetResultMapper() {
|
||||||
@Override
|
@Override
|
||||||
public <T> LinkedList<T> mapResults(MultiGetResponse responses, Class<T> clazz) {
|
public <T> LinkedList<T> mapResults(MultiGetResponse responses, Class<T> clazz) {
|
||||||
@ -893,7 +891,7 @@ public class ElasticsearchTemplateTests {
|
|||||||
// when
|
// when
|
||||||
boolean created = elasticsearchTemplate.createIndex(SampleEntity.class);
|
boolean created = elasticsearchTemplate.createIndex(SampleEntity.class);
|
||||||
elasticsearchTemplate.putMapping(SampleEntity.class);
|
elasticsearchTemplate.putMapping(SampleEntity.class);
|
||||||
final Map setting = elasticsearchTemplate.getSetting(SampleEntity.class);
|
Map setting = elasticsearchTemplate.getSetting(SampleEntity.class);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(created).isTrue();
|
assertThat(created).isTrue();
|
||||||
@ -1470,7 +1468,7 @@ public class ElasticsearchTemplateTests {
|
|||||||
elasticsearchTemplate.index(indexQuery);
|
elasticsearchTemplate.index(indexQuery);
|
||||||
elasticsearchTemplate.refresh(SampleEntity.class);
|
elasticsearchTemplate.refresh(SampleEntity.class);
|
||||||
|
|
||||||
final List<HighlightBuilder.Field> message = new HighlightBuilder().field("message").fields();
|
List<HighlightBuilder.Field> message = new HighlightBuilder().field("message").fields();
|
||||||
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("message", "test"))
|
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("message", "test"))
|
||||||
.withHighlightFields(message.toArray(new HighlightBuilder.Field[message.size()])).build();
|
.withHighlightFields(message.toArray(new HighlightBuilder.Field[message.size()])).build();
|
||||||
|
|
||||||
@ -1878,7 +1876,7 @@ public class ElasticsearchTemplateTests {
|
|||||||
Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class);
|
Page<SampleEntity> sampleEntities = elasticsearchTemplate.queryForPage(searchQuery, SampleEntity.class);
|
||||||
assertThat(sampleEntities.getTotalElements()).isEqualTo(2);
|
assertThat(sampleEntities.getTotalElements()).isEqualTo(2);
|
||||||
|
|
||||||
final List<SampleEntity> content = sampleEntities.getContent();
|
List<SampleEntity> content = sampleEntities.getContent();
|
||||||
assertThat(content.get(0).getId()).isNotNull();
|
assertThat(content.get(0).getId()).isNotNull();
|
||||||
assertThat(content.get(1).getId()).isNotNull();
|
assertThat(content.get(1).getId()).isNotNull();
|
||||||
}
|
}
|
||||||
@ -1949,7 +1947,7 @@ public class ElasticsearchTemplateTests {
|
|||||||
});
|
});
|
||||||
|
|
||||||
assertThat(sampleEntities.getTotalElements()).isEqualTo(2);
|
assertThat(sampleEntities.getTotalElements()).isEqualTo(2);
|
||||||
final List<Map> content = sampleEntities.getContent();
|
List<Map> content = sampleEntities.getContent();
|
||||||
assertThat(content.get(0).get("userId")).isEqualTo(person1.get("userId"));
|
assertThat(content.get(0).get("userId")).isEqualTo(person1.get("userId"));
|
||||||
assertThat(content.get(1).get("userId")).isEqualTo(person2.get("userId"));
|
assertThat(content.get(1).get("userId")).isEqualTo(person2.get("userId"));
|
||||||
}
|
}
|
||||||
@ -2456,7 +2454,7 @@ public class ElasticsearchTemplateTests {
|
|||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(created).isTrue();
|
assertThat(created).isTrue();
|
||||||
final Map setting = elasticsearchTemplate.getSetting(UseServerConfigurationEntity.class);
|
Map setting = elasticsearchTemplate.getSetting(UseServerConfigurationEntity.class);
|
||||||
assertThat(setting.get("index.number_of_shards")).isEqualTo("5");
|
assertThat(setting.get("index.number_of_shards")).isEqualTo("5");
|
||||||
assertThat(setting.get("index.number_of_replicas")).isEqualTo("1");
|
assertThat(setting.get("index.number_of_replicas")).isEqualTo("1");
|
||||||
}
|
}
|
||||||
@ -2471,9 +2469,8 @@ public class ElasticsearchTemplateTests {
|
|||||||
String content = ElasticsearchTemplate.readFileFromClasspath(settingsFile);
|
String content = ElasticsearchTemplate.readFileFromClasspath(settingsFile);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(content).isEqualTo(
|
assertThat(content).isEqualTo("index:\n" + " number_of_shards: 1\n" + " number_of_replicas: 0\n" + " analysis:\n"
|
||||||
"index:\n" + " number_of_shards: 1\n" + " number_of_replicas: 0\n" + " analysis:\n" + " analyzer:\n"
|
+ " analyzer:\n" + " emailAnalyzer:\n" + " type: custom\n" + " tokenizer: uax_url_email");
|
||||||
+ " emailAnalyzer:\n" + " type: custom\n" + " tokenizer: uax_url_email\n");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test // DATAES-531
|
@Test // DATAES-531
|
||||||
@ -2484,7 +2481,7 @@ public class ElasticsearchTemplateTests {
|
|||||||
// when
|
// when
|
||||||
boolean created = elasticsearchTemplate.createIndex(SampleEntity.class);
|
boolean created = elasticsearchTemplate.createIndex(SampleEntity.class);
|
||||||
elasticsearchTemplate.putMapping(SampleEntity.class);
|
elasticsearchTemplate.putMapping(SampleEntity.class);
|
||||||
final Map<String, Object> mapping = elasticsearchTemplate.getMapping(SampleEntity.class);
|
Map<String, Object> mapping = elasticsearchTemplate.getMapping(SampleEntity.class);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
assertThat(created).isTrue();
|
assertThat(created).isTrue();
|
||||||
@ -2717,13 +2714,11 @@ public class ElasticsearchTemplateTests {
|
|||||||
.withSort(new FieldSortBuilder("message").order(SortOrder.DESC)).withPageable(PageRequest.of(0, 10)).build();
|
.withSort(new FieldSortBuilder("message").order(SortOrder.DESC)).withPageable(PageRequest.of(0, 10)).build();
|
||||||
|
|
||||||
// when
|
// when
|
||||||
ScrolledPage<SampleEntity> scroll = (ScrolledPage<SampleEntity>) elasticsearchTemplate.startScroll(1000,
|
ScrolledPage<SampleEntity> scroll = elasticsearchTemplate.startScroll(1000, searchQuery, SampleEntity.class);
|
||||||
searchQuery, SampleEntity.class);
|
|
||||||
List<SampleEntity> sampleEntities = new ArrayList<>();
|
List<SampleEntity> sampleEntities = new ArrayList<>();
|
||||||
while (scroll.hasContent()) {
|
while (scroll.hasContent()) {
|
||||||
sampleEntities.addAll(scroll.getContent());
|
sampleEntities.addAll(scroll.getContent());
|
||||||
scroll = (ScrolledPage<SampleEntity>) elasticsearchTemplate.continueScroll(scroll.getScrollId(), 1000,
|
scroll = elasticsearchTemplate.continueScroll(scroll.getScrollId(), 1000, SampleEntity.class);
|
||||||
SampleEntity.class);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// then
|
// then
|
||||||
@ -2766,13 +2761,11 @@ public class ElasticsearchTemplateTests {
|
|||||||
.build();
|
.build();
|
||||||
|
|
||||||
// when
|
// when
|
||||||
ScrolledPage<SampleEntity> scroll = (ScrolledPage<SampleEntity>) elasticsearchTemplate.startScroll(1000,
|
ScrolledPage<SampleEntity> scroll = elasticsearchTemplate.startScroll(1000, searchQuery, SampleEntity.class);
|
||||||
searchQuery, SampleEntity.class);
|
|
||||||
List<SampleEntity> sampleEntities = new ArrayList<>();
|
List<SampleEntity> sampleEntities = new ArrayList<>();
|
||||||
while (scroll.hasContent()) {
|
while (scroll.hasContent()) {
|
||||||
sampleEntities.addAll(scroll.getContent());
|
sampleEntities.addAll(scroll.getContent());
|
||||||
scroll = (ScrolledPage<SampleEntity>) elasticsearchTemplate.continueScroll(scroll.getScrollId(), 1000,
|
scroll = elasticsearchTemplate.continueScroll(scroll.getScrollId(), 1000, SampleEntity.class);
|
||||||
SampleEntity.class);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// then
|
// then
|
||||||
@ -2811,17 +2804,10 @@ public class ElasticsearchTemplateTests {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Data
|
||||||
* @author Rizwan Idrees
|
|
||||||
* @author Mohsin Husen
|
|
||||||
* @author Chris White
|
|
||||||
* @author Sascha Woo
|
|
||||||
*/
|
|
||||||
@Setter
|
|
||||||
@Getter
|
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@ToString
|
@EqualsAndHashCode(exclude = "score")
|
||||||
@Builder
|
@Builder
|
||||||
@Document(indexName = INDEX_NAME_SAMPLE_ENTITY, type = "test-type", shards = 1, replicas = 0, refreshInterval = "-1")
|
@Document(indexName = INDEX_NAME_SAMPLE_ENTITY, type = "test-type", shards = 1, replicas = 0, refreshInterval = "-1")
|
||||||
static class SampleEntity {
|
static class SampleEntity {
|
||||||
@ -2837,49 +2823,6 @@ public class ElasticsearchTemplateTests {
|
|||||||
private GeoPoint location;
|
private GeoPoint location;
|
||||||
@Version private Long version;
|
@Version private Long version;
|
||||||
@Score private float score;
|
@Score private float score;
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals(Object o) {
|
|
||||||
if (this == o)
|
|
||||||
return true;
|
|
||||||
if (o == null || getClass() != o.getClass())
|
|
||||||
return false;
|
|
||||||
|
|
||||||
SampleEntity that = (SampleEntity) o;
|
|
||||||
|
|
||||||
if (available != that.available)
|
|
||||||
return false;
|
|
||||||
if (rate != that.rate)
|
|
||||||
return false;
|
|
||||||
if (highlightedMessage != null ? !highlightedMessage.equals(that.highlightedMessage)
|
|
||||||
: that.highlightedMessage != null)
|
|
||||||
return false;
|
|
||||||
if (id != null ? !id.equals(that.id) : that.id != null)
|
|
||||||
return false;
|
|
||||||
if (location != null ? !location.equals(that.location) : that.location != null)
|
|
||||||
return false;
|
|
||||||
if (message != null ? !message.equals(that.message) : that.message != null)
|
|
||||||
return false;
|
|
||||||
if (type != null ? !type.equals(that.type) : that.type != null)
|
|
||||||
return false;
|
|
||||||
if (version != null ? !version.equals(that.version) : that.version != null)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode() {
|
|
||||||
int result = id != null ? id.hashCode() : 0;
|
|
||||||
result = 31 * result + (type != null ? type.hashCode() : 0);
|
|
||||||
result = 31 * result + (message != null ? message.hashCode() : 0);
|
|
||||||
result = 31 * result + rate;
|
|
||||||
result = 31 * result + (available ? 1 : 0);
|
|
||||||
result = 31 * result + (highlightedMessage != null ? highlightedMessage.hashCode() : 0);
|
|
||||||
result = 31 * result + (location != null ? location.hashCode() : 0);
|
|
||||||
result = 31 * result + (version != null ? version.hashCode() : 0);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -2887,14 +2830,12 @@ public class ElasticsearchTemplateTests {
|
|||||||
* @author Rizwan Idrees
|
* @author Rizwan Idrees
|
||||||
* @author Mohsin Husen
|
* @author Mohsin Husen
|
||||||
*/
|
*/
|
||||||
@Setter
|
@Data
|
||||||
@Getter
|
|
||||||
@NoArgsConstructor
|
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Builder
|
@Builder
|
||||||
@Document(indexName = "test-index-uuid-keyed-core-template", type = "test-type-uuid-keyed", shards = 1, replicas = 0,
|
@Document(indexName = "test-index-uuid-keyed-core-template", type = "test-type-uuid-keyed", shards = 1, replicas = 0,
|
||||||
refreshInterval = "-1")
|
refreshInterval = "-1")
|
||||||
static class SampleEntityUUIDKeyed {
|
private static class SampleEntityUUIDKeyed {
|
||||||
|
|
||||||
@Id private UUID id;
|
@Id private UUID id;
|
||||||
private String type;
|
private String type;
|
||||||
@ -2908,60 +2849,12 @@ public class ElasticsearchTemplateTests {
|
|||||||
|
|
||||||
@Version private Long version;
|
@Version private Long version;
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals(Object o) {
|
|
||||||
if (this == o)
|
|
||||||
return true;
|
|
||||||
if (o == null || getClass() != o.getClass())
|
|
||||||
return false;
|
|
||||||
|
|
||||||
SampleEntityUUIDKeyed that = (SampleEntityUUIDKeyed) o;
|
|
||||||
|
|
||||||
if (available != that.available)
|
|
||||||
return false;
|
|
||||||
if (rate != that.rate)
|
|
||||||
return false;
|
|
||||||
if (highlightedMessage != null ? !highlightedMessage.equals(that.highlightedMessage)
|
|
||||||
: that.highlightedMessage != null)
|
|
||||||
return false;
|
|
||||||
if (id != null ? !id.equals(that.id) : that.id != null)
|
|
||||||
return false;
|
|
||||||
if (location != null ? !location.equals(that.location) : that.location != null)
|
|
||||||
return false;
|
|
||||||
if (message != null ? !message.equals(that.message) : that.message != null)
|
|
||||||
return false;
|
|
||||||
if (type != null ? !type.equals(that.type) : that.type != null)
|
|
||||||
return false;
|
|
||||||
if (version != null ? !version.equals(that.version) : that.version != null)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode() {
|
|
||||||
int result = id != null ? id.hashCode() : 0;
|
|
||||||
result = 31 * result + (type != null ? type.hashCode() : 0);
|
|
||||||
result = 31 * result + (message != null ? message.hashCode() : 0);
|
|
||||||
result = 31 * result + rate;
|
|
||||||
result = 31 * result + (available ? 1 : 0);
|
|
||||||
result = 31 * result + (highlightedMessage != null ? highlightedMessage.hashCode() : 0);
|
|
||||||
result = 31 * result + (location != null ? location.hashCode() : 0);
|
|
||||||
result = 31 * result + (version != null ? version.hashCode() : 0);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Data
|
||||||
* @author Rizwan Idrees
|
|
||||||
* @author Mohsin Husen
|
|
||||||
* @author Nordine Bittich
|
|
||||||
*/
|
|
||||||
@Setter
|
|
||||||
@Getter
|
|
||||||
@NoArgsConstructor
|
|
||||||
@AllArgsConstructor
|
|
||||||
@Builder
|
@Builder
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
@Document(indexName = "test-index-book-core-template", type = "book", shards = 1, replicas = 0,
|
@Document(indexName = "test-index-book-core-template", type = "book", shards = 1, replicas = 0,
|
||||||
refreshInterval = "-1")
|
refreshInterval = "-1")
|
||||||
static class Book {
|
static class Book {
|
||||||
@ -2975,44 +2868,20 @@ public class ElasticsearchTemplateTests {
|
|||||||
searchAnalyzer = "standard") }) private String description;
|
searchAnalyzer = "standard") }) private String description;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Data
|
||||||
* @author Rizwan Idrees
|
|
||||||
* @author Mohsin Husen
|
|
||||||
*/
|
|
||||||
static class Author {
|
static class Author {
|
||||||
|
|
||||||
private String id;
|
private String id;
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
public String getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(String id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setName(String name) {
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Data
|
||||||
* @author Ivan Greene
|
|
||||||
*/
|
|
||||||
@Setter
|
|
||||||
@Getter
|
|
||||||
@NoArgsConstructor
|
|
||||||
@AllArgsConstructor
|
|
||||||
@ToString
|
|
||||||
@Builder
|
@Builder
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
@Document(indexName = "test-index-version-core-template", type = "test-type", shards = 1, replicas = 0,
|
@Document(indexName = "test-index-version-core-template", type = "test-type", shards = 1, replicas = 0,
|
||||||
refreshInterval = "-1", versionType = VersionType.EXTERNAL_GTE)
|
refreshInterval = "-1", versionType = VersionType.EXTERNAL_GTE)
|
||||||
static class GTEVersionEntity {
|
private static class GTEVersionEntity {
|
||||||
|
|
||||||
@Version private Long version;
|
@Version private Long version;
|
||||||
|
|
||||||
@ -3021,10 +2890,7 @@ public class ElasticsearchTemplateTests {
|
|||||||
private String name;
|
private String name;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Data
|
||||||
* @author Abdul Waheed
|
|
||||||
* @author Mohsin Husen
|
|
||||||
*/
|
|
||||||
@Document(indexName = "test-index-hetro1-core-template", type = "hetro", replicas = 0, shards = 1)
|
@Document(indexName = "test-index-hetro1-core-template", type = "hetro", replicas = 0, shards = 1)
|
||||||
static class HetroEntity1 {
|
static class HetroEntity1 {
|
||||||
|
|
||||||
@ -3032,59 +2898,14 @@ public class ElasticsearchTemplateTests {
|
|||||||
private String firstName;
|
private String firstName;
|
||||||
@Version private Long version;
|
@Version private Long version;
|
||||||
|
|
||||||
public HetroEntity1(String id, String firstName) {
|
HetroEntity1(String id, String firstName) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.firstName = firstName;
|
this.firstName = firstName;
|
||||||
this.version = System.currentTimeMillis();
|
this.version = System.currentTimeMillis();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(String id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getFirstName() {
|
|
||||||
return firstName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFirstName(String firstName) {
|
|
||||||
this.firstName = firstName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getVersion() {
|
|
||||||
return version;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setVersion(Long version) {
|
|
||||||
this.version = version;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals(Object obj) {
|
|
||||||
if (!(obj instanceof SampleEntity)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (this == obj) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
HetroEntity1 rhs = (HetroEntity1) obj;
|
|
||||||
return new EqualsBuilder().append(this.id, rhs.id).append(this.firstName, rhs.firstName)
|
|
||||||
.append(this.version, rhs.version).isEquals();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode() {
|
|
||||||
return new HashCodeBuilder().append(id).append(firstName).append(version).toHashCode();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Data
|
||||||
* @author Abdul Waheed
|
|
||||||
* @author Mohsin Husen
|
|
||||||
*/
|
|
||||||
@Document(indexName = "test-index-hetro2-core-template", type = "hetro", replicas = 0, shards = 1)
|
@Document(indexName = "test-index-hetro2-core-template", type = "hetro", replicas = 0, shards = 1)
|
||||||
static class HetroEntity2 {
|
static class HetroEntity2 {
|
||||||
|
|
||||||
@ -3092,77 +2913,24 @@ public class ElasticsearchTemplateTests {
|
|||||||
private String lastName;
|
private String lastName;
|
||||||
@Version private Long version;
|
@Version private Long version;
|
||||||
|
|
||||||
public HetroEntity2(String id, String lastName) {
|
HetroEntity2(String id, String lastName) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.lastName = lastName;
|
this.lastName = lastName;
|
||||||
this.version = System.currentTimeMillis();
|
this.version = System.currentTimeMillis();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(String id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getLastName() {
|
|
||||||
return lastName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLastName(String lastName) {
|
|
||||||
this.lastName = lastName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getVersion() {
|
|
||||||
return version;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setVersion(Long version) {
|
|
||||||
this.version = version;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals(Object obj) {
|
|
||||||
if (!(obj instanceof SampleEntity)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (this == obj) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
HetroEntity2 rhs = (HetroEntity2) obj;
|
|
||||||
return new EqualsBuilder().append(this.id, rhs.id).append(this.lastName, rhs.lastName)
|
|
||||||
.append(this.version, rhs.version).isEquals();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode() {
|
|
||||||
return new HashCodeBuilder().append(id).append(lastName).append(version).toHashCode();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Data
|
||||||
* Created by akonczak on 12/12/2015.
|
|
||||||
*/
|
|
||||||
@Setter
|
|
||||||
@Getter
|
|
||||||
@NoArgsConstructor
|
|
||||||
@AllArgsConstructor
|
|
||||||
@Builder
|
|
||||||
@Document(indexName = "test-index-server-configuration", type = "test-type", useServerConfiguration = true,
|
@Document(indexName = "test-index-server-configuration", type = "test-type", useServerConfiguration = true,
|
||||||
shards = 10, replicas = 10, refreshInterval = "-1")
|
shards = 10, replicas = 10, refreshInterval = "-1")
|
||||||
static class UseServerConfigurationEntity {
|
private static class UseServerConfigurationEntity {
|
||||||
|
|
||||||
@Id private String id;
|
@Id private String id;
|
||||||
|
|
||||||
private String val;
|
private String val;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Data
|
||||||
* @author Rizwan Idrees
|
|
||||||
* @author Mohsin Husen
|
|
||||||
*/
|
|
||||||
@Document(indexName = "test-index-sample-mapping", type = "mapping", shards = 1, replicas = 0, refreshInterval = "-1")
|
@Document(indexName = "test-index-sample-mapping", type = "mapping", shards = 1, replicas = 0, refreshInterval = "-1")
|
||||||
static class SampleMappingEntity {
|
static class SampleMappingEntity {
|
||||||
|
|
||||||
@ -3170,24 +2938,6 @@ public class ElasticsearchTemplateTests {
|
|||||||
|
|
||||||
@Field(type = Text, index = false, store = true, analyzer = "standard") private String message;
|
@Field(type = Text, index = false, store = true, analyzer = "standard") private String message;
|
||||||
|
|
||||||
private SampleMappingEntity.NestedEntity nested;
|
|
||||||
|
|
||||||
public String getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(String id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getMessage() {
|
|
||||||
return message;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setMessage(String message) {
|
|
||||||
this.message = message;
|
|
||||||
}
|
|
||||||
|
|
||||||
static class NestedEntity {
|
static class NestedEntity {
|
||||||
|
|
||||||
@Field(type = Text) private String someField;
|
@Field(type = Text) private String someField;
|
||||||
|
@ -18,28 +18,17 @@ package org.springframework.data.elasticsearch.core;
|
|||||||
import static org.apache.commons.lang.RandomStringUtils.*;
|
import static org.apache.commons.lang.RandomStringUtils.*;
|
||||||
import static org.springframework.data.elasticsearch.annotations.FieldType.*;
|
import static org.springframework.data.elasticsearch.annotations.FieldType.*;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.Data;
|
||||||
import lombok.Builder;
|
|
||||||
import lombok.Getter;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
import lombok.Setter;
|
|
||||||
import lombok.ToString;
|
|
||||||
|
|
||||||
import java.lang.Double;
|
|
||||||
import java.lang.Long;
|
|
||||||
|
|
||||||
import org.elasticsearch.action.index.IndexRequest;
|
import org.elasticsearch.action.index.IndexRequest;
|
||||||
import org.elasticsearch.common.xcontent.XContentType;
|
import org.elasticsearch.common.xcontent.XContentType;
|
||||||
import org.elasticsearch.index.engine.DocumentMissingException;
|
import org.elasticsearch.index.engine.DocumentMissingException;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
import org.springframework.data.annotation.Id;
|
import org.springframework.data.annotation.Id;
|
||||||
import org.springframework.data.annotation.Version;
|
|
||||||
import org.springframework.data.elasticsearch.annotations.Document;
|
import org.springframework.data.elasticsearch.annotations.Document;
|
||||||
import org.springframework.data.elasticsearch.annotations.Field;
|
import org.springframework.data.elasticsearch.annotations.Field;
|
||||||
import org.springframework.data.elasticsearch.annotations.Score;
|
|
||||||
import org.springframework.data.elasticsearch.annotations.ScriptedField;
|
|
||||||
import org.springframework.data.elasticsearch.core.geo.GeoPoint;
|
|
||||||
import org.springframework.data.elasticsearch.core.query.UpdateQuery;
|
import org.springframework.data.elasticsearch.core.query.UpdateQuery;
|
||||||
import org.springframework.data.elasticsearch.core.query.UpdateQueryBuilder;
|
import org.springframework.data.elasticsearch.core.query.UpdateQueryBuilder;
|
||||||
import org.springframework.test.context.ContextConfiguration;
|
import org.springframework.test.context.ContextConfiguration;
|
||||||
@ -62,30 +51,12 @@ public class ElasticsearchTransportTemplateTests extends ElasticsearchTemplateTe
|
|||||||
elasticsearchTemplate.update(updateQuery);
|
elasticsearchTemplate.update(updateQuery);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Data
|
||||||
* @author Rizwan Idrees
|
@Document(indexName = "test-index-sample-core-transport-template", type = "test-type", shards = 1, replicas = 0,
|
||||||
* @author Mohsin Husen
|
refreshInterval = "-1")
|
||||||
* @author Chris White
|
|
||||||
* @author Sascha Woo
|
|
||||||
*/
|
|
||||||
@Setter
|
|
||||||
@Getter
|
|
||||||
@NoArgsConstructor
|
|
||||||
@AllArgsConstructor
|
|
||||||
@ToString
|
|
||||||
@Builder
|
|
||||||
@Document(indexName = "test-index-sample-core-transport-template", type = "test-type", shards = 1, replicas = 0, refreshInterval = "-1")
|
|
||||||
static class SampleEntity {
|
static class SampleEntity {
|
||||||
|
|
||||||
@Id private String id;
|
@Id private String id;
|
||||||
@Field(type = Text, store = true, fielddata = true) private String type;
|
@Field(type = Text, store = true, fielddata = true) private String type;
|
||||||
@Field(type = Text, store = true, fielddata = true) private String message;
|
|
||||||
private int rate;
|
|
||||||
@ScriptedField private Double scriptedRate;
|
|
||||||
private boolean available;
|
|
||||||
private String highlightedMessage;
|
|
||||||
private GeoPoint location;
|
|
||||||
@Version private Long version;
|
|
||||||
@Score private float score;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,8 @@ import static org.assertj.core.api.Assertions.*;
|
|||||||
import static org.elasticsearch.index.query.QueryBuilders.*;
|
import static org.elasticsearch.index.query.QueryBuilders.*;
|
||||||
import static org.springframework.data.elasticsearch.annotations.FieldType.*;
|
import static org.springframework.data.elasticsearch.annotations.FieldType.*;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@ -29,6 +31,7 @@ import org.elasticsearch.action.search.SearchPhaseExecutionException;
|
|||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.annotation.Id;
|
import org.springframework.data.annotation.Id;
|
||||||
import org.springframework.data.elasticsearch.annotations.Document;
|
import org.springframework.data.elasticsearch.annotations.Document;
|
||||||
@ -111,11 +114,8 @@ public class LogEntityTests {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Simple type to test facets
|
* Simple type to test facets
|
||||||
*
|
|
||||||
* @author Artur Konczak
|
|
||||||
* @author Mohsin Husen
|
|
||||||
*/
|
*/
|
||||||
|
@Data
|
||||||
@Document(indexName = "test-index-log-core", type = "test-log-type", shards = 1, replicas = 0, refreshInterval = "-1")
|
@Document(indexName = "test-index-log-core", type = "test-log-type", shards = 1, replicas = 0, refreshInterval = "-1")
|
||||||
static class LogEntity {
|
static class LogEntity {
|
||||||
|
|
||||||
@ -137,50 +137,6 @@ public class LogEntityTests {
|
|||||||
this.id = id;
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(String id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getAction() {
|
|
||||||
return action;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String toString() {
|
|
||||||
return new StringBuffer().append("{id:").append(id).append(",action:").append(action).append(",code:")
|
|
||||||
.append(sequenceCode).append(",date:").append(format.format(date)).append("}").toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAction(String action) {
|
|
||||||
this.action = action;
|
|
||||||
}
|
|
||||||
|
|
||||||
public long getSequenceCode() {
|
|
||||||
return sequenceCode;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSequenceCode(long sequenceCode) {
|
|
||||||
this.sequenceCode = sequenceCode;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getIp() {
|
|
||||||
return ip;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setIp(String ip) {
|
|
||||||
this.ip = ip;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getDate() {
|
|
||||||
return date;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDate(Date date) {
|
|
||||||
this.date = date;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -189,7 +145,6 @@ public class LogEntityTests {
|
|||||||
* @author Artur Konczak
|
* @author Artur Konczak
|
||||||
* @author Mohsin Husen
|
* @author Mohsin Husen
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static class LogEntityBuilder {
|
static class LogEntityBuilder {
|
||||||
|
|
||||||
private LogEntity result;
|
private LogEntity result;
|
||||||
|
@ -22,14 +22,11 @@ import static org.springframework.data.elasticsearch.annotations.FieldType.*;
|
|||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.Getter;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.Setter;
|
|
||||||
import lombok.ToString;
|
|
||||||
import reactor.core.publisher.Mono;
|
import reactor.core.publisher.Mono;
|
||||||
import reactor.test.StepVerifier;
|
import reactor.test.StepVerifier;
|
||||||
|
|
||||||
import java.lang.Double;
|
|
||||||
import java.lang.Long;
|
import java.lang.Long;
|
||||||
import java.lang.Object;
|
import java.lang.Object;
|
||||||
import java.net.ConnectException;
|
import java.net.ConnectException;
|
||||||
@ -47,6 +44,7 @@ import org.junit.Before;
|
|||||||
import org.junit.Rule;
|
import org.junit.Rule;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
import org.springframework.core.convert.support.DefaultConversionService;
|
import org.springframework.core.convert.support.DefaultConversionService;
|
||||||
import org.springframework.dao.DataAccessResourceFailureException;
|
import org.springframework.dao.DataAccessResourceFailureException;
|
||||||
import org.springframework.data.annotation.Id;
|
import org.springframework.data.annotation.Id;
|
||||||
@ -60,8 +58,6 @@ import org.springframework.data.elasticsearch.TestUtils;
|
|||||||
import org.springframework.data.elasticsearch.annotations.Document;
|
import org.springframework.data.elasticsearch.annotations.Document;
|
||||||
import org.springframework.data.elasticsearch.annotations.Field;
|
import org.springframework.data.elasticsearch.annotations.Field;
|
||||||
import org.springframework.data.elasticsearch.annotations.Score;
|
import org.springframework.data.elasticsearch.annotations.Score;
|
||||||
import org.springframework.data.elasticsearch.annotations.ScriptedField;
|
|
||||||
import org.springframework.data.elasticsearch.core.geo.GeoPoint;
|
|
||||||
import org.springframework.data.elasticsearch.core.query.Criteria;
|
import org.springframework.data.elasticsearch.core.query.Criteria;
|
||||||
import org.springframework.data.elasticsearch.core.query.CriteriaQuery;
|
import org.springframework.data.elasticsearch.core.query.CriteriaQuery;
|
||||||
import org.springframework.data.elasticsearch.core.query.IndexQuery;
|
import org.springframework.data.elasticsearch.core.query.IndexQuery;
|
||||||
@ -78,8 +74,8 @@ import org.springframework.util.StringUtils;
|
|||||||
*
|
*
|
||||||
* @author Christoph Strobl
|
* @author Christoph Strobl
|
||||||
* @author Mark Paluch
|
* @author Mark Paluch
|
||||||
* @currentRead Golden Fool - Robin Hobb
|
|
||||||
* @author Peter-Josef Meisch
|
* @author Peter-Josef Meisch
|
||||||
|
* @currentRead Golden Fool - Robin Hobb
|
||||||
*/
|
*/
|
||||||
@RunWith(SpringRunner.class)
|
@RunWith(SpringRunner.class)
|
||||||
@ContextConfiguration("classpath:infrastructure.xml")
|
@ContextConfiguration("classpath:infrastructure.xml")
|
||||||
@ -689,73 +685,17 @@ public class ReactiveElasticsearchTemplateTests {
|
|||||||
String message;
|
String message;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Data
|
||||||
* @author Rizwan Idrees
|
@Builder
|
||||||
* @author Mohsin Husen
|
|
||||||
* @author Chris White
|
|
||||||
* @author Sascha Woo
|
|
||||||
*/
|
|
||||||
@Setter
|
|
||||||
@Getter
|
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@ToString
|
@EqualsAndHashCode(exclude = "score")
|
||||||
@Builder
|
|
||||||
@Document(indexName = DEFAULT_INDEX, type = "test-type", shards = 1, replicas = 0, refreshInterval = "-1")
|
@Document(indexName = DEFAULT_INDEX, type = "test-type", shards = 1, replicas = 0, refreshInterval = "-1")
|
||||||
static class SampleEntity {
|
static class SampleEntity {
|
||||||
|
|
||||||
@Id private String id;
|
@Id private String id;
|
||||||
@Field(type = Text, store = true, fielddata = true) private String type;
|
|
||||||
@Field(type = Text, store = true, fielddata = true) private String message;
|
@Field(type = Text, store = true, fielddata = true) private String message;
|
||||||
private int rate;
|
|
||||||
@ScriptedField private Double scriptedRate;
|
|
||||||
private boolean available;
|
|
||||||
private String highlightedMessage;
|
|
||||||
private GeoPoint location;
|
|
||||||
@Version private Long version;
|
@Version private Long version;
|
||||||
@Score private float score;
|
@Score private float score;
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals(Object o) {
|
|
||||||
if (this == o)
|
|
||||||
return true;
|
|
||||||
if (o == null || getClass() != o.getClass())
|
|
||||||
return false;
|
|
||||||
|
|
||||||
SampleEntity that = (SampleEntity) o;
|
|
||||||
|
|
||||||
if (available != that.available)
|
|
||||||
return false;
|
|
||||||
if (rate != that.rate)
|
|
||||||
return false;
|
|
||||||
if (highlightedMessage != null ? !highlightedMessage.equals(that.highlightedMessage)
|
|
||||||
: that.highlightedMessage != null)
|
|
||||||
return false;
|
|
||||||
if (id != null ? !id.equals(that.id) : that.id != null)
|
|
||||||
return false;
|
|
||||||
if (location != null ? !location.equals(that.location) : that.location != null)
|
|
||||||
return false;
|
|
||||||
if (message != null ? !message.equals(that.message) : that.message != null)
|
|
||||||
return false;
|
|
||||||
if (type != null ? !type.equals(that.type) : that.type != null)
|
|
||||||
return false;
|
|
||||||
if (version != null ? !version.equals(that.version) : that.version != null)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode() {
|
|
||||||
int result = id != null ? id.hashCode() : 0;
|
|
||||||
result = 31 * result + (type != null ? type.hashCode() : 0);
|
|
||||||
result = 31 * result + (message != null ? message.hashCode() : 0);
|
|
||||||
result = 31 * result + rate;
|
|
||||||
result = 31 * result + (available ? 1 : 0);
|
|
||||||
result = 31 * result + (highlightedMessage != null ? highlightedMessage.hashCode() : 0);
|
|
||||||
result = 31 * result + (location != null ? location.hashCode() : 0);
|
|
||||||
result = 31 * result + (version != null ? version.hashCode() : 0);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,10 +22,8 @@ import static org.springframework.data.elasticsearch.annotations.FieldType.*;
|
|||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.Setter;
|
|
||||||
import lombok.ToString;
|
|
||||||
import reactor.core.publisher.Flux;
|
import reactor.core.publisher.Flux;
|
||||||
import reactor.core.publisher.Mono;
|
import reactor.core.publisher.Mono;
|
||||||
import reactor.test.StepVerifier;
|
import reactor.test.StepVerifier;
|
||||||
@ -49,13 +47,13 @@ import org.mockito.ArgumentCaptor;
|
|||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.junit.MockitoJUnit;
|
import org.mockito.junit.MockitoJUnit;
|
||||||
import org.mockito.junit.MockitoRule;
|
import org.mockito.junit.MockitoRule;
|
||||||
|
|
||||||
import org.springframework.data.annotation.Id;
|
import org.springframework.data.annotation.Id;
|
||||||
import org.springframework.data.annotation.Version;
|
import org.springframework.data.annotation.Version;
|
||||||
import org.springframework.data.domain.PageRequest;
|
import org.springframework.data.domain.PageRequest;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.data.elasticsearch.annotations.Document;
|
import org.springframework.data.elasticsearch.annotations.Document;
|
||||||
import org.springframework.data.elasticsearch.annotations.Field;
|
import org.springframework.data.elasticsearch.annotations.Field;
|
||||||
import org.springframework.data.elasticsearch.annotations.Score;
|
|
||||||
import org.springframework.data.elasticsearch.annotations.ScriptedField;
|
import org.springframework.data.elasticsearch.annotations.ScriptedField;
|
||||||
import org.springframework.data.elasticsearch.client.reactive.ReactiveElasticsearchClient;
|
import org.springframework.data.elasticsearch.client.reactive.ReactiveElasticsearchClient;
|
||||||
import org.springframework.data.elasticsearch.core.geo.GeoPoint;
|
import org.springframework.data.elasticsearch.core.geo.GeoPoint;
|
||||||
@ -255,13 +253,12 @@ public class ReactiveElasticsearchTemplateUnitTests {
|
|||||||
* @author Chris White
|
* @author Chris White
|
||||||
* @author Sascha Woo
|
* @author Sascha Woo
|
||||||
*/
|
*/
|
||||||
@Setter
|
@Data
|
||||||
@Getter
|
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@ToString
|
|
||||||
@Builder
|
@Builder
|
||||||
@Document(indexName = "test-index-sample-core-reactive-template-Unit", type = "test-type", shards = 1, replicas = 0, refreshInterval = "-1")
|
@Document(indexName = "test-index-sample-core-reactive-template-Unit", type = "test-type", shards = 1, replicas = 0,
|
||||||
|
refreshInterval = "-1")
|
||||||
static class SampleEntity {
|
static class SampleEntity {
|
||||||
|
|
||||||
@Id private String id;
|
@Id private String id;
|
||||||
@ -273,49 +270,5 @@ public class ReactiveElasticsearchTemplateUnitTests {
|
|||||||
private String highlightedMessage;
|
private String highlightedMessage;
|
||||||
private GeoPoint location;
|
private GeoPoint location;
|
||||||
@Version private Long version;
|
@Version private Long version;
|
||||||
@Score private float score;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals(Object o) {
|
|
||||||
if (this == o)
|
|
||||||
return true;
|
|
||||||
if (o == null || getClass() != o.getClass())
|
|
||||||
return false;
|
|
||||||
|
|
||||||
SampleEntity that = (SampleEntity) o;
|
|
||||||
|
|
||||||
if (available != that.available)
|
|
||||||
return false;
|
|
||||||
if (rate != that.rate)
|
|
||||||
return false;
|
|
||||||
if (highlightedMessage != null ? !highlightedMessage.equals(that.highlightedMessage)
|
|
||||||
: that.highlightedMessage != null)
|
|
||||||
return false;
|
|
||||||
if (id != null ? !id.equals(that.id) : that.id != null)
|
|
||||||
return false;
|
|
||||||
if (location != null ? !location.equals(that.location) : that.location != null)
|
|
||||||
return false;
|
|
||||||
if (message != null ? !message.equals(that.message) : that.message != null)
|
|
||||||
return false;
|
|
||||||
if (type != null ? !type.equals(that.type) : that.type != null)
|
|
||||||
return false;
|
|
||||||
if (version != null ? !version.equals(that.version) : that.version != null)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode() {
|
|
||||||
int result = id != null ? id.hashCode() : 0;
|
|
||||||
result = 31 * result + (type != null ? type.hashCode() : 0);
|
|
||||||
result = 31 * result + (message != null ? message.hashCode() : 0);
|
|
||||||
result = 31 * result + rate;
|
|
||||||
result = 31 * result + (available ? 1 : 0);
|
|
||||||
result = 31 * result + (highlightedMessage != null ? highlightedMessage.hashCode() : 0);
|
|
||||||
result = 31 * result + (location != null ? location.hashCode() : 0);
|
|
||||||
result = 31 * result + (version != null ? version.hashCode() : 0);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,21 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2018-2019 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
package org.springframework.data.elasticsearch.core;
|
package org.springframework.data.elasticsearch.core;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.assertj.core.api.Assertions.*;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@ -8,6 +23,7 @@ import java.util.Map;
|
|||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
import org.springframework.data.annotation.Id;
|
import org.springframework.data.annotation.Id;
|
||||||
import org.springframework.data.elasticsearch.annotations.Document;
|
import org.springframework.data.elasticsearch.annotations.Document;
|
||||||
import org.springframework.data.elasticsearch.annotations.DynamicTemplates;
|
import org.springframework.data.elasticsearch.annotations.DynamicTemplates;
|
||||||
@ -36,7 +52,7 @@ public class SimpleDynamicTemplatesMappingTests extends MappingContextBaseTests
|
|||||||
+ "\"mapping\":{\"type\":\"string\",\"analyzer\":\"standard_lowercase_asciifolding\"},"
|
+ "\"mapping\":{\"type\":\"string\",\"analyzer\":\"standard_lowercase_asciifolding\"},"
|
||||||
+ "\"path_match\":\"names.*\"}}]," + "\"properties\":{\"names\":{\"type\":\"object\"}}}}";
|
+ "\"path_match\":\"names.*\"}}]," + "\"properties\":{\"names\":{\"type\":\"object\"}}}}";
|
||||||
|
|
||||||
assertEquals(EXPECTED_MAPPING_ONE, mapping);
|
assertThat(mapping).isEqualTo(EXPECTED_MAPPING_ONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test // DATAES-568
|
@Test // DATAES-568
|
||||||
@ -50,7 +66,7 @@ public class SimpleDynamicTemplatesMappingTests extends MappingContextBaseTests
|
|||||||
+ "\"mapping\":{\"type\":\"string\",\"analyzer\":\"standard_lowercase_asciifolding\"},"
|
+ "\"mapping\":{\"type\":\"string\",\"analyzer\":\"standard_lowercase_asciifolding\"},"
|
||||||
+ "\"path_match\":\"participantA1.*\"}}]," + "\"properties\":{\"names\":{\"type\":\"object\"}}}}";
|
+ "\"path_match\":\"participantA1.*\"}}]," + "\"properties\":{\"names\":{\"type\":\"object\"}}}}";
|
||||||
|
|
||||||
assertEquals(EXPECTED_MAPPING_TWO, mapping);
|
assertThat(mapping).isEqualTo(EXPECTED_MAPPING_TWO);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -15,13 +15,16 @@
|
|||||||
*/
|
*/
|
||||||
package org.springframework.data.elasticsearch.core;
|
package org.springframework.data.elasticsearch.core;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
import static org.assertj.core.api.Assertions.*;
|
||||||
import static org.springframework.data.elasticsearch.annotations.FieldType.*;
|
import static org.springframework.data.elasticsearch.annotations.FieldType.*;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import org.springframework.data.annotation.Id;
|
import org.springframework.data.annotation.Id;
|
||||||
import org.springframework.data.elasticsearch.annotations.DateFormat;
|
import org.springframework.data.elasticsearch.annotations.DateFormat;
|
||||||
import org.springframework.data.elasticsearch.annotations.Document;
|
import org.springframework.data.elasticsearch.annotations.Document;
|
||||||
@ -46,12 +49,13 @@ public class SimpleElasticsearchDateMappingTests extends MappingContextBaseTests
|
|||||||
|
|
||||||
String mapping = getMappingBuilder().buildPropertyMapping(SampleDateMappingEntity.class);
|
String mapping = getMappingBuilder().buildPropertyMapping(SampleDateMappingEntity.class);
|
||||||
|
|
||||||
assertEquals(EXPECTED_MAPPING, mapping);
|
assertThat(mapping).isEqualTo(EXPECTED_MAPPING);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Jakub Vavrik
|
* @author Jakub Vavrik
|
||||||
*/
|
*/
|
||||||
|
@Data
|
||||||
@Document(indexName = "test-index-date-mapping-core", type = "mapping", shards = 1, replicas = 0,
|
@Document(indexName = "test-index-date-mapping-core", type = "mapping", shards = 1, replicas = 0,
|
||||||
refreshInterval = "-1")
|
refreshInterval = "-1")
|
||||||
static class SampleDateMappingEntity {
|
static class SampleDateMappingEntity {
|
||||||
@ -66,45 +70,5 @@ public class SimpleElasticsearchDateMappingTests extends MappingContextBaseTests
|
|||||||
@Field(type = FieldType.Date) private Date defaultFormatDate;
|
@Field(type = FieldType.Date) private Date defaultFormatDate;
|
||||||
|
|
||||||
@Field(type = FieldType.Date, format = DateFormat.basic_date) private Date basicFormatDate;
|
@Field(type = FieldType.Date, format = DateFormat.basic_date) private Date basicFormatDate;
|
||||||
|
|
||||||
public String getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(String id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getMessage() {
|
|
||||||
return message;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setMessage(String message) {
|
|
||||||
this.message = message;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getCustomFormatDate() {
|
|
||||||
return customFormatDate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCustomFormatDate(Date customFormatDate) {
|
|
||||||
this.customFormatDate = customFormatDate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getDefaultFormatDate() {
|
|
||||||
return defaultFormatDate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDefaultFormatDate(Date defaultFormatDate) {
|
|
||||||
this.defaultFormatDate = defaultFormatDate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getBasicFormatDate() {
|
|
||||||
return basicFormatDate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBasicFormatDate(Date basicFormatDate) {
|
|
||||||
this.basicFormatDate = basicFormatDate;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,8 @@ import static org.elasticsearch.search.aggregations.AggregationBuilders.*;
|
|||||||
import static org.springframework.data.elasticsearch.annotations.FieldType.*;
|
import static org.springframework.data.elasticsearch.annotations.FieldType.*;
|
||||||
import static org.springframework.data.elasticsearch.annotations.FieldType.Integer;
|
import static org.springframework.data.elasticsearch.annotations.FieldType.Integer;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
import java.lang.Integer;
|
import java.lang.Integer;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -32,6 +34,7 @@ import org.junit.After;
|
|||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.annotation.Id;
|
import org.springframework.data.annotation.Id;
|
||||||
import org.springframework.data.elasticsearch.annotations.Document;
|
import org.springframework.data.elasticsearch.annotations.Document;
|
||||||
@ -58,14 +61,14 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
|||||||
@ContextConfiguration("classpath:elasticsearch-template-test.xml")
|
@ContextConfiguration("classpath:elasticsearch-template-test.xml")
|
||||||
public class ElasticsearchTemplateAggregationTests {
|
public class ElasticsearchTemplateAggregationTests {
|
||||||
|
|
||||||
public static final String RIZWAN_IDREES = "Rizwan Idrees";
|
static final String RIZWAN_IDREES = "Rizwan Idrees";
|
||||||
public static final String MOHSIN_HUSEN = "Mohsin Husen";
|
static final String MOHSIN_HUSEN = "Mohsin Husen";
|
||||||
public static final String JONATHAN_YAN = "Jonathan Yan";
|
static final String JONATHAN_YAN = "Jonathan Yan";
|
||||||
public static final String ARTUR_KONCZAK = "Artur Konczak";
|
static final String ARTUR_KONCZAK = "Artur Konczak";
|
||||||
public static final int YEAR_2002 = 2002;
|
static final int YEAR_2002 = 2002;
|
||||||
public static final int YEAR_2001 = 2001;
|
static final int YEAR_2001 = 2001;
|
||||||
public static final int YEAR_2000 = 2000;
|
static final int YEAR_2000 = 2000;
|
||||||
public static final String INDEX_NAME = "test-index-articles-core-aggregation";
|
static final String INDEX_NAME = "test-index-articles-core-aggregation";
|
||||||
|
|
||||||
@Autowired private ElasticsearchTemplate elasticsearchTemplate;
|
@Autowired private ElasticsearchTemplate elasticsearchTemplate;
|
||||||
|
|
||||||
@ -128,7 +131,9 @@ public class ElasticsearchTemplateAggregationTests {
|
|||||||
* @author Artur Konczak
|
* @author Artur Konczak
|
||||||
* @author Mohsin Husen
|
* @author Mohsin Husen
|
||||||
*/
|
*/
|
||||||
@Document(indexName = "test-index-articles-core-aggregation", type = "article", shards = 1, replicas = 0, refreshInterval = "-1")
|
@Data
|
||||||
|
@Document(indexName = "test-index-articles-core-aggregation", type = "article", shards = 1, replicas = 0,
|
||||||
|
refreshInterval = "-1")
|
||||||
static class ArticleEntity {
|
static class ArticleEntity {
|
||||||
|
|
||||||
@Id private String id;
|
@Id private String id;
|
||||||
@ -152,54 +157,6 @@ public class ElasticsearchTemplateAggregationTests {
|
|||||||
public ArticleEntity(String id) {
|
public ArticleEntity(String id) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setId(String id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTitle() {
|
|
||||||
return title;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTitle(String title) {
|
|
||||||
this.title = title;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSubject() {
|
|
||||||
return subject;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSubject(String subject) {
|
|
||||||
this.subject = subject;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<String> getAuthors() {
|
|
||||||
return authors;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAuthors(List<String> authors) {
|
|
||||||
this.authors = authors;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Integer> getPublishedYears() {
|
|
||||||
return publishedYears;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPublishedYears(List<Integer> publishedYears) {
|
|
||||||
this.publishedYears = publishedYears;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getScore() {
|
|
||||||
return score;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setScore(int score) {
|
|
||||||
this.score = score;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -131,7 +131,7 @@ public class ElasticsearchTemplateCompletionTests {
|
|||||||
Fuzziness.AUTO);
|
Fuzziness.AUTO);
|
||||||
|
|
||||||
// when
|
// when
|
||||||
final SearchResponse suggestResponse = elasticsearchTemplate.suggest(
|
SearchResponse suggestResponse = elasticsearchTemplate.suggest(
|
||||||
new SuggestBuilder().addSuggestion("test-suggest", completionSuggestionFuzzyBuilder), CompletionEntity.class);
|
new SuggestBuilder().addSuggestion("test-suggest", completionSuggestionFuzzyBuilder), CompletionEntity.class);
|
||||||
CompletionSuggestion completionSuggestion = suggestResponse.getSuggest().getSuggestion("test-suggest");
|
CompletionSuggestion completionSuggestion = suggestResponse.getSuggest().getSuggestion("test-suggest");
|
||||||
List<CompletionSuggestion.Entry.Option> options = completionSuggestion.getEntries().get(0).getOptions();
|
List<CompletionSuggestion.Entry.Option> options = completionSuggestion.getEntries().get(0).getOptions();
|
||||||
@ -151,7 +151,7 @@ public class ElasticsearchTemplateCompletionTests {
|
|||||||
Fuzziness.AUTO);
|
Fuzziness.AUTO);
|
||||||
|
|
||||||
// when
|
// when
|
||||||
final SearchResponse suggestResponse = elasticsearchTemplate.suggest(
|
SearchResponse suggestResponse = elasticsearchTemplate.suggest(
|
||||||
new SuggestBuilder().addSuggestion("test-suggest", completionSuggestionFuzzyBuilder), CompletionEntity.class);
|
new SuggestBuilder().addSuggestion("test-suggest", completionSuggestionFuzzyBuilder), CompletionEntity.class);
|
||||||
CompletionSuggestion completionSuggestion = suggestResponse.getSuggest().getSuggestion("test-suggest");
|
CompletionSuggestion completionSuggestion = suggestResponse.getSuggest().getSuggestion("test-suggest");
|
||||||
List<CompletionSuggestion.Entry.Option> options = completionSuggestion.getEntries().get(0).getOptions();
|
List<CompletionSuggestion.Entry.Option> options = completionSuggestion.getEntries().get(0).getOptions();
|
||||||
@ -171,7 +171,7 @@ public class ElasticsearchTemplateCompletionTests {
|
|||||||
Fuzziness.AUTO);
|
Fuzziness.AUTO);
|
||||||
|
|
||||||
// when
|
// when
|
||||||
final SearchResponse suggestResponse = elasticsearchTemplate.suggest(
|
SearchResponse suggestResponse = elasticsearchTemplate.suggest(
|
||||||
new SuggestBuilder().addSuggestion("test-suggest", completionSuggestionFuzzyBuilder),
|
new SuggestBuilder().addSuggestion("test-suggest", completionSuggestionFuzzyBuilder),
|
||||||
AnnotatedCompletionEntity.class);
|
AnnotatedCompletionEntity.class);
|
||||||
CompletionSuggestion completionSuggestion = suggestResponse.getSuggest().getSuggestion("test-suggest");
|
CompletionSuggestion completionSuggestion = suggestResponse.getSuggest().getSuggestion("test-suggest");
|
||||||
|
@ -112,7 +112,7 @@ public class ElasticsearchTemplateCompletionWithContextsTests {
|
|||||||
Map<String, List<? extends ToXContent>> contextMap = new HashMap<>();
|
Map<String, List<? extends ToXContent>> contextMap = new HashMap<>();
|
||||||
List<CategoryQueryContext> contexts = new ArrayList<>(1);
|
List<CategoryQueryContext> contexts = new ArrayList<>(1);
|
||||||
|
|
||||||
final CategoryQueryContext.Builder builder = CategoryQueryContext.builder();
|
CategoryQueryContext.Builder builder = CategoryQueryContext.builder();
|
||||||
builder.setCategory("mongo");
|
builder.setCategory("mongo");
|
||||||
CategoryQueryContext queryContext = builder.build();
|
CategoryQueryContext queryContext = builder.build();
|
||||||
contexts.add(queryContext);
|
contexts.add(queryContext);
|
||||||
@ -121,7 +121,7 @@ public class ElasticsearchTemplateCompletionWithContextsTests {
|
|||||||
((CompletionSuggestionBuilder) completionSuggestionFuzzyBuilder).contexts(contextMap);
|
((CompletionSuggestionBuilder) completionSuggestionFuzzyBuilder).contexts(contextMap);
|
||||||
|
|
||||||
// when
|
// when
|
||||||
final SearchResponse suggestResponse = elasticsearchTemplate.suggest(
|
SearchResponse suggestResponse = elasticsearchTemplate.suggest(
|
||||||
new SuggestBuilder().addSuggestion("test-suggest", completionSuggestionFuzzyBuilder),
|
new SuggestBuilder().addSuggestion("test-suggest", completionSuggestionFuzzyBuilder),
|
||||||
ContextCompletionEntity.class);
|
ContextCompletionEntity.class);
|
||||||
assertThat(suggestResponse.getSuggest()).isNotNull();
|
assertThat(suggestResponse.getSuggest()).isNotNull();
|
||||||
@ -144,7 +144,7 @@ public class ElasticsearchTemplateCompletionWithContextsTests {
|
|||||||
Map<String, List<? extends ToXContent>> contextMap = new HashMap<>();
|
Map<String, List<? extends ToXContent>> contextMap = new HashMap<>();
|
||||||
List<CategoryQueryContext> contexts = new ArrayList<>(1);
|
List<CategoryQueryContext> contexts = new ArrayList<>(1);
|
||||||
|
|
||||||
final CategoryQueryContext.Builder builder = CategoryQueryContext.builder();
|
CategoryQueryContext.Builder builder = CategoryQueryContext.builder();
|
||||||
builder.setCategory("elastic");
|
builder.setCategory("elastic");
|
||||||
CategoryQueryContext queryContext = builder.build();
|
CategoryQueryContext queryContext = builder.build();
|
||||||
contexts.add(queryContext);
|
contexts.add(queryContext);
|
||||||
@ -153,7 +153,7 @@ public class ElasticsearchTemplateCompletionWithContextsTests {
|
|||||||
((CompletionSuggestionBuilder) completionSuggestionFuzzyBuilder).contexts(contextMap);
|
((CompletionSuggestionBuilder) completionSuggestionFuzzyBuilder).contexts(contextMap);
|
||||||
|
|
||||||
// when
|
// when
|
||||||
final SearchResponse suggestResponse = elasticsearchTemplate.suggest(
|
SearchResponse suggestResponse = elasticsearchTemplate.suggest(
|
||||||
new SuggestBuilder().addSuggestion("test-suggest", completionSuggestionFuzzyBuilder),
|
new SuggestBuilder().addSuggestion("test-suggest", completionSuggestionFuzzyBuilder),
|
||||||
ContextCompletionEntity.class);
|
ContextCompletionEntity.class);
|
||||||
assertThat(suggestResponse.getSuggest()).isNotNull();
|
assertThat(suggestResponse.getSuggest()).isNotNull();
|
||||||
@ -176,7 +176,7 @@ public class ElasticsearchTemplateCompletionWithContextsTests {
|
|||||||
Map<String, List<? extends ToXContent>> contextMap = new HashMap<>();
|
Map<String, List<? extends ToXContent>> contextMap = new HashMap<>();
|
||||||
List<CategoryQueryContext> contexts = new ArrayList<>(1);
|
List<CategoryQueryContext> contexts = new ArrayList<>(1);
|
||||||
|
|
||||||
final CategoryQueryContext.Builder builder = CategoryQueryContext.builder();
|
CategoryQueryContext.Builder builder = CategoryQueryContext.builder();
|
||||||
builder.setCategory("kotlin");
|
builder.setCategory("kotlin");
|
||||||
CategoryQueryContext queryContext = builder.build();
|
CategoryQueryContext queryContext = builder.build();
|
||||||
contexts.add(queryContext);
|
contexts.add(queryContext);
|
||||||
@ -185,7 +185,7 @@ public class ElasticsearchTemplateCompletionWithContextsTests {
|
|||||||
((CompletionSuggestionBuilder) completionSuggestionFuzzyBuilder).contexts(contextMap);
|
((CompletionSuggestionBuilder) completionSuggestionFuzzyBuilder).contexts(contextMap);
|
||||||
|
|
||||||
// when
|
// when
|
||||||
final SearchResponse suggestResponse = elasticsearchTemplate.suggest(
|
SearchResponse suggestResponse = elasticsearchTemplate.suggest(
|
||||||
new SuggestBuilder().addSuggestion("test-suggest", completionSuggestionFuzzyBuilder),
|
new SuggestBuilder().addSuggestion("test-suggest", completionSuggestionFuzzyBuilder),
|
||||||
ContextCompletionEntity.class);
|
ContextCompletionEntity.class);
|
||||||
assertThat(suggestResponse.getSuggest()).isNotNull();
|
assertThat(suggestResponse.getSuggest()).isNotNull();
|
||||||
|
@ -19,12 +19,15 @@ package org.springframework.data.elasticsearch.core.facet;
|
|||||||
import static org.assertj.core.api.Assertions.*;
|
import static org.assertj.core.api.Assertions.*;
|
||||||
import static org.elasticsearch.index.query.QueryBuilders.*;
|
import static org.elasticsearch.index.query.QueryBuilders.*;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.annotation.Id;
|
import org.springframework.data.annotation.Id;
|
||||||
import org.springframework.data.elasticsearch.annotations.Document;
|
import org.springframework.data.elasticsearch.annotations.Document;
|
||||||
@ -672,7 +675,9 @@ public class ElasticsearchTemplateFacetTests {
|
|||||||
* @author Artur Konczak
|
* @author Artur Konczak
|
||||||
* @author Mohsin Husen
|
* @author Mohsin Husen
|
||||||
*/
|
*/
|
||||||
@Document(indexName = "test-index-articles-core-facet", type = "article", shards = 1, replicas = 0, refreshInterval = "-1")
|
@Data
|
||||||
|
@Document(indexName = "test-index-articles-core-facet", type = "article", shards = 1, replicas = 0,
|
||||||
|
refreshInterval = "-1")
|
||||||
static class ArticleEntity {
|
static class ArticleEntity {
|
||||||
|
|
||||||
@Id private String id;
|
@Id private String id;
|
||||||
@ -697,54 +702,6 @@ public class ElasticsearchTemplateFacetTests {
|
|||||||
public ArticleEntity(String id) {
|
public ArticleEntity(String id) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setId(String id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTitle() {
|
|
||||||
return title;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTitle(String title) {
|
|
||||||
this.title = title;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSubject() {
|
|
||||||
return subject;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSubject(String subject) {
|
|
||||||
this.subject = subject;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<String> getAuthors() {
|
|
||||||
return authors;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAuthors(List<String> authors) {
|
|
||||||
this.authors = authors;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Integer> getPublishedYears() {
|
|
||||||
return publishedYears;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPublishedYears(List<Integer> publishedYears) {
|
|
||||||
this.publishedYears = publishedYears;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getScore() {
|
|
||||||
return score;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setScore(int score) {
|
|
||||||
this.score = score;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -19,6 +19,7 @@ import static org.assertj.core.api.Assertions.*;
|
|||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
@ -360,6 +361,7 @@ public class ElasticsearchTemplateGeoTests {
|
|||||||
* @author Franck Marchand
|
* @author Franck Marchand
|
||||||
* @author Mohsin Husen
|
* @author Mohsin Husen
|
||||||
*/
|
*/
|
||||||
|
@Data
|
||||||
@Document(indexName = "test-index-author-marker-core-geo", type = "geo-class-point-type", shards = 1, replicas = 0,
|
@Document(indexName = "test-index-author-marker-core-geo", type = "geo-class-point-type", shards = 1, replicas = 0,
|
||||||
refreshInterval = "-1")
|
refreshInterval = "-1")
|
||||||
static class AuthorMarkerEntity {
|
static class AuthorMarkerEntity {
|
||||||
@ -374,30 +376,6 @@ public class ElasticsearchTemplateGeoTests {
|
|||||||
public AuthorMarkerEntity(String id) {
|
public AuthorMarkerEntity(String id) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(String id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setName(String name) {
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public GeoPoint getLocation() {
|
|
||||||
return location;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLocation(GeoPoint location) {
|
|
||||||
this.location = location;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -24,7 +24,7 @@ import org.springframework.data.mapping.MappingException;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Unit tests for {@link SimpleElasticsearchPersistentProperty}.
|
* Unit tests for {@link SimpleElasticsearchPersistentProperty}.
|
||||||
*
|
*
|
||||||
* @author Oliver Gierke
|
* @author Oliver Gierke
|
||||||
* @author Peter-Josef Meisch
|
* @author Peter-Josef Meisch
|
||||||
*/
|
*/
|
||||||
@ -43,8 +43,9 @@ public class SimpleElasticsearchPersistentPropertyUnitTests {
|
|||||||
@Test // DATAES-562
|
@Test // DATAES-562
|
||||||
public void fieldAnnotationWithNameSetsFieldname() {
|
public void fieldAnnotationWithNameSetsFieldname() {
|
||||||
|
|
||||||
final SimpleElasticsearchPersistentEntity<?> persistentEntity = context.getRequiredPersistentEntity(FieldNameProperty.class);
|
SimpleElasticsearchPersistentEntity<?> persistentEntity = context
|
||||||
final ElasticsearchPersistentProperty persistentProperty = persistentEntity.getPersistentProperty("fieldProperty");
|
.getRequiredPersistentEntity(FieldNameProperty.class);
|
||||||
|
ElasticsearchPersistentProperty persistentProperty = persistentEntity.getPersistentProperty("fieldProperty");
|
||||||
|
|
||||||
assertThat(persistentProperty).isNotNull();
|
assertThat(persistentProperty).isNotNull();
|
||||||
assertThat(persistentProperty.getFieldName()).isEqualTo("by-name");
|
assertThat(persistentProperty.getFieldName()).isEqualTo("by-name");
|
||||||
@ -53,8 +54,9 @@ public class SimpleElasticsearchPersistentPropertyUnitTests {
|
|||||||
@Test // DATAES-562
|
@Test // DATAES-562
|
||||||
public void fieldAnnotationWithValueSetsFieldname() {
|
public void fieldAnnotationWithValueSetsFieldname() {
|
||||||
|
|
||||||
final SimpleElasticsearchPersistentEntity<?> persistentEntity = context.getRequiredPersistentEntity(FieldValueProperty.class);
|
SimpleElasticsearchPersistentEntity<?> persistentEntity = context
|
||||||
final ElasticsearchPersistentProperty persistentProperty = persistentEntity.getPersistentProperty("fieldProperty");
|
.getRequiredPersistentEntity(FieldValueProperty.class);
|
||||||
|
ElasticsearchPersistentProperty persistentProperty = persistentEntity.getPersistentProperty("fieldProperty");
|
||||||
|
|
||||||
assertThat(persistentProperty).isNotNull();
|
assertThat(persistentProperty).isNotNull();
|
||||||
assertThat(persistentProperty.getFieldName()).isEqualTo("by-value");
|
assertThat(persistentProperty.getFieldName()).isEqualTo("by-value");
|
||||||
|
@ -26,7 +26,6 @@ import lombok.Getter;
|
|||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
import java.lang.Double;
|
|
||||||
import java.lang.Long;
|
import java.lang.Long;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -34,6 +33,7 @@ import java.util.List;
|
|||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.annotation.Id;
|
import org.springframework.data.annotation.Id;
|
||||||
import org.springframework.data.annotation.Version;
|
import org.springframework.data.annotation.Version;
|
||||||
@ -41,9 +41,7 @@ import org.springframework.data.domain.Page;
|
|||||||
import org.springframework.data.elasticsearch.annotations.Document;
|
import org.springframework.data.elasticsearch.annotations.Document;
|
||||||
import org.springframework.data.elasticsearch.annotations.Field;
|
import org.springframework.data.elasticsearch.annotations.Field;
|
||||||
import org.springframework.data.elasticsearch.annotations.Score;
|
import org.springframework.data.elasticsearch.annotations.Score;
|
||||||
import org.springframework.data.elasticsearch.annotations.ScriptedField;
|
|
||||||
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
|
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
|
||||||
import org.springframework.data.elasticsearch.core.geo.GeoPoint;
|
|
||||||
import org.springframework.test.context.ContextConfiguration;
|
import org.springframework.test.context.ContextConfiguration;
|
||||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||||
|
|
||||||
@ -805,18 +803,14 @@ public class CriteriaQueryTests {
|
|||||||
@Getter
|
@Getter
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Document(indexName = "test-index-sample-core-query", type = "test-type", shards = 1, replicas = 0, refreshInterval = "-1")
|
@Document(indexName = "test-index-sample-core-query", type = "test-type", shards = 1, replicas = 0,
|
||||||
|
refreshInterval = "-1")
|
||||||
static class SampleEntity {
|
static class SampleEntity {
|
||||||
|
|
||||||
@Id private String id;
|
@Id private String id;
|
||||||
@org.springframework.data.elasticsearch.annotations.Field(type = Text, store = true,
|
@Field(type = Text, store = true, fielddata = true) private String type;
|
||||||
fielddata = true) private String type;
|
|
||||||
@Field(type = Text, store = true, fielddata = true) private String message;
|
@Field(type = Text, store = true, fielddata = true) private String message;
|
||||||
private int rate;
|
private int rate;
|
||||||
@ScriptedField private Double scriptedRate;
|
|
||||||
private boolean available;
|
|
||||||
private String highlightedMessage;
|
|
||||||
private GeoPoint location;
|
|
||||||
@Version private Long version;
|
@Version private Long version;
|
||||||
@Score private float score;
|
@Score private float score;
|
||||||
}
|
}
|
||||||
|
@ -19,9 +19,8 @@ import static org.assertj.core.api.Assertions.*;
|
|||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.Setter;
|
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
@ -36,6 +35,7 @@ import org.junit.AfterClass;
|
|||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.BeforeClass;
|
import org.junit.BeforeClass;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import org.springframework.data.annotation.Id;
|
import org.springframework.data.annotation.Id;
|
||||||
import org.springframework.data.elasticsearch.annotations.Document;
|
import org.springframework.data.elasticsearch.annotations.Document;
|
||||||
import org.springframework.data.elasticsearch.annotations.Field;
|
import org.springframework.data.elasticsearch.annotations.Field;
|
||||||
@ -155,8 +155,7 @@ public class CdiRepositoryTests {
|
|||||||
* @author Mohsin Husen
|
* @author Mohsin Husen
|
||||||
* @author Artur Konczak
|
* @author Artur Konczak
|
||||||
*/
|
*/
|
||||||
@Setter
|
@Data
|
||||||
@Getter
|
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Builder
|
@Builder
|
||||||
@ -187,42 +186,11 @@ public class CdiRepositoryTests {
|
|||||||
private String location;
|
private String location;
|
||||||
|
|
||||||
private Date lastModified;
|
private Date lastModified;
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode() {
|
|
||||||
return id.hashCode();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals(Object obj) {
|
|
||||||
if (this == obj) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (obj == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (getClass() != obj.getClass()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
Product other = (Product) obj;
|
|
||||||
if (id == null) {
|
|
||||||
if (other.id != null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
} else if (!id.equals(other.id)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Data
|
||||||
* @author Rizwan Idrees
|
@Document(indexName = "test-index-person-cdi-repository", type = "user", shards = 1, replicas = 0,
|
||||||
* @author Mohsin Husen
|
refreshInterval = "-1")
|
||||||
* @author Artur Konczak
|
|
||||||
*/
|
|
||||||
|
|
||||||
@Document(indexName = "test-index-person-cdi-repository", type = "user", shards = 1, replicas = 0, refreshInterval = "-1")
|
|
||||||
static class Person {
|
static class Person {
|
||||||
|
|
||||||
@Id private String id;
|
@Id private String id;
|
||||||
@ -233,50 +201,14 @@ public class CdiRepositoryTests {
|
|||||||
|
|
||||||
@Field(type = FieldType.Nested, includeInParent = true) private List<Book> books;
|
@Field(type = FieldType.Nested, includeInParent = true) private List<Book> books;
|
||||||
|
|
||||||
public String getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(String id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setName(String name) {
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Car> getCar() {
|
|
||||||
return car;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCar(List<Car> car) {
|
|
||||||
this.car = car;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Book> getBooks() {
|
|
||||||
return books;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBooks(List<Book> books) {
|
|
||||||
this.books = books;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Data
|
||||||
* @author Rizwan Idrees
|
|
||||||
* @author Mohsin Husen
|
|
||||||
* @author Nordine Bittich
|
|
||||||
*/
|
|
||||||
@Setter
|
|
||||||
@Getter
|
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Builder
|
@Builder
|
||||||
@Document(indexName = "test-index-book-cdi-repository", type = "book", shards = 1, replicas = 0, refreshInterval = "-1")
|
@Document(indexName = "test-index-book-cdi-repository", type = "book", shards = 1, replicas = 0,
|
||||||
|
refreshInterval = "-1")
|
||||||
static class Book {
|
static class Book {
|
||||||
|
|
||||||
@Id private String id;
|
@Id private String id;
|
||||||
@ -288,13 +220,7 @@ public class CdiRepositoryTests {
|
|||||||
searchAnalyzer = "standard") }) private String description;
|
searchAnalyzer = "standard") }) private String description;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Data
|
||||||
* @author Rizwan Idrees
|
|
||||||
* @author Mohsin Husen
|
|
||||||
* @author Artur Konczak
|
|
||||||
*/
|
|
||||||
@Setter
|
|
||||||
@Getter
|
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Builder
|
@Builder
|
||||||
@ -302,48 +228,13 @@ public class CdiRepositoryTests {
|
|||||||
|
|
||||||
private String name;
|
private String name;
|
||||||
private String model;
|
private String model;
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setName(String name) {
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getModel() {
|
|
||||||
return model;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setModel(String model) {
|
|
||||||
this.model = model;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Data
|
||||||
* @author Rizwan Idrees
|
|
||||||
* @author Mohsin Husen
|
|
||||||
*/
|
|
||||||
static class Author {
|
static class Author {
|
||||||
|
|
||||||
private String id;
|
private String id;
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
public String getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(String id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setName(String name) {
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -18,28 +18,17 @@ package org.springframework.data.elasticsearch.repositories.complex.custommethod
|
|||||||
import static org.assertj.core.api.Assertions.*;
|
import static org.assertj.core.api.Assertions.*;
|
||||||
import static org.springframework.data.elasticsearch.annotations.FieldType.*;
|
import static org.springframework.data.elasticsearch.annotations.FieldType.*;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.Data;
|
||||||
import lombok.Builder;
|
|
||||||
import lombok.Getter;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
import lombok.Setter;
|
|
||||||
import lombok.ToString;
|
|
||||||
|
|
||||||
import java.lang.Double;
|
|
||||||
import java.lang.Long;
|
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.annotation.Id;
|
import org.springframework.data.annotation.Id;
|
||||||
import org.springframework.data.annotation.Version;
|
|
||||||
import org.springframework.data.elasticsearch.annotations.Document;
|
import org.springframework.data.elasticsearch.annotations.Document;
|
||||||
import org.springframework.data.elasticsearch.annotations.Field;
|
import org.springframework.data.elasticsearch.annotations.Field;
|
||||||
import org.springframework.data.elasticsearch.annotations.Score;
|
|
||||||
import org.springframework.data.elasticsearch.annotations.ScriptedField;
|
|
||||||
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
|
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
|
||||||
import org.springframework.data.elasticsearch.core.geo.GeoPoint;
|
|
||||||
import org.springframework.data.elasticsearch.utils.IndexInitializer;
|
import org.springframework.data.elasticsearch.utils.IndexInitializer;
|
||||||
import org.springframework.test.context.ContextConfiguration;
|
import org.springframework.test.context.ContextConfiguration;
|
||||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||||
@ -59,7 +48,6 @@ public class ComplexCustomMethodRepositoryTests {
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void before() {
|
public void before() {
|
||||||
|
|
||||||
IndexInitializer.init(elasticsearchTemplate, SampleEntity.class);
|
IndexInitializer.init(elasticsearchTemplate, SampleEntity.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -75,31 +63,14 @@ public class ComplexCustomMethodRepositoryTests {
|
|||||||
assertThat(result).isEqualTo("2+2=4");
|
assertThat(result).isEqualTo("2+2=4");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Data
|
||||||
* @author Rizwan Idrees
|
@Document(indexName = "test-index-sample-repositories-complex-custommethod-autowiring", type = "test-type",
|
||||||
* @author Mohsin Husen
|
shards = 1, replicas = 0, refreshInterval = "-1")
|
||||||
* @author Chris White
|
|
||||||
* @author Sascha Woo
|
|
||||||
*/
|
|
||||||
@Setter
|
|
||||||
@Getter
|
|
||||||
@NoArgsConstructor
|
|
||||||
@AllArgsConstructor
|
|
||||||
@ToString
|
|
||||||
@Builder
|
|
||||||
@Document(indexName = "test-index-sample-repositories-complex-custommethod-autowiring", type = "test-type", shards = 1, replicas = 0, refreshInterval = "-1")
|
|
||||||
static class SampleEntity {
|
static class SampleEntity {
|
||||||
|
|
||||||
@Id private String id;
|
@Id private String id;
|
||||||
@Field(type = Text, store = true, fielddata = true) private String type;
|
@Field(type = Text, store = true, fielddata = true) private String type;
|
||||||
@Field(type = Text, store = true, fielddata = true) private String message;
|
@Field(type = Text, store = true, fielddata = true) private String message;
|
||||||
private int rate;
|
|
||||||
@ScriptedField private Double scriptedRate;
|
|
||||||
private boolean available;
|
|
||||||
private String highlightedMessage;
|
|
||||||
private GeoPoint location;
|
|
||||||
@Version private Long version;
|
|
||||||
@Score private float score;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -18,28 +18,17 @@ package org.springframework.data.elasticsearch.repositories.complex.custommethod
|
|||||||
import static org.assertj.core.api.Assertions.*;
|
import static org.assertj.core.api.Assertions.*;
|
||||||
import static org.springframework.data.elasticsearch.annotations.FieldType.*;
|
import static org.springframework.data.elasticsearch.annotations.FieldType.*;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.Data;
|
||||||
import lombok.Builder;
|
|
||||||
import lombok.Getter;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
import lombok.Setter;
|
|
||||||
import lombok.ToString;
|
|
||||||
|
|
||||||
import java.lang.Double;
|
|
||||||
import java.lang.Long;
|
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.annotation.Id;
|
import org.springframework.data.annotation.Id;
|
||||||
import org.springframework.data.annotation.Version;
|
|
||||||
import org.springframework.data.elasticsearch.annotations.Document;
|
import org.springframework.data.elasticsearch.annotations.Document;
|
||||||
import org.springframework.data.elasticsearch.annotations.Field;
|
import org.springframework.data.elasticsearch.annotations.Field;
|
||||||
import org.springframework.data.elasticsearch.annotations.Score;
|
|
||||||
import org.springframework.data.elasticsearch.annotations.ScriptedField;
|
|
||||||
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
|
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
|
||||||
import org.springframework.data.elasticsearch.core.geo.GeoPoint;
|
|
||||||
import org.springframework.data.elasticsearch.utils.IndexInitializer;
|
import org.springframework.data.elasticsearch.utils.IndexInitializer;
|
||||||
import org.springframework.test.context.ContextConfiguration;
|
import org.springframework.test.context.ContextConfiguration;
|
||||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||||
@ -58,8 +47,7 @@ public class ComplexCustomMethodRepositoryManualWiringTests {
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void before() {
|
public void before() {
|
||||||
|
IndexInitializer.init(elasticsearchTemplate, SampleEntity.class);
|
||||||
IndexInitializer.init(elasticsearchTemplate,SampleEntity.class);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -74,31 +62,13 @@ public class ComplexCustomMethodRepositoryManualWiringTests {
|
|||||||
assertThat(result).isEqualTo("3+3=6");
|
assertThat(result).isEqualTo("3+3=6");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Data
|
||||||
* @author Rizwan Idrees
|
@Document(indexName = "test-index-sample-repository-manual-wiring", type = "test-type", shards = 1, replicas = 0,
|
||||||
* @author Mohsin Husen
|
refreshInterval = "-1")
|
||||||
* @author Chris White
|
|
||||||
* @author Sascha Woo
|
|
||||||
*/
|
|
||||||
@Setter
|
|
||||||
@Getter
|
|
||||||
@NoArgsConstructor
|
|
||||||
@AllArgsConstructor
|
|
||||||
@ToString
|
|
||||||
@Builder
|
|
||||||
@Document(indexName = "test-index-sample-repository-manual-wiring", type = "test-type", shards = 1, replicas = 0, refreshInterval = "-1")
|
|
||||||
static class SampleEntity {
|
static class SampleEntity {
|
||||||
|
|
||||||
@Id private String id;
|
@Id private String id;
|
||||||
@Field(type = Text, store = true, fielddata = true) private String type;
|
@Field(type = Text, store = true, fielddata = true) private String type;
|
||||||
@Field(type = Text, store = true, fielddata = true) private String message;
|
@Field(type = Text, store = true, fielddata = true) private String message;
|
||||||
private int rate;
|
|
||||||
@ScriptedField private Double scriptedRate;
|
|
||||||
private boolean available;
|
|
||||||
private String highlightedMessage;
|
|
||||||
private GeoPoint location;
|
|
||||||
@Version private Long version;
|
|
||||||
@Score private float score;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,12 +21,9 @@ import static org.springframework.data.elasticsearch.annotations.FieldType.*;
|
|||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.Setter;
|
|
||||||
import lombok.ToString;
|
|
||||||
|
|
||||||
import java.lang.Double;
|
|
||||||
import java.lang.Long;
|
import java.lang.Long;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@ -35,6 +32,7 @@ import java.util.List;
|
|||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.annotation.Id;
|
import org.springframework.data.annotation.Id;
|
||||||
import org.springframework.data.annotation.Version;
|
import org.springframework.data.annotation.Version;
|
||||||
@ -46,8 +44,6 @@ import org.springframework.data.domain.Sort.Order;
|
|||||||
import org.springframework.data.elasticsearch.annotations.Document;
|
import org.springframework.data.elasticsearch.annotations.Document;
|
||||||
import org.springframework.data.elasticsearch.annotations.Field;
|
import org.springframework.data.elasticsearch.annotations.Field;
|
||||||
import org.springframework.data.elasticsearch.annotations.Query;
|
import org.springframework.data.elasticsearch.annotations.Query;
|
||||||
import org.springframework.data.elasticsearch.annotations.Score;
|
|
||||||
import org.springframework.data.elasticsearch.annotations.ScriptedField;
|
|
||||||
import org.springframework.data.elasticsearch.core.geo.GeoBox;
|
import org.springframework.data.elasticsearch.core.geo.GeoBox;
|
||||||
import org.springframework.data.elasticsearch.core.geo.GeoPoint;
|
import org.springframework.data.elasticsearch.core.geo.GeoPoint;
|
||||||
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
|
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
|
||||||
@ -1256,31 +1252,21 @@ public abstract class CustomMethodRepositoryBaseTests {
|
|||||||
return entities;
|
return entities;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
@Data
|
||||||
* @author Rizwan Idrees
|
|
||||||
* @author Mohsin Husen
|
|
||||||
* @author Chris White
|
|
||||||
* @author Sascha Woo
|
|
||||||
*/
|
|
||||||
@Setter
|
|
||||||
@Getter
|
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@ToString
|
|
||||||
@Builder
|
@Builder
|
||||||
@Document(indexName = "test-index-sample-repositories-custo-method", type = "test-type", shards = 1, replicas = 0, refreshInterval = "-1")
|
@Document(indexName = "test-index-sample-repositories-custo-method", type = "test-type", shards = 1, replicas = 0,
|
||||||
|
refreshInterval = "-1")
|
||||||
static class SampleEntity {
|
static class SampleEntity {
|
||||||
|
|
||||||
@Id private String id;
|
@Id private String id;
|
||||||
@Field(type = Text, store = true, fielddata = true) private String type;
|
@Field(type = Text, store = true, fielddata = true) private String type;
|
||||||
@Field(type = Text, store = true, fielddata = true) private String message;
|
@Field(type = Text, store = true, fielddata = true) private String message;
|
||||||
private int rate;
|
private int rate;
|
||||||
@ScriptedField private Double scriptedRate;
|
|
||||||
private boolean available;
|
private boolean available;
|
||||||
private String highlightedMessage;
|
|
||||||
private GeoPoint location;
|
private GeoPoint location;
|
||||||
@Version private Long version;
|
@Version private Long version;
|
||||||
@Score private float score;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -36,7 +36,6 @@ public class CustomMethodRepositoryRestTests extends CustomMethodRepositoryBaseT
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void before() {
|
public void before() {
|
||||||
|
|
||||||
IndexInitializer.init(elasticsearchTemplate, SampleEntity.class);
|
IndexInitializer.init(elasticsearchTemplate, SampleEntity.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,6 @@ public class CustomMethodRepositoryTests extends CustomMethodRepositoryBaseTests
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void before() {
|
public void before() {
|
||||||
|
|
||||||
IndexInitializer.init(elasticsearchTemplate, SampleEntity.class);
|
IndexInitializer.init(elasticsearchTemplate, SampleEntity.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,6 @@ public class DoubleIDRepositoryTests {
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void before() {
|
public void before() {
|
||||||
|
|
||||||
IndexInitializer.init(elasticsearchTemplate, DoubleIDEntity.class);
|
IndexInitializer.init(elasticsearchTemplate, DoubleIDEntity.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,7 +59,6 @@ public class SpringDataGeoRepositoryTests {
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void init() {
|
public void init() {
|
||||||
|
|
||||||
IndexInitializer.init(template, GeoEntity.class);
|
IndexInitializer.init(template, GeoEntity.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67,7 +66,7 @@ public class SpringDataGeoRepositoryTests {
|
|||||||
public void shouldSaveAndLoadGeoPoints() {
|
public void shouldSaveAndLoadGeoPoints() {
|
||||||
|
|
||||||
// given
|
// given
|
||||||
final Point point = new Point(15, 25);
|
Point point = new Point(15, 25);
|
||||||
GeoEntity entity = GeoEntity.builder().pointA(point).pointB(new GeoPoint(point.getX(), point.getY()))
|
GeoEntity entity = GeoEntity.builder().pointA(point).pointB(new GeoPoint(point.getX(), point.getY()))
|
||||||
.pointC(toGeoString(point)).pointD(toGeoArray(point)).build();
|
.pointC(toGeoString(point)).pointD(toGeoArray(point)).build();
|
||||||
|
|
||||||
|
@ -51,7 +51,6 @@ public class IntegerIDRepositoryTests {
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void before() {
|
public void before() {
|
||||||
|
|
||||||
IndexInitializer.init(elasticsearchTemplate, IntegerIDEntity.class);
|
IndexInitializer.init(elasticsearchTemplate, IntegerIDEntity.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,7 +60,6 @@ public class InnerObjectTests {
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void before() {
|
public void before() {
|
||||||
|
|
||||||
IndexInitializer.init(elasticsearchTemplate, Book.class);
|
IndexInitializer.init(elasticsearchTemplate, Book.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -55,7 +55,6 @@ public class DynamicSettingAndMappingEntityRepositoryTests {
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void before() {
|
public void before() {
|
||||||
|
|
||||||
IndexInitializer.init(elasticsearchTemplate, DynamicSettingAndMappingEntity.class);
|
IndexInitializer.init(elasticsearchTemplate, DynamicSettingAndMappingEntity.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,9 +21,10 @@ import java.util.Map;
|
|||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.springframework.data.annotation.Id;
|
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.data.annotation.Id;
|
||||||
import org.springframework.data.elasticsearch.annotations.Document;
|
import org.springframework.data.elasticsearch.annotations.Document;
|
||||||
import org.springframework.data.elasticsearch.annotations.Mapping;
|
import org.springframework.data.elasticsearch.annotations.Mapping;
|
||||||
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
|
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
|
||||||
@ -48,7 +49,6 @@ public class FieldDynamicMappingEntityRepositoryTests {
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void before() {
|
public void before() {
|
||||||
|
|
||||||
IndexInitializer.init(elasticsearchTemplate, FieldDynamicMappingEntity.class);
|
IndexInitializer.init(elasticsearchTemplate, FieldDynamicMappingEntity.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,7 +48,6 @@ public class SpELEntityTests {
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void before() {
|
public void before() {
|
||||||
|
|
||||||
IndexInitializer.init(template, SpELEntity.class);
|
IndexInitializer.init(template, SpELEntity.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,12 +17,15 @@ package org.springframework.data.elasticsearch.repositories.synonym;
|
|||||||
|
|
||||||
import static org.assertj.core.api.Assertions.*;
|
import static org.assertj.core.api.Assertions.*;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.elasticsearch.index.query.QueryBuilders;
|
import org.elasticsearch.index.query.QueryBuilders;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.annotation.Id;
|
import org.springframework.data.annotation.Id;
|
||||||
import org.springframework.data.elasticsearch.annotations.Document;
|
import org.springframework.data.elasticsearch.annotations.Document;
|
||||||
@ -51,7 +54,6 @@ public class SynonymRepositoryTests {
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void before() {
|
public void before() {
|
||||||
|
|
||||||
IndexInitializer.init(elasticsearchTemplate, SynonymEntity.class);
|
IndexInitializer.init(elasticsearchTemplate, SynonymEntity.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -81,6 +83,7 @@ public class SynonymRepositoryTests {
|
|||||||
/**
|
/**
|
||||||
* @author Mohsin Husen
|
* @author Mohsin Husen
|
||||||
*/
|
*/
|
||||||
|
@Data
|
||||||
@Document(indexName = "test-index-synonym", type = "synonym-type")
|
@Document(indexName = "test-index-synonym", type = "synonym-type")
|
||||||
@Setting(settingPath = "/synonyms/settings.json")
|
@Setting(settingPath = "/synonyms/settings.json")
|
||||||
@Mapping(mappingPath = "/synonyms/mappings.json")
|
@Mapping(mappingPath = "/synonyms/mappings.json")
|
||||||
@ -88,22 +91,6 @@ public class SynonymRepositoryTests {
|
|||||||
|
|
||||||
@Id private String id;
|
@Id private String id;
|
||||||
private String text;
|
private String text;
|
||||||
|
|
||||||
public String getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(String id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getText() {
|
|
||||||
return text;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setText(String text) {
|
|
||||||
this.text = text;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -20,13 +20,11 @@ import static org.elasticsearch.index.query.QueryBuilders.*;
|
|||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.Setter;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
@ -34,6 +32,7 @@ import java.util.UUID;
|
|||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.annotation.Id;
|
import org.springframework.data.annotation.Id;
|
||||||
import org.springframework.data.annotation.Version;
|
import org.springframework.data.annotation.Version;
|
||||||
@ -246,8 +245,8 @@ public class UUIDElasticsearchRepositoryTests {
|
|||||||
repository.save(sampleEntityUUIDKeyed2);
|
repository.save(sampleEntityUUIDKeyed2);
|
||||||
|
|
||||||
// when
|
// when
|
||||||
final List<UUID> docIds = Arrays.asList(documentId, documentId2);
|
List<UUID> docIds = Arrays.asList(documentId, documentId2);
|
||||||
LinkedList<SampleEntityUUIDKeyed> sampleEntities = (LinkedList<SampleEntityUUIDKeyed>) repository
|
List<SampleEntityUUIDKeyed> sampleEntities = (List<SampleEntityUUIDKeyed>) repository
|
||||||
.findAllById(docIds);
|
.findAllById(docIds);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
@ -582,17 +581,10 @@ public class UUIDElasticsearchRepositoryTests {
|
|||||||
return sampleEntities;
|
return sampleEntities;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Gad Akuka
|
|
||||||
* @author Rizwan Idrees
|
|
||||||
* @author Mohsin Husen
|
|
||||||
*/
|
|
||||||
|
|
||||||
@Setter
|
|
||||||
@Getter
|
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Builder
|
@Builder
|
||||||
|
@Data
|
||||||
@Document(indexName = "test-index-uuid-keyed", type = "test-type-uuid-keyed", shards = 1, replicas = 0,
|
@Document(indexName = "test-index-uuid-keyed", type = "test-type-uuid-keyed", shards = 1, replicas = 0,
|
||||||
refreshInterval = "-1")
|
refreshInterval = "-1")
|
||||||
static class SampleEntityUUIDKeyed {
|
static class SampleEntityUUIDKeyed {
|
||||||
@ -608,49 +600,6 @@ public class UUIDElasticsearchRepositoryTests {
|
|||||||
private GeoPoint location;
|
private GeoPoint location;
|
||||||
|
|
||||||
@Version private Long version;
|
@Version private Long version;
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals(Object o) {
|
|
||||||
if (this == o)
|
|
||||||
return true;
|
|
||||||
if (o == null || getClass() != o.getClass())
|
|
||||||
return false;
|
|
||||||
|
|
||||||
SampleEntityUUIDKeyed that = (SampleEntityUUIDKeyed) o;
|
|
||||||
|
|
||||||
if (available != that.available)
|
|
||||||
return false;
|
|
||||||
if (rate != that.rate)
|
|
||||||
return false;
|
|
||||||
if (highlightedMessage != null ? !highlightedMessage.equals(that.highlightedMessage)
|
|
||||||
: that.highlightedMessage != null)
|
|
||||||
return false;
|
|
||||||
if (id != null ? !id.equals(that.id) : that.id != null)
|
|
||||||
return false;
|
|
||||||
if (location != null ? !location.equals(that.location) : that.location != null)
|
|
||||||
return false;
|
|
||||||
if (message != null ? !message.equals(that.message) : that.message != null)
|
|
||||||
return false;
|
|
||||||
if (type != null ? !type.equals(that.type) : that.type != null)
|
|
||||||
return false;
|
|
||||||
if (version != null ? !version.equals(that.version) : that.version != null)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode() {
|
|
||||||
int result = id != null ? id.hashCode() : 0;
|
|
||||||
result = 31 * result + (type != null ? type.hashCode() : 0);
|
|
||||||
result = 31 * result + (message != null ? message.hashCode() : 0);
|
|
||||||
result = 31 * result + rate;
|
|
||||||
result = 31 * result + (available ? 1 : 0);
|
|
||||||
result = 31 * result + (highlightedMessage != null ? highlightedMessage.hashCode() : 0);
|
|
||||||
result = 31 * result + (location != null ? location.hashCode() : 0);
|
|
||||||
result = 31 * result + (version != null ? version.hashCode() : 0);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -19,30 +19,22 @@ import static org.springframework.data.elasticsearch.annotations.FieldType.*;
|
|||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.Setter;
|
|
||||||
import lombok.ToString;
|
|
||||||
|
|
||||||
import java.lang.Double;
|
|
||||||
import java.lang.Long;
|
|
||||||
|
|
||||||
import org.assertj.core.api.Assertions;
|
import org.assertj.core.api.Assertions;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.context.ApplicationContext;
|
import org.springframework.context.ApplicationContext;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.data.annotation.Id;
|
import org.springframework.data.annotation.Id;
|
||||||
import org.springframework.data.annotation.Version;
|
|
||||||
import org.springframework.data.elasticsearch.TestUtils;
|
import org.springframework.data.elasticsearch.TestUtils;
|
||||||
import org.springframework.data.elasticsearch.annotations.Document;
|
import org.springframework.data.elasticsearch.annotations.Document;
|
||||||
import org.springframework.data.elasticsearch.annotations.Field;
|
import org.springframework.data.elasticsearch.annotations.Field;
|
||||||
import org.springframework.data.elasticsearch.annotations.Score;
|
|
||||||
import org.springframework.data.elasticsearch.annotations.ScriptedField;
|
|
||||||
import org.springframework.data.elasticsearch.core.ReactiveElasticsearchTemplate;
|
import org.springframework.data.elasticsearch.core.ReactiveElasticsearchTemplate;
|
||||||
import org.springframework.data.elasticsearch.core.geo.GeoPoint;
|
|
||||||
import org.springframework.data.elasticsearch.repository.ReactiveElasticsearchRepository;
|
import org.springframework.data.elasticsearch.repository.ReactiveElasticsearchRepository;
|
||||||
import org.springframework.test.context.ContextConfiguration;
|
import org.springframework.test.context.ContextConfiguration;
|
||||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||||
@ -79,30 +71,16 @@ public class ReactiveElasticsearchRepositoriesRegistrarTests {
|
|||||||
|
|
||||||
interface ReactiveSampleEntityRepository extends ReactiveElasticsearchRepository<SampleEntity, String> {}
|
interface ReactiveSampleEntityRepository extends ReactiveElasticsearchRepository<SampleEntity, String> {}
|
||||||
|
|
||||||
/**
|
@Data
|
||||||
* @author Rizwan Idrees
|
|
||||||
* @author Mohsin Husen
|
|
||||||
* @author Chris White
|
|
||||||
* @author Sascha Woo
|
|
||||||
*/
|
|
||||||
@Setter
|
|
||||||
@Getter
|
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@ToString
|
|
||||||
@Builder
|
@Builder
|
||||||
@Document(indexName = "test-index-sample-reactive-repositories-registrar", type = "test-type", shards = 1, replicas = 0, refreshInterval = "-1")
|
@Document(indexName = "test-index-sample-reactive-repositories-registrar", type = "test-type", shards = 1,
|
||||||
|
replicas = 0, refreshInterval = "-1")
|
||||||
static class SampleEntity {
|
static class SampleEntity {
|
||||||
|
|
||||||
@Id private String id;
|
@Id private String id;
|
||||||
@Field(type = Text, store = true, fielddata = true) private String type;
|
@Field(type = Text, store = true, fielddata = true) private String type;
|
||||||
@Field(type = Text, store = true, fielddata = true) private String message;
|
@Field(type = Text, store = true, fielddata = true) private String message;
|
||||||
private int rate;
|
|
||||||
@ScriptedField private Double scriptedRate;
|
|
||||||
private boolean available;
|
|
||||||
private String highlightedMessage;
|
|
||||||
private GeoPoint location;
|
|
||||||
@Version private Long version;
|
|
||||||
@Score private float score;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,22 +20,15 @@ import static org.springframework.data.elasticsearch.annotations.FieldType.*;
|
|||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.Setter;
|
|
||||||
import lombok.ToString;
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.springframework.data.annotation.Id;
|
|
||||||
import org.springframework.data.annotation.Version;
|
|
||||||
import org.springframework.data.elasticsearch.annotations.Document;
|
|
||||||
import org.springframework.data.elasticsearch.annotations.Field;
|
|
||||||
import org.springframework.data.elasticsearch.annotations.Score;
|
|
||||||
import org.springframework.data.elasticsearch.annotations.ScriptedField;
|
|
||||||
import org.springframework.data.elasticsearch.core.geo.GeoPoint;
|
|
||||||
import reactor.core.publisher.Flux;
|
import reactor.core.publisher.Flux;
|
||||||
import reactor.core.publisher.Mono;
|
import reactor.core.publisher.Mono;
|
||||||
import reactor.test.StepVerifier;
|
import reactor.test.StepVerifier;
|
||||||
|
|
||||||
|
import java.lang.Boolean;
|
||||||
|
import java.lang.Long;
|
||||||
|
import java.lang.Object;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -47,16 +40,23 @@ import org.elasticsearch.action.support.WriteRequest.RefreshPolicy;
|
|||||||
import org.elasticsearch.client.RequestOptions;
|
import org.elasticsearch.client.RequestOptions;
|
||||||
import org.elasticsearch.client.RestHighLevelClient;
|
import org.elasticsearch.client.RestHighLevelClient;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.reactivestreams.Publisher;
|
import org.reactivestreams.Publisher;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.data.annotation.Id;
|
||||||
|
import org.springframework.data.annotation.Version;
|
||||||
import org.springframework.data.domain.PageRequest;
|
import org.springframework.data.domain.PageRequest;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.data.domain.Sort;
|
import org.springframework.data.domain.Sort;
|
||||||
import org.springframework.data.domain.Sort.Order;
|
import org.springframework.data.domain.Sort.Order;
|
||||||
import org.springframework.data.elasticsearch.TestUtils;
|
import org.springframework.data.elasticsearch.TestUtils;
|
||||||
|
import org.springframework.data.elasticsearch.annotations.Document;
|
||||||
|
import org.springframework.data.elasticsearch.annotations.Field;
|
||||||
import org.springframework.data.elasticsearch.annotations.Query;
|
import org.springframework.data.elasticsearch.annotations.Query;
|
||||||
|
import org.springframework.data.elasticsearch.annotations.Score;
|
||||||
import org.springframework.data.elasticsearch.client.reactive.ReactiveElasticsearchClient;
|
import org.springframework.data.elasticsearch.client.reactive.ReactiveElasticsearchClient;
|
||||||
import org.springframework.data.elasticsearch.config.AbstractReactiveElasticsearchConfiguration;
|
import org.springframework.data.elasticsearch.config.AbstractReactiveElasticsearchConfiguration;
|
||||||
import org.springframework.data.elasticsearch.repository.config.EnableReactiveElasticsearchRepositories;
|
import org.springframework.data.elasticsearch.repository.config.EnableReactiveElasticsearchRepositories;
|
||||||
@ -509,31 +509,20 @@ public class SimpleReactiveElasticsearchRepositoryTests {
|
|||||||
* @author Chris White
|
* @author Chris White
|
||||||
* @author Sascha Woo
|
* @author Sascha Woo
|
||||||
*/
|
*/
|
||||||
@Setter
|
@Data
|
||||||
@Getter
|
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@ToString
|
|
||||||
@Builder
|
@Builder
|
||||||
@Document(indexName = INDEX, type = TYPE, shards = 1, replicas = 0, refreshInterval = "-1")
|
@Document(indexName = INDEX, type = TYPE, shards = 1, replicas = 0, refreshInterval = "-1")
|
||||||
static class SampleEntity {
|
static class SampleEntity {
|
||||||
|
|
||||||
@Id
|
@Id private String id;
|
||||||
private String id;
|
@Field(type = Text, store = true, fielddata = true) private String type;
|
||||||
@Field(type = Text, store = true, fielddata = true)
|
@Field(type = Text, store = true, fielddata = true) private String message;
|
||||||
private String type;
|
|
||||||
@Field(type = Text, store = true, fielddata = true)
|
|
||||||
private String message;
|
|
||||||
private int rate;
|
private int rate;
|
||||||
@ScriptedField
|
|
||||||
private Double scriptedRate;
|
|
||||||
private boolean available;
|
private boolean available;
|
||||||
private String highlightedMessage;
|
@Version private Long version;
|
||||||
private GeoPoint location;
|
@Score private float score;
|
||||||
@Version
|
|
||||||
private Long version;
|
|
||||||
@Score
|
|
||||||
private float score;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,14 +22,10 @@ import static org.springframework.data.elasticsearch.annotations.FieldType.*;
|
|||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
import lombok.Getter;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.Setter;
|
|
||||||
import lombok.ToString;
|
|
||||||
|
|
||||||
import java.lang.Double;
|
|
||||||
import java.lang.Long;
|
import java.lang.Long;
|
||||||
import java.lang.Object;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -39,6 +35,7 @@ import org.elasticsearch.action.ActionRequestValidationException;
|
|||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.annotation.Id;
|
import org.springframework.data.annotation.Id;
|
||||||
import org.springframework.data.annotation.Version;
|
import org.springframework.data.annotation.Version;
|
||||||
@ -48,10 +45,7 @@ import org.springframework.data.domain.Sort;
|
|||||||
import org.springframework.data.domain.Sort.Order;
|
import org.springframework.data.domain.Sort.Order;
|
||||||
import org.springframework.data.elasticsearch.annotations.Document;
|
import org.springframework.data.elasticsearch.annotations.Document;
|
||||||
import org.springframework.data.elasticsearch.annotations.Field;
|
import org.springframework.data.elasticsearch.annotations.Field;
|
||||||
import org.springframework.data.elasticsearch.annotations.Score;
|
|
||||||
import org.springframework.data.elasticsearch.annotations.ScriptedField;
|
|
||||||
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
|
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
|
||||||
import org.springframework.data.elasticsearch.core.geo.GeoPoint;
|
|
||||||
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
|
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
|
||||||
import org.springframework.data.elasticsearch.core.query.SearchQuery;
|
import org.springframework.data.elasticsearch.core.query.SearchQuery;
|
||||||
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
|
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
|
||||||
@ -77,7 +71,6 @@ public class SimpleElasticsearchRepositoryTests {
|
|||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void before() {
|
public void before() {
|
||||||
|
|
||||||
IndexInitializer.init(elasticsearchTemplate, SampleEntity.class);
|
IndexInitializer.init(elasticsearchTemplate, SampleEntity.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -640,68 +633,20 @@ public class SimpleElasticsearchRepositoryTests {
|
|||||||
* @author Chris White
|
* @author Chris White
|
||||||
* @author Sascha Woo
|
* @author Sascha Woo
|
||||||
*/
|
*/
|
||||||
@Setter
|
@Data
|
||||||
@Getter
|
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@ToString
|
|
||||||
@Builder
|
@Builder
|
||||||
@Document(indexName = "test-index-sample-simple-repository", type = "test-type", shards = 1, replicas = 0, refreshInterval = "-1")
|
@Document(indexName = "test-index-sample-simple-repository", type = "test-type", shards = 1, replicas = 0,
|
||||||
|
refreshInterval = "-1")
|
||||||
static class SampleEntity {
|
static class SampleEntity {
|
||||||
|
|
||||||
@Id private String id;
|
@Id private String id;
|
||||||
@Field(type = Text, store = true, fielddata = true) private String type;
|
@Field(type = Text, store = true, fielddata = true) private String type;
|
||||||
@Field(type = Text, store = true, fielddata = true) private String message;
|
@Field(type = Text, store = true, fielddata = true) private String message;
|
||||||
private int rate;
|
private int rate;
|
||||||
@ScriptedField private Double scriptedRate;
|
|
||||||
private boolean available;
|
private boolean available;
|
||||||
private String highlightedMessage;
|
|
||||||
private GeoPoint location;
|
|
||||||
@Version private Long version;
|
@Version private Long version;
|
||||||
@Score private float score;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals(Object o) {
|
|
||||||
if (this == o)
|
|
||||||
return true;
|
|
||||||
if (o == null || getClass() != o.getClass())
|
|
||||||
return false;
|
|
||||||
|
|
||||||
SampleEntity that = (SampleEntity) o;
|
|
||||||
|
|
||||||
if (available != that.available)
|
|
||||||
return false;
|
|
||||||
if (rate != that.rate)
|
|
||||||
return false;
|
|
||||||
if (highlightedMessage != null ? !highlightedMessage.equals(that.highlightedMessage)
|
|
||||||
: that.highlightedMessage != null)
|
|
||||||
return false;
|
|
||||||
if (id != null ? !id.equals(that.id) : that.id != null)
|
|
||||||
return false;
|
|
||||||
if (location != null ? !location.equals(that.location) : that.location != null)
|
|
||||||
return false;
|
|
||||||
if (message != null ? !message.equals(that.message) : that.message != null)
|
|
||||||
return false;
|
|
||||||
if (type != null ? !type.equals(that.type) : that.type != null)
|
|
||||||
return false;
|
|
||||||
if (version != null ? !version.equals(that.version) : that.version != null)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode() {
|
|
||||||
int result = id != null ? id.hashCode() : 0;
|
|
||||||
result = 31 * result + (type != null ? type.hashCode() : 0);
|
|
||||||
result = 31 * result + (message != null ? message.hashCode() : 0);
|
|
||||||
result = 31 * result + rate;
|
|
||||||
result = 31 * result + (available ? 1 : 0);
|
|
||||||
result = 31 * result + (highlightedMessage != null ? highlightedMessage.hashCode() : 0);
|
|
||||||
result = 31 * result + (location != null ? location.hashCode() : 0);
|
|
||||||
result = 31 * result + (version != null ? version.hashCode() : 0);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -6,13 +6,22 @@ package org.springframework.data.elasticsearch.utils;
|
|||||||
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
|
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Utility to initialize indexes.
|
||||||
|
*
|
||||||
* @author Peter-Josef Meisch
|
* @author Peter-Josef Meisch
|
||||||
*/
|
*/
|
||||||
final public class IndexInitializer {
|
public class IndexInitializer {
|
||||||
|
|
||||||
private IndexInitializer() {}
|
private IndexInitializer() {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize a fresh index with mappings for {@link Class}. Drops the index if it exists before creation.
|
||||||
|
*
|
||||||
|
* @param operations
|
||||||
|
* @param clazz
|
||||||
|
*/
|
||||||
public static void init(ElasticsearchOperations operations, Class<?> clazz) {
|
public static void init(ElasticsearchOperations operations, Class<?> clazz) {
|
||||||
|
|
||||||
operations.deleteIndex(clazz);
|
operations.deleteIndex(clazz);
|
||||||
operations.createIndex(clazz);
|
operations.createIndex(clazz);
|
||||||
operations.putMapping(clazz);
|
operations.putMapping(clazz);
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
<constructor-arg name="client" ref="client"/>
|
<constructor-arg name="client" ref="client"/>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
|
|
||||||
<elasticsearch:repositories
|
<elasticsearch:repositories
|
||||||
base-package="org.springframework.data.elasticsearch.repositories.doubleid"
|
base-package="org.springframework.data.elasticsearch.repositories.doubleid"
|
||||||
consider-nested-repositories="true"/>
|
consider-nested-repositories="true"/>
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
<constructor-arg name="client" ref="client"/>
|
<constructor-arg name="client" ref="client"/>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
|
|
||||||
<elasticsearch:repositories
|
<elasticsearch:repositories
|
||||||
base-package="org.springframework.data.elasticsearch.repositories.existing.index"
|
base-package="org.springframework.data.elasticsearch.repositories.existing.index"
|
||||||
consider-nested-repositories="true" />
|
consider-nested-repositories="true" />
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
<constructor-arg name="client" ref="client"/>
|
<constructor-arg name="client" ref="client"/>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
|
|
||||||
<elasticsearch:repositories
|
<elasticsearch:repositories
|
||||||
base-package="org.springframework.data.elasticsearch.immutable"
|
base-package="org.springframework.data.elasticsearch.immutable"
|
||||||
consider-nested-repositories="true"/>
|
consider-nested-repositories="true"/>
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
<constructor-arg name="client" ref="client"/>
|
<constructor-arg name="client" ref="client"/>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
|
|
||||||
<elasticsearch:repositories
|
<elasticsearch:repositories
|
||||||
base-package="org.springframework.data.elasticsearch.repositories.integer"
|
base-package="org.springframework.data.elasticsearch.repositories.integer"
|
||||||
consider-nested-repositories="true" />
|
consider-nested-repositories="true" />
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
<constructor-arg name="client" ref="client"/>
|
<constructor-arg name="client" ref="client"/>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
|
|
||||||
<elasticsearch:repositories
|
<elasticsearch:repositories
|
||||||
base-package="org.springframework.data.elasticsearch.repository.query.keywords"
|
base-package="org.springframework.data.elasticsearch.repository.query.keywords"
|
||||||
consider-nested-repositories="true"/>
|
consider-nested-repositories="true"/>
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
<constructor-arg name="client" ref="client"/>
|
<constructor-arg name="client" ref="client"/>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
|
|
||||||
<elasticsearch:repositories
|
<elasticsearch:repositories
|
||||||
base-package="org.springframework.data.elasticsearch.repository.support.simple"
|
base-package="org.springframework.data.elasticsearch.repository.support.simple"
|
||||||
consider-nested-repositories="true"/>
|
consider-nested-repositories="true"/>
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
<constructor-arg name="client" ref="client"/>
|
<constructor-arg name="client" ref="client"/>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
|
|
||||||
<elasticsearch:repositories
|
<elasticsearch:repositories
|
||||||
base-package="org.springframework.data.elasticsearch.repositories.spel"
|
base-package="org.springframework.data.elasticsearch.repositories.spel"
|
||||||
consider-nested-repositories="true" />
|
consider-nested-repositories="true" />
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
<constructor-arg name="client" ref="client"/>
|
<constructor-arg name="client" ref="client"/>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
|
|
||||||
<elasticsearch:repositories
|
<elasticsearch:repositories
|
||||||
base-package="org.springframework.data.elasticsearch.repositories.uuidkeyed"
|
base-package="org.springframework.data.elasticsearch.repositories.uuidkeyed"
|
||||||
consider-nested-repositories="true"/>
|
consider-nested-repositories="true"/>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user