Skip to content

Commit f28b1a1

Browse files
committed
[DATAES-317] introduce query logging in ElasticsearchTemplate
1 parent 21b937f commit f28b1a1

File tree

1 file changed

+110
-18
lines changed

1 file changed

+110
-18
lines changed

src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchTemplate.java

Lines changed: 110 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2013-2016 the original author or authors.
2+
* Copyright 2013-2017 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -32,6 +32,7 @@
3232
import java.util.*;
3333

3434
import org.elasticsearch.action.ListenableActionFuture;
35+
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequestBuilder;
3536
import org.elasticsearch.action.admin.indices.alias.get.GetAliasesRequest;
3637
import org.elasticsearch.action.admin.indices.create.CreateIndexRequestBuilder;
3738
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
@@ -42,6 +43,8 @@
4243
import org.elasticsearch.action.bulk.BulkRequestBuilder;
4344
import org.elasticsearch.action.bulk.BulkResponse;
4445
import org.elasticsearch.action.count.CountRequestBuilder;
46+
import org.elasticsearch.action.delete.DeleteRequestBuilder;
47+
import org.elasticsearch.action.get.GetRequestBuilder;
4548
import org.elasticsearch.action.get.GetResponse;
4649
import org.elasticsearch.action.get.MultiGetRequest;
4750
import org.elasticsearch.action.get.MultiGetRequestBuilder;
@@ -104,10 +107,12 @@
104107
* @author Young Gu
105108
* @author Oliver Gierke
106109
* @author Mark Janssen
110+
* @author Sascha Woo
107111
*/
108112

109113
public class ElasticsearchTemplate implements ElasticsearchOperations, ApplicationContextAware {
110114

115+
private static final Logger QUERY_LOGGER = LoggerFactory.getLogger("org.springframework.data.elasticsearch.core.QUERY");
111116
private static final Logger logger = LoggerFactory.getLogger(ElasticsearchTemplate.class);
112117
private Client client;
113118
private ElasticsearchConverter elasticsearchConverter;
@@ -209,6 +214,10 @@ public boolean putMapping(String indexName, String type, Object mapping) {
209214
} else if (mapping instanceof XContentBuilder) {
210215
requestBuilder.setSource((XContentBuilder) mapping);
211216
}
217+
218+
if (QUERY_LOGGER.isDebugEnabled())
219+
QUERY_LOGGER.debug("Query:\n" + requestBuilder.toString());
220+
212221
return requestBuilder.execute().actionGet().isAcknowledged();
213222
}
214223

