From 2ebd81015d0dbf008bc5d0c5e16486dbd3077eed Mon Sep 17 00:00:00 2001 From: xhaggi Date: Fri, 22 Jun 2018 17:12:10 +0200 Subject: [PATCH] DATAES-317 - Introduce query logging in ElasticsearchTemplate. --- .../core/ElasticsearchTemplate.java | 35 +++++++++++-------- 1 file changed, 20 insertions(+), 15 deletions(-) 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 ce0a33d66..4f89dec24 100755 --- a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java @@ -19,7 +19,7 @@ import static org.elasticsearch.index.VersionType.*; import static org.elasticsearch.index.query.QueryBuilders.*; import static org.springframework.data.elasticsearch.core.MappingBuilder.*; -import static org.springframework.util.CollectionUtils.isEmpty; +import static org.springframework.util.CollectionUtils.*; import java.io.BufferedReader; import java.io.IOException; @@ -52,6 +52,7 @@ import org.elasticsearch.action.index.IndexRequestBuilder; import org.elasticsearch.action.search.SearchRequestBuilder; import org.elasticsearch.action.search.SearchResponse; +import org.elasticsearch.action.search.SearchScrollRequestBuilder; import org.elasticsearch.action.update.UpdateRequestBuilder; import org.elasticsearch.action.update.UpdateResponse; import org.elasticsearch.client.Client; @@ -136,7 +137,8 @@ */ public class ElasticsearchTemplate implements ElasticsearchOperations, ApplicationContextAware { - private static final Logger logger = LoggerFactory.getLogger(ElasticsearchTemplate.class); + private static final Logger QUERY_LOGGER = LoggerFactory.getLogger("org.springframework.data.elasticsearch.core.QUERY"); + private static final Logger LOGGER = LoggerFactory.getLogger(ElasticsearchTemplate.class); private static final String FIELD_SCORE = "_score"; private Client client; @@ -208,7 +210,7 @@ public boolean putMapping(Class clazz) { return putMapping(clazz, mappings); } } else { - logger.info("mappingPath in @Mapping has to be defined. Building mappings using @Field"); + LOGGER.info("mappingPath in @Mapping has to be defined. Building mappings using @Field"); } } ElasticsearchPersistentEntity persistentEntity = getPersistentEntityFor(clazz); @@ -339,7 +341,7 @@ public List queryForIds(SearchQuery query) { if (query.getFilter() != null) { request.setPostFilter(query.getFilter()); } - SearchResponse response = getSearchResponse(request.execute()); + SearchResponse response = getSearchResponse(request); return extractIds(response); } @@ -362,11 +364,8 @@ public Page queryForPage(CriteriaQuery criteriaQuery, Class clazz) { if (elasticsearchFilter != null) searchRequestBuilder.setPostFilter(elasticsearchFilter); - if (logger.isDebugEnabled()) { - logger.debug("doSearch query:\n" + searchRequestBuilder.toString()); - } - SearchResponse response = getSearchResponse(searchRequestBuilder.execute()); + SearchResponse response = getSearchResponse(searchRequestBuilder); return resultsMapper.mapResults(response, clazz, criteriaQuery.getPageable()); } @@ -377,7 +376,7 @@ public Page queryForPage(StringQuery query, Class clazz) { @Override public Page queryForPage(StringQuery query, Class clazz, SearchResultMapper mapper) { - SearchResponse response = getSearchResponse(prepareSearch(query, clazz).setQuery(wrapperQuery(query.getSource())).execute()); + SearchResponse response = getSearchResponse(prepareSearch(query, clazz).setQuery(wrapperQuery(query.getSource()))); return mapper.mapResults(response, clazz, query.getPageable()); } @@ -793,7 +792,7 @@ private SearchResponse doScroll(SearchRequestBuilder requestBuilder, CriteriaQue requestBuilder.setPostFilter(elasticsearchFilter); } - return getSearchResponse(requestBuilder.execute()); + return getSearchResponse(requestBuilder); } private SearchResponse doScroll(SearchRequestBuilder requestBuilder, SearchQuery searchQuery) { @@ -805,7 +804,7 @@ private SearchResponse doScroll(SearchRequestBuilder requestBuilder, SearchQuery requestBuilder.setPostFilter(searchQuery.getFilter()); } - return getSearchResponse(requestBuilder.setQuery(searchQuery.getQuery()).execute()); + return getSearchResponse(requestBuilder.setQuery(searchQuery.getQuery())); } public Page startScroll(long scrollTimeInMillis, SearchQuery searchQuery, Class clazz) { @@ -931,7 +930,13 @@ private SearchResponse doSearch(SearchRequestBuilder searchRequest, SearchQuery searchRequest.addAggregation(aggregatedFacet.getFacet()); } } - return getSearchResponse(searchRequest.setQuery(searchQuery.getQuery()).execute()); + return getSearchResponse(searchRequest.setQuery(searchQuery.getQuery())); + } + + private SearchResponse getSearchResponse(SearchRequestBuilder requestBuilder) { + if (QUERY_LOGGER.isDebugEnabled()) + QUERY_LOGGER.debug(requestBuilder.toString()); + return getSearchResponse(requestBuilder.execute()); } private SearchResponse getSearchResponse(ActionFuture response) { @@ -951,7 +956,7 @@ private boolean createIndexWithSettings(Class clazz) { return createIndex(getPersistentEntityFor(clazz).getIndexName(), settings); } } else { - logger.info("settingPath in @Setting has to be defined. Using default instead."); + LOGGER.info("settingPath in @Setting has to be defined. Using default instead."); } } return createIndex(getPersistentEntityFor(clazz).getIndexName(), getDefaultSettings(getPersistentEntityFor(clazz))); @@ -1254,14 +1259,14 @@ public static String readFileFromClasspath(String url) { stringBuilder.append(line).append(lineSeparator); } } catch (Exception e) { - logger.debug(String.format("Failed to load file from url: %s: %s", url, e.getMessage())); + 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())); + LOGGER.debug(String.format("Unable to close buffered reader.. %s", e.getMessage())); } }