@@ -236,6 +236,7 @@ protected QueryBuilderHelper(MappingBuilder mappingBuilder, ElasticSearchClient
236236 }
237237
238238 protected QueryBuilderHelper (MappingBuilder mappingBuilder , ElasticSearchClient esClient , String prefixField , String searchPrefix ) {
239+ this .prefixField = prefixField ;
239240 this .queryBuilder = getOrMatchAll (searchPrefix , () -> QueryBuilders .prefixQuery (prefixField , searchPrefix ));
240241 this .mappingBuilder = mappingBuilder ;
241242 this .esClient = esClient ;
@@ -259,9 +260,26 @@ private QueryBuilder getOrMatchAll(String search, Supplier<QueryBuilder> supplie
259260 public QueryBuilderHelper types (Class <?>... classes ) {
260261 // you must set classes before you can set filters for them.
261262 this .classes = classes ;
263+ wrapPrefixQueryIfNested ();
262264 return this ;
263265 }
264266
267+ private void wrapPrefixQueryIfNested () {
268+ if (prefixField == null ) {
269+ return ;
270+ }
271+
272+ List <IFilterBuilderHelper > filterBuilderHelpers = mappingBuilder .getFilters (classes [0 ].getName ());
273+ for (IFilterBuilderHelper filterBuilderHelper : filterBuilderHelpers ) {
274+ if (filterBuilderHelper .isNested () && prefixField .equals (filterBuilderHelper .getEsFieldName ())) {
275+ this .queryBuilder = QueryBuilders .nestedQuery (filterBuilderHelper .getNestedPath (), queryBuilder );
276+ return ;
277+ }
278+ }
279+
280+ return ;
281+ }
282+
265283 @ Override
266284 public QueryBuilderHelper alterQuery (QueryBuilderAdapter queryBuilderConsumer ) {
267285 queryBuilder = queryBuilderConsumer .adapt (this .queryBuilder );
@@ -286,7 +304,6 @@ public CountResponse count(String[] indices, String... types) {
286304 countRequestBuilder .setTypes (types );
287305 }
288306 countRequestBuilder .setQuery (this .queryBuilder );
289- String query = countRequestBuilder .toString ();
290307 return countRequestBuilder .execute ().actionGet ();
291308 }
292309
0 commit comments