From 08cdcc5c4cb3b3db3e2151c197c5ec376fd7b301 Mon Sep 17 00:00:00 2001 From: Artur Konczak Date: Wed, 12 Mar 2014 16:02:50 +0000 Subject: [PATCH] DATAES-14 - added option to choose different search types per query --- .../data/elasticsearch/core/ElasticsearchTemplate.java | 2 +- .../data/elasticsearch/core/query/AbstractQuery.java | 10 ++++++++++ .../data/elasticsearch/core/query/Query.java | 8 ++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java index b0e978ee0..e41b906d9 100755 --- a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java @@ -555,7 +555,7 @@ public class ElasticsearchTemplate implements ElasticsearchOperations { int startRecord = 0; SearchRequestBuilder searchRequestBuilder = client.prepareSearch(toArray(query.getIndices())) - .setSearchType(DFS_QUERY_THEN_FETCH).setTypes(toArray(query.getTypes())); + .setSearchType(query.getSearchType()).setTypes(toArray(query.getTypes())); if (query.getPageable() != null) { startRecord = query.getPageable().getPageNumber() * query.getPageable().getPageSize(); diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/AbstractQuery.java b/src/main/java/org/springframework/data/elasticsearch/core/query/AbstractQuery.java index a4fd83c08..16781756b 100755 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/AbstractQuery.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/AbstractQuery.java @@ -21,6 +21,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; +import org.elasticsearch.action.search.SearchType; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.util.Assert; @@ -41,6 +42,7 @@ abstract class AbstractQuery implements Query { protected float minScore; protected Collection ids; protected String route; + protected SearchType searchType = SearchType.DFS_QUERY_THEN_FETCH; @Override public Sort getSort() { @@ -127,4 +129,12 @@ abstract class AbstractQuery implements Query { public void setRoute(String route) { this.route = route; } + + public void setSearchType(SearchType searchType) { + this.searchType = searchType; + } + + public SearchType getSearchType() { + return searchType; + } } diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/Query.java b/src/main/java/org/springframework/data/elasticsearch/core/query/Query.java index dc22640a4..9e34e240f 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/Query.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/Query.java @@ -18,6 +18,7 @@ package org.springframework.data.elasticsearch.core.query; import java.util.Collection; import java.util.List; +import org.elasticsearch.action.search.SearchType; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; @@ -130,4 +131,11 @@ public interface Query { * @return */ String getRoute(); + + + /** + * Type of search + * @return + */ + SearchType getSearchType(); }