Class NestedFacetCreator

java.lang.Object
de.cxp.ocs.elasticsearch.facets.NestedFacetCreator
All Implemented Interfaces:
FacetCreator
Direct Known Subclasses:
CategoryFacetCreator, IntervalFacetCreator, NestedCustomFacetCreator, RangeFacetCreator, TermFacetCreator

public abstract class NestedFacetCreator extends Object implements FacetCreator
  • Field Details

    • nestedFacetCorrector

      protected de.cxp.ocs.elasticsearch.facets.NestedFacetCountCorrector nestedFacetCorrector
  • Constructor Details

  • Method Details

    • getNestedPath

      protected abstract String getNestedPath()
    • getNestedValueAggregation

      protected abstract org.elasticsearch.search.aggregations.AggregationBuilder getNestedValueAggregation(String nestedPathPrefix)
    • onlyFetchAggregationsForConfiguredFacets

      protected abstract boolean onlyFetchAggregationsForConfiguredFacets()
    • correctedNestedDocumentCount

      protected abstract boolean correctedNestedDocumentCount()
    • isMatchingFilterType

      protected abstract boolean isMatchingFilterType(InternalResultFilter internalResultFilter)
    • createFacet

      protected abstract Optional<Facet> createFacet(org.elasticsearch.search.aggregations.bucket.terms.Terms.Bucket facetNameBucket, FacetConfiguration.FacetConfig facetConfig, InternalResultFilter facetFilter, DefaultLinkBuilder linkBuilder)
    • buildAggregation

      public org.elasticsearch.search.aggregations.AggregationBuilder buildAggregation(FilterContext filterContext)
      Description copied from interface: FacetCreator
      Build aggregation that is necessary to create the according facets.
      Specified by:
      buildAggregation in interface FacetCreator
      Returns:
      configured aggregation-builder
    • buildIncludeFilteredAggregation

      public org.elasticsearch.search.aggregations.AggregationBuilder buildIncludeFilteredAggregation(FilterContext filterContext, Set<String> includeNames)
      Description copied from interface: FacetCreator
      Build aggregation that is necessary to create the facets specified by the includes list.
      Specified by:
      buildIncludeFilteredAggregation in interface FacetCreator
      Parameters:
      includeNames - names of data fields for which the aggregations should be built
      Returns:
      configured aggregation-builder
    • buildExcludeFilteredAggregation

      public org.elasticsearch.search.aggregations.AggregationBuilder buildExcludeFilteredAggregation(FilterContext filterContext, Set<String> excludeNames)
      Description copied from interface: FacetCreator
      Build aggregation that is necessary to create the facets, but not the ones in the exlude list.
      Specified by:
      buildExcludeFilteredAggregation in interface FacetCreator
      Parameters:
      excludeNames - names of data fields that MUST NOT be part of this aggregation
      Returns:
      configured aggregation-builder
    • createFacets

      public Collection<Facet> createFacets(org.elasticsearch.search.aggregations.Aggregations aggResult, FilterContext filterContext, DefaultLinkBuilder linkBuilder)
      Description copied from interface: FacetCreator
      create facets from aggregation result.
      Specified by:
      createFacets in interface FacetCreator
      Parameters:
      aggResult - ES aggregagtion result
      filterContext - the filter context
      linkBuilder - a link builder to create facet-entry-links
      Returns:
      a list of facets that can be derived from the aggregation result
    • extractFacets

      protected List<Facet> extractFacets(org.elasticsearch.search.aggregations.bucket.terms.Terms facetNames, FilterContext filterContext, DefaultLinkBuilder linkBuilder)