@@ -837,8 +837,8 @@ public DeleteRequest documentDeleteRequest(String id, @Nullable String routing,
837
837
});
838
838
}
839
839
840
- public DeleteByQueryRequest documentDeleteByQueryRequest (Query query , Class <?> clazz , IndexCoordinates index ,
841
- @ Nullable RefreshPolicy refreshPolicy ) {
840
+ public DeleteByQueryRequest documentDeleteByQueryRequest (Query query , @ Nullable String routing , Class <?> clazz ,
841
+ IndexCoordinates index , @ Nullable RefreshPolicy refreshPolicy ) {
842
842
843
843
Assert .notNull (query , "query must not be null" );
844
844
Assert .notNull (index , "index must not be null" );
@@ -857,6 +857,8 @@ public DeleteByQueryRequest documentDeleteByQueryRequest(Query query, Class<?> c
857
857
858
858
if (query .getRoute () != null ) {
859
859
b .routing (query .getRoute ());
860
+ } else if (StringUtils .hasText (routing )) {
861
+ b .routing (routing );
860
862
}
861
863
862
864
return b ;
@@ -998,45 +1000,53 @@ public UpdateByQueryRequest documentUpdateByQueryRequest(UpdateQuery updateQuery
998
1000
999
1001
// region search
1000
1002
1001
- public <T > SearchRequest searchRequest (Query query , @ Nullable Class <T > clazz , IndexCoordinates indexCoordinates ,
1002
- boolean forCount ) {
1003
- return searchRequest (query , clazz , indexCoordinates , forCount , false , null );
1003
+ public <T > SearchRequest searchRequest (Query query , @ Nullable String routing , @ Nullable Class <T > clazz ,
1004
+ IndexCoordinates indexCoordinates , boolean forCount ) {
1005
+ return searchRequest (query , routing , clazz , indexCoordinates , forCount , false , null );
1004
1006
}
1005
1007
1006
- public <T > SearchRequest searchRequest (Query query , @ Nullable Class <T > clazz , IndexCoordinates indexCoordinates ,
1007
- boolean forCount , long scrollTimeInMillis ) {
1008
- return searchRequest (query , clazz , indexCoordinates , forCount , true , scrollTimeInMillis );
1008
+ public <T > SearchRequest searchRequest (Query query , @ Nullable String routing , @ Nullable Class <T > clazz ,
1009
+ IndexCoordinates indexCoordinates , boolean forCount , long scrollTimeInMillis ) {
1010
+ return searchRequest (query , routing , clazz , indexCoordinates , forCount , true , scrollTimeInMillis );
1009
1011
}
1010
1012
1011
- public <T > SearchRequest searchRequest (Query query , @ Nullable Class <T > clazz , IndexCoordinates indexCoordinates ,
1012
- boolean forCount , boolean forBatchedSearch ) {
1013
- return searchRequest (query , clazz , indexCoordinates , forCount , forBatchedSearch , null );
1013
+ public <T > SearchRequest searchRequest (Query query , @ Nullable String routing , @ Nullable Class <T > clazz ,
1014
+ IndexCoordinates indexCoordinates , boolean forCount , boolean forBatchedSearch ) {
1015
+ return searchRequest (query , routing , clazz , indexCoordinates , forCount , forBatchedSearch , null );
1014
1016
}
1015
1017
1016
- public <T > SearchRequest searchRequest (Query query , @ Nullable Class <T > clazz , IndexCoordinates indexCoordinates ,
1017
- boolean forCount , boolean forBatchedSearch , @ Nullable Long scrollTimeInMillis ) {
1018
+ public <T > SearchRequest searchRequest (Query query , @ Nullable String routing , @ Nullable Class <T > clazz ,
1019
+ IndexCoordinates indexCoordinates , boolean forCount , boolean forBatchedSearch ,
1020
+ @ Nullable Long scrollTimeInMillis ) {
1018
1021
1019
1022
String [] indexNames = indexCoordinates .getIndexNames ();
1020
1023
Assert .notNull (query , "query must not be null" );
1021
1024
Assert .notNull (indexCoordinates , "indexCoordinates must not be null" );
1022
1025
1023
1026
elasticsearchConverter .updateQuery (query , clazz );
1024
1027
SearchRequest .Builder builder = new SearchRequest .Builder ();
1025
- prepareSearchRequest (query , clazz , indexCoordinates , builder , forCount , forBatchedSearch );
1028
+ prepareSearchRequest (query , routing , clazz , indexCoordinates , builder , forCount , forBatchedSearch );
1026
1029
1027
1030
if (scrollTimeInMillis != null ) {
1028
1031
builder .scroll (t -> t .time (scrollTimeInMillis + "ms" ));
1029
1032
}
1030
1033
1031
1034
builder .query (getQuery (query , clazz ));
1032
1035
1036
+ if (StringUtils .hasText (query .getRoute ())) {
1037
+ builder .routing (query .getRoute ());
1038
+ }
1039
+ if (StringUtils .hasText (routing )) {
1040
+ builder .routing (routing );
1041
+ }
1042
+
1033
1043
addFilter (query , builder );
1034
1044
1035
1045
return builder .build ();
1036
1046
}
1037
1047
1038
1048
public MsearchRequest searchMsearchRequest (
1039
- List <ElasticsearchTemplate .MultiSearchQueryParameter > multiSearchQueryParameters ) {
1049
+ List <ElasticsearchTemplate .MultiSearchQueryParameter > multiSearchQueryParameters , @ Nullable String routing ) {
1040
1050
1041
1051
// basically the same stuff as in prepareSearchRequest, but the new Elasticsearch has different builders for a
1042
1052
// normal search and msearch
@@ -1049,11 +1059,16 @@ public MsearchRequest searchMsearchRequest(
1049
1059
.header (h -> {
1050
1060
h //
1051
1061
.index (Arrays .asList (param .index ().getIndexNames ())) //
1052
- .routing (query .getRoute ()) //
1053
1062
.searchType (searchType (query .getSearchType ())) //
1054
1063
.requestCache (query .getRequestCache ()) //
1055
1064
;
1056
1065
1066
+ if (StringUtils .hasText (query .getRoute ())) {
1067
+ h .routing (query .getRoute ());
1068
+ } else if (StringUtils .hasText (routing )) {
1069
+ h .routing (routing );
1070
+ }
1071
+
1057
1072
if (query .getPreference () != null ) {
1058
1073
h .preference (query .getPreference ());
1059
1074
}
@@ -1156,8 +1171,8 @@ public MsearchRequest searchMsearchRequest(
1156
1171
});
1157
1172
}
1158
1173
1159
- private <T > void prepareSearchRequest (Query query , @ Nullable Class <T > clazz , IndexCoordinates indexCoordinates ,
1160
- SearchRequest .Builder builder , boolean forCount , boolean forBatchedSearch ) {
1174
+ private <T > void prepareSearchRequest (Query query , @ Nullable String routing , @ Nullable Class <T > clazz ,
1175
+ IndexCoordinates indexCoordinates , SearchRequest .Builder builder , boolean forCount , boolean forBatchedSearch ) {
1161
1176
1162
1177
String [] indexNames = indexCoordinates .getIndexNames ();
1163
1178
@@ -1190,6 +1205,8 @@ private <T> void prepareSearchRequest(Query query, @Nullable Class<T> clazz, Ind
1190
1205
1191
1206
if (query .getRoute () != null ) {
1192
1207
builder .routing (query .getRoute ());
1208
+ } else if (StringUtils .hasText (routing )) {
1209
+ builder .routing (routing );
1193
1210
}
1194
1211
1195
1212
if (query .getPreference () != null ) {
@@ -1559,7 +1576,8 @@ public ClosePointInTimeRequest searchClosePointInTime(String pit) {
1559
1576
return ClosePointInTimeRequest .of (cpit -> cpit .id (pit ));
1560
1577
}
1561
1578
1562
- public SearchTemplateRequest searchTemplate (SearchTemplateQuery query , IndexCoordinates index ) {
1579
+ public SearchTemplateRequest searchTemplate (SearchTemplateQuery query , @ Nullable String routing ,
1580
+ IndexCoordinates index ) {
1563
1581
1564
1582
Assert .notNull (query , "query must not be null" );
1565
1583
@@ -1570,10 +1588,15 @@ public SearchTemplateRequest searchTemplate(SearchTemplateQuery query, IndexCoor
1570
1588
.id (query .getId ()) //
1571
1589
.index (Arrays .asList (index .getIndexNames ())) //
1572
1590
.preference (query .getPreference ()) //
1573
- .routing (query .getRoute ()) //
1574
1591
.searchType (searchType (query .getSearchType ())).source (query .getSource ()) //
1575
1592
;
1576
1593
1594
+ if (query .getRoute () != null ) {
1595
+ builder .routing (query .getRoute ());
1596
+ } else if (StringUtils .hasText (routing )) {
1597
+ builder .routing (routing );
1598
+ }
1599
+
1577
1600
var expandWildcards = query .getExpandWildcards ();
1578
1601
if (!expandWildcards .isEmpty ()) {
1579
1602
builder .expandWildcards (expandWildcards (expandWildcards ));
0 commit comments