code: public AggregationBuilder buildStickyFacet(String fieldName, String facetName, int size, Function<TermsAggregationBuilder, AggregationBuilder> additionalAggregationFilter,
      Object... selected) {
      BoolQueryBuilder facetFilter = getStickyFacetFilter(fieldName);
      FilterAggregationBuilder facetTopAggregation = buildTopFacetAggregation(fieldName, facetName, facetFilter, size, additionalAggregationFilter);
      facetTopAggregation = addSelectedItemsToFacet(fieldName, facetName, facetTopAggregation, additionalAggregationFilter, selected);
  
      return AggregationBuilders
        .global(facetName)
        .subAggregation(facetTopAggregation);
    }
docs: Creates an aggregation, that will return the top-terms for <code>fieldName</code>.
  
  It will filter according to the filters of every of the <em>other</em> fields, but will not apply filters to <em>this</em> field (so that the user can see all terms, even
  after having chosen for one of the terms).
  
  If special filtering is required (like for nested types), additional functionality can be passed into the method in the <code>additionalAggregationFilter</code> parameter.
  
  @param fieldName the name of the field that contains the terms
  @param facetName the name of the aggregation (use this for to find the corresponding results in the response)
  @param size number of facet items
  @param additionalAggregationFilter additional features (like filtering using childQuery)
  @param selected the terms, that the user already has selected
  @return the (global) aggregation, that can be added on top level of the elasticsearch request