DATAES-317 - Introduce query logging in ElasticsearchTemplate.

Original pull request: #180.
This commit is contained in:
xhaggi 2018-06-22 17:12:10 +02:00 committed by Oliver Gierke
parent e58c43f391
commit 143a359eca
No known key found for this signature in database
GPG Key ID: 6E42B5787543F690

View File

@ -19,7 +19,7 @@ import static org.elasticsearch.client.Requests.*;
import static org.elasticsearch.index.VersionType.*; import static org.elasticsearch.index.VersionType.*;
import static org.elasticsearch.index.query.QueryBuilders.*; import static org.elasticsearch.index.query.QueryBuilders.*;
import static org.springframework.data.elasticsearch.core.MappingBuilder.*; 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.BufferedReader;
import java.io.IOException; import java.io.IOException;
@ -52,6 +52,7 @@ import org.elasticsearch.action.get.MultiGetResponse;
import org.elasticsearch.action.index.IndexRequestBuilder; import org.elasticsearch.action.index.IndexRequestBuilder;
import org.elasticsearch.action.search.SearchRequestBuilder; import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchScrollRequestBuilder;
import org.elasticsearch.action.update.UpdateRequestBuilder; import org.elasticsearch.action.update.UpdateRequestBuilder;
import org.elasticsearch.action.update.UpdateResponse; import org.elasticsearch.action.update.UpdateResponse;
import org.elasticsearch.client.Client; import org.elasticsearch.client.Client;
@ -136,7 +137,8 @@ import org.springframework.util.StringUtils;
*/ */
public class ElasticsearchTemplate implements ElasticsearchOperations, ApplicationContextAware { 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 static final String FIELD_SCORE = "_score";
private Client client; private Client client;
@ -208,7 +210,7 @@ public class ElasticsearchTemplate implements ElasticsearchOperations, Applicati
return putMapping(clazz, mappings); return putMapping(clazz, mappings);
} }
} else { } 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<T> persistentEntity = getPersistentEntityFor(clazz); ElasticsearchPersistentEntity<T> persistentEntity = getPersistentEntityFor(clazz);
@ -339,7 +341,7 @@ public class ElasticsearchTemplate implements ElasticsearchOperations, Applicati
if (query.getFilter() != null) { if (query.getFilter() != null) {
request.setPostFilter(query.getFilter()); request.setPostFilter(query.getFilter());
} }
SearchResponse response = getSearchResponse(request.execute()); SearchResponse response = getSearchResponse(request);
return extractIds(response); return extractIds(response);
} }
@ -362,11 +364,8 @@ public class ElasticsearchTemplate implements ElasticsearchOperations, Applicati
if (elasticsearchFilter != null) if (elasticsearchFilter != null)
searchRequestBuilder.setPostFilter(elasticsearchFilter); 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()); return resultsMapper.mapResults(response, clazz, criteriaQuery.getPageable());
} }
@ -377,7 +376,7 @@ public class ElasticsearchTemplate implements ElasticsearchOperations, Applicati
@Override @Override
public <T> Page<T> queryForPage(StringQuery query, Class<T> clazz, SearchResultMapper mapper) { public <T> Page<T> queryForPage(StringQuery query, Class<T> 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()); return mapper.mapResults(response, clazz, query.getPageable());
} }
@ -793,7 +792,7 @@ public class ElasticsearchTemplate implements ElasticsearchOperations, Applicati
requestBuilder.setPostFilter(elasticsearchFilter); requestBuilder.setPostFilter(elasticsearchFilter);
} }
return getSearchResponse(requestBuilder.execute()); return getSearchResponse(requestBuilder);
} }
private SearchResponse doScroll(SearchRequestBuilder requestBuilder, SearchQuery searchQuery) { private SearchResponse doScroll(SearchRequestBuilder requestBuilder, SearchQuery searchQuery) {
@ -805,7 +804,7 @@ public class ElasticsearchTemplate implements ElasticsearchOperations, Applicati
requestBuilder.setPostFilter(searchQuery.getFilter()); requestBuilder.setPostFilter(searchQuery.getFilter());
} }
return getSearchResponse(requestBuilder.setQuery(searchQuery.getQuery()).execute()); return getSearchResponse(requestBuilder.setQuery(searchQuery.getQuery()));
} }
public <T> Page<T> startScroll(long scrollTimeInMillis, SearchQuery searchQuery, Class<T> clazz) { public <T> Page<T> startScroll(long scrollTimeInMillis, SearchQuery searchQuery, Class<T> clazz) {
@ -931,7 +930,16 @@ public class ElasticsearchTemplate implements ElasticsearchOperations, Applicati
searchRequest.addAggregation(aggregatedFacet.getFacet()); 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<SearchResponse> response) { private SearchResponse getSearchResponse(ActionFuture<SearchResponse> response) {
@ -951,7 +959,7 @@ public class ElasticsearchTemplate implements ElasticsearchOperations, Applicati
return createIndex(getPersistentEntityFor(clazz).getIndexName(), settings); return createIndex(getPersistentEntityFor(clazz).getIndexName(), settings);
} }
} else { } 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))); return createIndex(getPersistentEntityFor(clazz).getIndexName(), getDefaultSettings(getPersistentEntityFor(clazz)));
@ -1254,14 +1262,14 @@ public class ElasticsearchTemplate implements ElasticsearchOperations, Applicati
stringBuilder.append(line).append(lineSeparator); stringBuilder.append(line).append(lineSeparator);
} }
} catch (Exception e) { } 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; return null;
} finally { } finally {
if (bufferedReader != null) if (bufferedReader != null)
try { try {
bufferedReader.close(); bufferedReader.close();
} catch (IOException e) { } 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()));
} }
} }