@@ -244,10 +253,13 @@ public <T> T queryForObject(GetQuery query, Class<T> clazz) {
244253
@Override
245254
public <T> T queryForObject(GetQuery query, Class<T> clazz, GetResultMapper mapper) {
246255
ElasticsearchPersistentEntity<T> persistentEntity = getPersistentEntityFor(clazz);
247-
GetResponse response = client
248-
.prepareGet(persistentEntity.getIndexName(), persistentEntity.getIndexType(), query.getId()).execute()
249-
.actionGet();
256+
GetRequestBuilder requestBuilder = client
257+
.prepareGet(persistentEntity.getIndexName(), persistentEntity.getIndexType(), query.getId());
258+
259+
if (QUERY_LOGGER.isDebugEnabled())
260+
QUERY_LOGGER.debug("Query:\n" + requestBuilder.toString());
250261

262+
GetResponse response = requestBuilder.execute().actionGet();
251263
T entity = mapper.mapResult(response, clazz);
252264
return entity;
253265
}
@@ -304,6 +316,10 @@ public <T> List<String> queryForIds(SearchQuery query) {
304316
if (query.getFilter() != null) {
305317
request.setPostFilter(query.getFilter());
306318
}
319+
320+
if (QUERY_LOGGER.isDebugEnabled())
321+
QUERY_LOGGER.debug("Query:\n" + request.toString());
322+
307323
SearchResponse response = getSearchResponse(request.execute());
308324
return extractIds(response);
309325
}
@@ -326,12 +342,11 @@ public <T> Page<T> queryForPage(CriteriaQuery criteriaQuery, Class<T> clazz) {
326342

327343
if (elasticsearchFilter != null)
328344
searchRequestBuilder.setPostFilter(elasticsearchFilter);
329-
if (logger.isDebugEnabled()) {
330-
logger.debug("doSearch query:\n" + searchRequestBuilder.toString());
331-
}
332345

333-
SearchResponse response = getSearchResponse(searchRequestBuilder
334-
.execute());
346+
if (QUERY_LOGGER.isDebugEnabled())
347+
QUERY_LOGGER.debug("Query:\n" + searchRequestBuilder.toString());
348+
349+
SearchResponse response = getSearchResponse(searchRequestBuilder.execute());
335350
return resultsMapper.mapResults(response, clazz, criteriaQuery.getPageable());
336351
}
337352

@@ -342,7 +357,12 @@ public <T> Page<T> queryForPage(StringQuery query, Class<T> clazz) {
342357

343358
@Override
344359
public <T> Page<T> queryForPage(StringQuery query, Class<T> clazz, SearchResultMapper mapper) {
345-
SearchResponse response = getSearchResponse(prepareSearch(query, clazz).setQuery(query.getSource()).execute());
360+
SearchRequestBuilder requestBuilder = prepareSearch(query, clazz).setQuery(query.getSource());
361+
362+
if (QUERY_LOGGER.isDebugEnabled())
363+
QUERY_LOGGER.debug("Query:\n" + requestBuilder.toString());
364+
365+
SearchResponse response = getSearchResponse(requestBuilder.execute());
346366
return mapper.mapResults(response, clazz, query.getPageable());
347367
}
348368

@@ -464,6 +484,10 @@ private long doCount(CountRequestBuilder countRequestBuilder, QueryBuilder elast
464484
if (elasticsearchQuery != null) {
465485
countRequestBuilder.setQuery(elasticsearchQuery);
466486
}
487+
488+
if (QUERY_LOGGER.isDebugEnabled())
489+
QUERY_LOGGER.debug("Query:\n" + countRequestBuilder.toString());
490+
467491
return countRequestBuilder.execute().actionGet().getCount();
468492
}
469493

@@ -477,6 +501,10 @@ private long doCount(SearchRequestBuilder searchRequestBuilder, QueryBuilder ela
477501
searchRequestBuilder.setPostFilter(elasticsearchFilter);
478502
}
479503
searchRequestBuilder.setSearchType(SearchType.COUNT);
504+
505+
if (QUERY_LOGGER.isDebugEnabled())
506+
QUERY_LOGGER.debug("Query:\n" + searchRequestBuilder.toString());
507+
480508
return searchRequestBuilder.execute().actionGet().getHits().getTotalHits();
481509
}
482510

@@ -523,6 +551,10 @@ private <T> MultiGetResponse getMultiResponse(Query searchQuery, Class<T> clazz)
523551
}
524552
builder.add(item);
525553
}
554+
555+
if (QUERY_LOGGER.isDebugEnabled())
556+
QUERY_LOGGER.debug("Query:\n" + builder.toString());
557+
526558
return builder.execute().actionGet();
527559
}
528560

