class OpenSearch::DSL::Search::Aggregations::BucketSort

A parent pipeline aggregation which sorts the buckets of its parent multi-bucket aggregation.

@example Passing the options as a Hash

aggregation :sales_bucket_filter do
  bucket_sort gap_policy: 'insert_zero'
end

@example Passing the options as a block

aggregation :sales_bucket_sort do
  bucket_sort do
    sort do
      by :total_sales, order: 'desc'
    end
    size 3
  end
end

Public Instance Methods

sort(*args, &block) click to toggle source

Add a sort clause to the search definition.

@example

bucket_sort do
  sort do
    by :total_sales, order: 'desc'
  end
end

@return [ Sort, Hash ] The sort definition.

@since 0.1.9

# File lib/opensearch/dsl/search/aggregations/pipeline/bucket_sort.rb, line 68
def sort(*args, &block)
  if !args.empty? || block
    @sort = Sort.new(*args, &block)
    self
  else
    @sort
  end
end
to_hash() click to toggle source

Get a hash representation of the aggregation.

@example

s = search do
  aggregation do
    bucket_sort do
      sort do
        by :total_sales, order: 'desc'
      end
    end
  end
end

client.search(body: s.to_hash)

@return [ Hash ] The hash representation of the aggregation.

@since 0.1.9

# File lib/opensearch/dsl/search/aggregations/pipeline/bucket_sort.rb, line 96
def to_hash
  call

  if @aggregations
    @hash[:aggregations] = @aggregations.to_hash
  end

  @hash[name].merge!(sort: @sort.to_hash) if @sort
  @hash
end