1
1
package org .elasticsearch .mapping ;
2
2
3
- import java .util .ArrayList ;
4
- import java .util .HashMap ;
5
- import java .util .List ;
6
- import java .util .Map ;
3
+ import java .util .*;
7
4
import java .util .Map .Entry ;
8
- import java .util .Set ;
9
5
10
6
import javax .annotation .Resource ;
11
7
18
14
import org .elasticsearch .common .collect .Maps ;
19
15
import org .elasticsearch .common .logging .ESLogger ;
20
16
import org .elasticsearch .common .logging .Loggers ;
21
- import org .elasticsearch .index .query .BoolQueryBuilder ;
22
- import org .elasticsearch .index .query .FilterBuilder ;
23
- import org .elasticsearch .index .query .FilterBuilders ;
24
- import org .elasticsearch .index .query .QueryBuilder ;
25
- import org .elasticsearch .index .query .QueryBuilders ;
17
+ import org .elasticsearch .index .query .*;
26
18
import org .elasticsearch .index .query .functionscore .ScoreFunctionBuilders ;
27
19
import org .elasticsearch .search .facet .FacetBuilder ;
28
20
import org .elasticsearch .search .sort .SortBuilder ;
@@ -370,12 +362,35 @@ public SearchQueryHelperBuilder customFilter(FilterBuilder filterBuilder) {
370
362
* @param size The maximum number of elements to return.
371
363
*/
372
364
public SearchResponse search (int from , int size ) {
365
+ SearchRequestBuilder searchRequestBuilder = generate (from , size );
366
+ return searchRequestBuilder .execute ().actionGet ();
367
+ }
368
+
369
+ /**
370
+ * Generate a SearchRequestBuilder based on the query helper configuration.
371
+ *
372
+ * @return an ElasticSearch SearchRequestBuilder that can be used for more advanced configuraiton.
373
+ */
374
+ public SearchRequestBuilder generate () {
375
+ return generate (null );
376
+ }
377
+
378
+ /**
379
+ * Generate a SearchRequestBuilder based on the query helper configuration.
380
+ *
381
+ * @return an ElasticSearch SearchRequestBuilder that can be used for more advanced configuraiton.
382
+ */
383
+ public SearchRequestBuilder generate (QueryBuilderAdapter queryBuilderAdapter ) {
373
384
SearchRequestBuilder searchRequestBuilder = esClient .getClient ().prepareSearch (this .indices );
374
- searchRequestBuilder .setSearchType (SearchType .QUERY_THEN_FETCH ).setSize (size ).setFrom (from );
385
+ searchRequestBuilder .setSearchType (SearchType .QUERY_THEN_FETCH );
386
+ QueryBuilder query = queryBuilder ;
387
+ if (queryBuilderAdapter != null ) {
388
+ query = queryBuilderAdapter .adapt (queryBuilder );
389
+ }
375
390
if (functionScore == null ) {
376
- searchRequestBuilder .setQuery (queryBuilder );
391
+ searchRequestBuilder .setQuery (query );
377
392
} else {
378
- searchRequestBuilder .setQuery (QueryBuilders .functionScoreQuery (queryBuilder , ScoreFunctionBuilders .scriptFunction (functionScore )));
393
+ searchRequestBuilder .setQuery (QueryBuilders .functionScoreQuery (query , ScoreFunctionBuilders .scriptFunction (functionScore )));
379
394
}
380
395
searchRequestBuilder .setTypes (getTypes ());
381
396
if (classes != null && classes .length > 0 ) {
@@ -401,7 +416,32 @@ public SearchResponse search(int from, int size) {
401
416
} else {
402
417
searchRequestBuilder .addSort (SortBuilders .fieldSort (prefixField ));
403
418
}
404
- return searchRequestBuilder .execute ().actionGet ();
419
+ return searchRequestBuilder ;
420
+ }
421
+
422
+ /**
423
+ * Generate a SearchRequestBuilder based on the query helper configuration.
424
+ *
425
+ * @param from The start index of the search (for pagination).
426
+ * @param size The maximum number of elements to return.
427
+ * @param queryBuilderAdapter adapter.
428
+ * @return an ElasticSearch SearchRequestBuilder that can be used for more advanced configuraiton.
429
+ */
430
+ public SearchRequestBuilder generate (int from , int size , QueryBuilderAdapter queryBuilderAdapter ) {
431
+ SearchRequestBuilder searchRequestBuilder = generate (queryBuilderAdapter );
432
+ searchRequestBuilder .setSize (size ).setFrom (from );
433
+ return searchRequestBuilder ;
434
+ }
435
+
436
+ /**
437
+ * Generate a SearchRequestBuilder based on the query helper configuration.
438
+ *
439
+ * @param from The start index of the search (for pagination).
440
+ * @param size The maximum number of elements to return.
441
+ * @return an ElasticSearch SearchRequestBuilder that can be used for more advanced configuraiton.
442
+ */
443
+ public SearchRequestBuilder generate (int from , int size ) {
444
+ return generate (from , size , null );
405
445
}
406
446
407
447
private void addFetchContext (SearchRequestBuilder searchRequestBuilder ) {
0 commit comments