@@ -533,7 +565,12 @@ public <T> LinkedList<T> multiGet(SearchQuery searchQuery, Class<T> clazz, Multi
533565

534566
@Override
535567
public String index(IndexQuery query) {
536-
String documentId = prepareIndex(query).execute().actionGet().getId();
568+
IndexRequestBuilder requestBuilder = prepareIndex(query);
569+
570+
if (QUERY_LOGGER.isDebugEnabled())
571+
QUERY_LOGGER.debug("Query:\n" + requestBuilder.toString());
572+
573+
String documentId = requestBuilder.execute().actionGet().getId();
537574
// We should call this because we are not going through a mapper.
538575
if (query.getObject() != null) {
539576
setPersistentEntityId(query.getObject(), documentId);
@@ -543,7 +580,12 @@ public String index(IndexQuery query) {
543580

544581
@Override
545582
public UpdateResponse update(UpdateQuery query) {
546-
return this.prepareUpdate(query).execute().actionGet();
583+
UpdateRequestBuilder requestBuilder = this.prepareUpdate(query);
584+
585+
if (QUERY_LOGGER.isDebugEnabled())
586+
QUERY_LOGGER.debug("Query:\n" + requestBuilder.toString());
587+
588+
return requestBuilder.execute().actionGet();
547589
}
548590

549591
private UpdateRequestBuilder prepareUpdate(UpdateQuery query) {
@@ -578,6 +620,10 @@ public void bulkIndex(List<IndexQuery> queries) {
578620
for (IndexQuery query : queries) {
579621
bulkRequest.add(prepareIndex(query));
580622
}
623+
624+
if (QUERY_LOGGER.isDebugEnabled())
625+
QUERY_LOGGER.debug("Query:\n" + bulkRequest.toString());
626+
581627
BulkResponse bulkResponse = bulkRequest.execute().actionGet();
582628
if (bulkResponse.hasFailures()) {
583629
Map<String, String> failedDocuments = new HashMap<String, String>();
@@ -598,6 +644,10 @@ public void bulkUpdate(List<UpdateQuery> queries) {
598644
for (UpdateQuery query : queries) {
599645
bulkRequest.add(prepareUpdate(query));
600646
}
647+
648+
if (QUERY_LOGGER.isDebugEnabled())
649+
QUERY_LOGGER.debug("Query:\n" + bulkRequest.toString());
650+
601651
BulkResponse bulkResponse = bulkRequest.execute().actionGet();
602652
if (bulkResponse.hasFailures()) {
603653
Map<String, String> failedDocuments = new HashMap<String, String>();
@@ -644,7 +694,12 @@ public boolean deleteIndex(String indexName) {
644694

645695
@Override
646696
public String delete(String indexName, String type, String id) {
647-
return client.prepareDelete(indexName, type, id).execute().actionGet().getId();
697+
DeleteRequestBuilder requestBuilder = client.prepareDelete(indexName, type, id);
698+
699+
if (QUERY_LOGGER.isDebugEnabled())
700+
QUERY_LOGGER.debug("Query:\n" + requestBuilder.toString());
701+
702+
return requestBuilder.execute().actionGet().getId();
648703
}
649704

650705
@Override
@@ -699,6 +754,9 @@ public <T> AggregatedPage<T> mapResults(SearchResponse response, Class<T> clazz,
699754
}
700755

701756
if(bulkRequestBuilder.numberOfActions() > 0) {
757+
if (QUERY_LOGGER.isDebugEnabled())
758+
QUERY_LOGGER.debug("Query:\n" + bulkRequestBuilder.toString());
759+
702760
bulkRequestBuilder.execute().actionGet();
703761
}
704762

@@ -780,6 +838,9 @@ private String doScan(SearchRequestBuilder requestBuilder, CriteriaQuery criteri
780838
requestBuilder.setPostFilter(elasticsearchFilter);
781839
}
782840

841+
if (QUERY_LOGGER.isDebugEnabled())
842+
QUERY_LOGGER.debug("Query:\n" + requestBuilder.toString());
843+
783844
return getSearchResponse(requestBuilder.execute()).getScrollId();
784845
}
785846

@@ -792,7 +853,12 @@ private String doScan(SearchRequestBuilder requestBuilder, SearchQuery searchQue
792853
requestBuilder.setPostFilter(searchQuery.getFilter());
793854
}
794855

795-
return getSearchResponse(requestBuilder.setQuery(searchQuery.getQuery()).execute()).getScrollId();
856+
requestBuilder.setQuery(searchQuery.getQuery());
857+
858+
if (QUERY_LOGGER.isDebugEnabled())
859+
QUERY_LOGGER.debug("Query:\n" + requestBuilder.toString());
860+
861+
return getSearchResponse(requestBuilder.execute()).getScrollId();
796862
}
797863

798864
@Override
@@ -897,7 +963,13 @@ private SearchResponse doSearch(SearchRequestBuilder searchRequest, SearchQuery
897963
searchRequest.addAggregation(aggregatedFacet.getFacet());
898964
}
899965
}
900-
return getSearchResponse(searchRequest.setQuery(searchQuery.getQuery()).execute());
966+
967+
searchRequest.setQuery(searchQuery.getQuery());
968+
969+
if (QUERY_LOGGER.isDebugEnabled())
970+
QUERY_LOGGER.debug("Query:\n" + searchRequest.toString());
971+
972+
return getSearchResponse(searchRequest.execute());
901973
}
902974

903975
private SearchResponse getSearchResponse(ListenableActionFuture<SearchResponse> response) {
@@ -933,6 +1005,10 @@ public boolean createIndex(String indexName, Object settings) {
9331005
} else if (settings instanceof XContentBuilder) {
9341006
createIndexRequestBuilder.setSettings((XContentBuilder) settings);
9351007
}
1008+
1009+
if (QUERY_LOGGER.isDebugEnabled())
1010+
QUERY_LOGGER.debug("Query:\n" + createIndexRequestBuilder.toString());
1011+
9361012
return createIndexRequestBuilder.execute().actionGet().isAcknowledged();
9371013
}
9381014

@@ -1070,15 +1146,27 @@ public Boolean addAlias(AliasQuery query) {
10701146
} else if (isNotBlank(query.getIndexRouting())) {
10711147
aliasAction.indexRouting(query.getIndexRouting());
10721148
}
1073-
return client.admin().indices().prepareAliases().addAliasAction(aliasAction).execute().actionGet().isAcknowledged();
1149+
1150+
IndicesAliasesRequestBuilder requestBuilder = client.admin().indices().prepareAliases().addAliasAction(aliasAction);
1151+
1152+
if (QUERY_LOGGER.isDebugEnabled())
1153+
QUERY_LOGGER.debug("Query:\n" + requestBuilder.toString());
1154+
1155+
return requestBuilder.execute().actionGet().isAcknowledged();
10741156
}
10751157

10761158
@Override
10771159
public Boolean removeAlias(AliasQuery query) {
10781160
Assert.notNull(query.getIndexName(), "No index defined for Alias");
10791161
Assert.notNull(query.getAliasName(), "No alias defined");
1080-
return client.admin().indices().prepareAliases().removeAlias(query.getIndexName(), query.getAliasName())
1081-
.execute().actionGet().isAcknowledged();
1162+
1163+
IndicesAliasesRequestBuilder requestBuilder = client
1164+
.admin().indices().prepareAliases().removeAlias(query.getIndexName(), query.getAliasName());
1165+
1166+
if (QUERY_LOGGER.isDebugEnabled())
1167+
QUERY_LOGGER.debug("Query:\n" + requestBuilder.toString());
1168+
1169+
return requestBuilder.execute().actionGet().isAcknowledged();
10821170
}
10831171

10841172
@Override
@@ -1195,6 +1283,10 @@ public static String readFileFromClasspath(String url) {
11951283
public SuggestResponse suggest(SuggestBuilder.SuggestionBuilder<?> suggestion, String... indices) {
11961284
SuggestRequestBuilder suggestRequestBuilder = client.prepareSuggest(indices);
11971285
suggestRequestBuilder.addSuggestion(suggestion);
1286+
1287+
if (QUERY_LOGGER.isDebugEnabled())
1288+
QUERY_LOGGER.debug("Query:\n" + suggestRequestBuilder.toString());
1289+
11981290
return suggestRequestBuilder.execute().actionGet();
11991291
}
12001292

0 commit comments

Comments
 (0)