Class FiltersAggregator

All Implemented Interfaces:
java.io.Closeable, java.lang.AutoCloseable, org.apache.lucene.search.Collector, Releasable
Direct Known Subclasses:
FiltersAggregator.FilterByFilter

public abstract class FiltersAggregator
extends BucketsAggregator
  • Field Details

    • FILTERS_FIELD

      public static final org.elasticsearch.common.ParseField FILTERS_FIELD
    • OTHER_BUCKET_FIELD

      public static final org.elasticsearch.common.ParseField OTHER_BUCKET_FIELD
    • OTHER_BUCKET_KEY_FIELD

      public static final org.elasticsearch.common.ParseField OTHER_BUCKET_KEY_FIELD
    • otherBucketKey

      protected final java.lang.String otherBucketKey
  • Method Details

    • build

      public static FiltersAggregator build​(java.lang.String name, AggregatorFactories factories, java.lang.String[] keys, org.apache.lucene.search.Query[] filters, boolean keyed, java.lang.String otherBucketKey, AggregationContext context, Aggregator parent, CardinalityUpperBound cardinality, java.util.Map<java.lang.String,​java.lang.Object> metadata) throws java.io.IOException
      Build an Aggregator for a filters aggregation. If there isn't a parent, there aren't children, and we don't collect "other" buckets then this will a faster FiltersAggregator.FilterByFilter aggregator. Otherwise it'll fall back to a slower aggregator that is FiltersAggregator.Compatible with parent, children, and "other" buckets.
      Throws:
      java.io.IOException
    • buildFilterOrderOrNull

      public static FiltersAggregator.FilterByFilter buildFilterOrderOrNull​(java.lang.String name, AggregatorFactories factories, java.lang.String[] keys, org.apache.lucene.search.Query[] filters, boolean keyed, java.lang.String otherBucketKey, AggregationContext context, Aggregator parent, CardinalityUpperBound cardinality, java.util.Map<java.lang.String,​java.lang.Object> metadata) throws java.io.IOException
      Build an Aggregator for a filters aggregation if we can collect FiltersAggregator.FilterByFilter, otherwise return null. We can collect filter by filter if there isn't a parent, there aren't children, and we don't collect "other" buckets. Collecting FiltersAggregator.FilterByFilter is generally going to be much faster than the FiltersAggregator.Compatible aggregator.
      Throws:
      java.io.IOException
    • buildAggregations

      public InternalAggregation[] buildAggregations​(long[] owningBucketOrds) throws java.io.IOException
      Description copied from class: Aggregator
      Build the results of this aggregation.
      Specified by:
      buildAggregations in class Aggregator
      Parameters:
      owningBucketOrds - the ordinals of the buckets that we want to collect from this aggregation
      Returns:
      the results for each ordinal, in the same order as the array of ordinals
      Throws:
      java.io.IOException
    • buildEmptyAggregation

      public InternalAggregation buildEmptyAggregation()
      Description copied from class: Aggregator
      Build an empty aggregation.
      Specified by:
      buildEmptyAggregation in class Aggregator
    • buildWeights

      protected org.apache.lucene.search.Weight[] buildWeights​(org.apache.lucene.search.Query topLevelQuery, org.apache.lucene.search.Query[] filters) throws java.io.IOException
      Throws:
      java.io.IOException