1
1
/*
2
- * Copyright 2013-2016 the original author or authors.
2
+ * Copyright 2013-2017 the original author or authors.
3
3
*
4
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
5
* you may not use this file except in compliance with the License.
32
32
import java .util .*;
33
33
34
34
import org .elasticsearch .action .ListenableActionFuture ;
35
+ import org .elasticsearch .action .admin .indices .alias .IndicesAliasesRequestBuilder ;
35
36
import org .elasticsearch .action .admin .indices .alias .get .GetAliasesRequest ;
36
37
import org .elasticsearch .action .admin .indices .create .CreateIndexRequestBuilder ;
37
38
import org .elasticsearch .action .admin .indices .delete .DeleteIndexRequest ;
42
43
import org .elasticsearch .action .bulk .BulkRequestBuilder ;
43
44
import org .elasticsearch .action .bulk .BulkResponse ;
44
45
import org .elasticsearch .action .count .CountRequestBuilder ;
46
+ import org .elasticsearch .action .delete .DeleteRequestBuilder ;
47
+ import org .elasticsearch .action .get .GetRequestBuilder ;
45
48
import org .elasticsearch .action .get .GetResponse ;
46
49
import org .elasticsearch .action .get .MultiGetRequest ;
47
50
import org .elasticsearch .action .get .MultiGetRequestBuilder ;
104
107
* @author Young Gu
105
108
* @author Oliver Gierke
106
109
* @author Mark Janssen
110
+ * @author Sascha Woo
107
111
*/
108
112
109
113
public class ElasticsearchTemplate implements ElasticsearchOperations , ApplicationContextAware {
110
114
115
+ private static final Logger QUERY_LOGGER = LoggerFactory .getLogger ("org.springframework.data.elasticsearch.core.QUERY" );
111
116
private static final Logger logger = LoggerFactory .getLogger (ElasticsearchTemplate .class );
112
117
private Client client ;
113
118
private ElasticsearchConverter elasticsearchConverter ;
@@ -209,6 +214,10 @@ public boolean putMapping(String indexName, String type, Object mapping) {
209
214
} else if (mapping instanceof XContentBuilder ) {
210
215
requestBuilder .setSource ((XContentBuilder ) mapping );
211
216
}
217
+
218
+ if (QUERY_LOGGER .isDebugEnabled ())
219
+ QUERY_LOGGER .debug ("Query:\n " + requestBuilder .toString ());
220
+
212
221
return requestBuilder .execute ().actionGet ().isAcknowledged ();
213
222
}
214
223
@@ -244,10 +253,13 @@ public <T> T queryForObject(GetQuery query, Class<T> clazz) {
244
253
@ Override
245
254
public <T > T queryForObject (GetQuery query , Class <T > clazz , GetResultMapper mapper ) {
246
255
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 ());
250
261
262
+ GetResponse response = requestBuilder .execute ().actionGet ();
251
263
T entity = mapper .mapResult (response , clazz );
252
264
return entity ;
253
265
}
@@ -304,6 +316,10 @@ public <T> List<String> queryForIds(SearchQuery query) {
304
316
if (query .getFilter () != null ) {
305
317
request .setPostFilter (query .getFilter ());
306
318
}
319
+
320
+ if (QUERY_LOGGER .isDebugEnabled ())
321
+ QUERY_LOGGER .debug ("Query:\n " + request .toString ());
322
+
307
323
SearchResponse response = getSearchResponse (request .execute ());
308
324
return extractIds (response );
309
325
}
@@ -326,12 +342,11 @@ public <T> Page<T> queryForPage(CriteriaQuery criteriaQuery, Class<T> clazz) {
326
342
327
343
if (elasticsearchFilter != null )
328
344
searchRequestBuilder .setPostFilter (elasticsearchFilter );
329
- if (logger .isDebugEnabled ()) {
330
- logger .debug ("doSearch query:\n " + searchRequestBuilder .toString ());
331
- }
332
345
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 ());
335
350
return resultsMapper .mapResults (response , clazz , criteriaQuery .getPageable ());
336
351
}
337
352
@@ -342,7 +357,12 @@ public <T> Page<T> queryForPage(StringQuery query, Class<T> clazz) {
342
357
343
358
@ Override
344
359
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 ());
346
366
return mapper .mapResults (response , clazz , query .getPageable ());
347
367
}
348
368
@@ -464,6 +484,10 @@ private long doCount(CountRequestBuilder countRequestBuilder, QueryBuilder elast
464
484
if (elasticsearchQuery != null ) {
465
485
countRequestBuilder .setQuery (elasticsearchQuery );
466
486
}
487
+
488
+ if (QUERY_LOGGER .isDebugEnabled ())
489
+ QUERY_LOGGER .debug ("Query:\n " + countRequestBuilder .toString ());
490
+
467
491
return countRequestBuilder .execute ().actionGet ().getCount ();
468
492
}
469
493
@@ -477,6 +501,10 @@ private long doCount(SearchRequestBuilder searchRequestBuilder, QueryBuilder ela
477
501
searchRequestBuilder .setPostFilter (elasticsearchFilter );
478
502
}
479
503
searchRequestBuilder .setSearchType (SearchType .COUNT );
504
+
505
+ if (QUERY_LOGGER .isDebugEnabled ())
506
+ QUERY_LOGGER .debug ("Query:\n " + searchRequestBuilder .toString ());
507
+
480
508
return searchRequestBuilder .execute ().actionGet ().getHits ().getTotalHits ();
481
509
}
482
510
@@ -523,6 +551,10 @@ private <T> MultiGetResponse getMultiResponse(Query searchQuery, Class<T> clazz)
523
551
}
524
552
builder .add (item );
525
553
}
554
+
555
+ if (QUERY_LOGGER .isDebugEnabled ())
556
+ QUERY_LOGGER .debug ("Query:\n " + builder .toString ());
557
+
526
558
return builder .execute ().actionGet ();
527
559
}
528
560
@@ -533,7 +565,12 @@ public <T> LinkedList<T> multiGet(SearchQuery searchQuery, Class<T> clazz, Multi
533
565
534
566
@ Override
535
567
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 ();
537
574
// We should call this because we are not going through a mapper.
538
575
if (query .getObject () != null ) {
539
576
setPersistentEntityId (query .getObject (), documentId );
@@ -543,7 +580,12 @@ public String index(IndexQuery query) {
543
580
544
581
@ Override
545
582
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 ();
547
589
}
548
590
549
591
private UpdateRequestBuilder prepareUpdate (UpdateQuery query ) {
@@ -578,6 +620,10 @@ public void bulkIndex(List<IndexQuery> queries) {
578
620
for (IndexQuery query : queries ) {
579
621
bulkRequest .add (prepareIndex (query ));
580
622
}
623
+
624
+ if (QUERY_LOGGER .isDebugEnabled ())
625
+ QUERY_LOGGER .debug ("Query:\n " + bulkRequest .toString ());
626
+
581
627
BulkResponse bulkResponse = bulkRequest .execute ().actionGet ();
582
628
if (bulkResponse .hasFailures ()) {
583
629
Map <String , String > failedDocuments = new HashMap <String , String >();
@@ -598,6 +644,10 @@ public void bulkUpdate(List<UpdateQuery> queries) {
598
644
for (UpdateQuery query : queries ) {
599
645
bulkRequest .add (prepareUpdate (query ));
600
646
}
647
+
648
+ if (QUERY_LOGGER .isDebugEnabled ())
649
+ QUERY_LOGGER .debug ("Query:\n " + bulkRequest .toString ());
650
+
601
651
BulkResponse bulkResponse = bulkRequest .execute ().actionGet ();
602
652
if (bulkResponse .hasFailures ()) {
603
653
Map <String , String > failedDocuments = new HashMap <String , String >();
@@ -644,7 +694,12 @@ public boolean deleteIndex(String indexName) {
644
694
645
695
@ Override
646
696
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 ();
648
703
}
649
704
650
705
@ Override
@@ -699,6 +754,9 @@ public <T> AggregatedPage<T> mapResults(SearchResponse response, Class<T> clazz,
699
754
}
700
755
701
756
if (bulkRequestBuilder .numberOfActions () > 0 ) {
757
+ if (QUERY_LOGGER .isDebugEnabled ())
758
+ QUERY_LOGGER .debug ("Query:\n " + bulkRequestBuilder .toString ());
759
+
702
760
bulkRequestBuilder .execute ().actionGet ();
703
761
}
704
762
@@ -780,6 +838,9 @@ private String doScan(SearchRequestBuilder requestBuilder, CriteriaQuery criteri
780
838
requestBuilder .setPostFilter (elasticsearchFilter );
781
839
}
782
840
841
+ if (QUERY_LOGGER .isDebugEnabled ())
842
+ QUERY_LOGGER .debug ("Query:\n " + requestBuilder .toString ());
843
+
783
844
return getSearchResponse (requestBuilder .execute ()).getScrollId ();
784
845
}
785
846
@@ -792,7 +853,12 @@ private String doScan(SearchRequestBuilder requestBuilder, SearchQuery searchQue
792
853
requestBuilder .setPostFilter (searchQuery .getFilter ());
793
854
}
794
855
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 ();
796
862
}
797
863
798
864
@ Override
@@ -897,7 +963,13 @@ private SearchResponse doSearch(SearchRequestBuilder searchRequest, SearchQuery
897
963
searchRequest .addAggregation (aggregatedFacet .getFacet ());
898
964
}
899
965
}
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 ());
901
973
}
902
974
903
975
private SearchResponse getSearchResponse (ListenableActionFuture <SearchResponse > response ) {
@@ -933,6 +1005,10 @@ public boolean createIndex(String indexName, Object settings) {
933
1005
} else if (settings instanceof XContentBuilder ) {
934
1006
createIndexRequestBuilder .setSettings ((XContentBuilder ) settings );
935
1007
}
1008
+
1009
+ if (QUERY_LOGGER .isDebugEnabled ())
1010
+ QUERY_LOGGER .debug ("Query:\n " + createIndexRequestBuilder .toString ());
1011
+
936
1012
return createIndexRequestBuilder .execute ().actionGet ().isAcknowledged ();
937
1013
}
938
1014
@@ -1070,15 +1146,27 @@ public Boolean addAlias(AliasQuery query) {
1070
1146
} else if (isNotBlank (query .getIndexRouting ())) {
1071
1147
aliasAction .indexRouting (query .getIndexRouting ());
1072
1148
}
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 ();
1074
1156
}
1075
1157
1076
1158
@ Override
1077
1159
public Boolean removeAlias (AliasQuery query ) {
1078
1160
Assert .notNull (query .getIndexName (), "No index defined for Alias" );
1079
1161
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 ();
1082
1170
}
1083
1171
1084
1172
@ Override
@@ -1195,6 +1283,10 @@ public static String readFileFromClasspath(String url) {
1195
1283
public SuggestResponse suggest (SuggestBuilder .SuggestionBuilder <?> suggestion , String ... indices ) {
1196
1284
SuggestRequestBuilder suggestRequestBuilder = client .prepareSuggest (indices );
1197
1285
suggestRequestBuilder .addSuggestion (suggestion );
1286
+
1287
+ if (QUERY_LOGGER .isDebugEnabled ())
1288
+ QUERY_LOGGER .debug ("Query:\n " + suggestRequestBuilder .toString ());
1289
+
1198
1290
return suggestRequestBuilder .execute ().actionGet ();
1199
1291
}
1200
1292
0 commit comments