Class: OpenSearch::DSL::Search::Sort

Inherits:
Object
  • Object
show all
Includes:
BaseComponent
Defined in:
lib/opensearch/dsl/search/sort.rb

Overview

Wraps the ‘sort` part of a search definition

Instance Method Summary collapse

Methods included from BaseComponent

included

Constructor Details

#initialize(*args, &block) ⇒ Sort

Returns a new instance of Sort.



36
37
38
39
# File 'lib/opensearch/dsl/search/sort.rb', line 36

def initialize(*args, &block)
  @value = []
  super
end

Instance Method Details

#by(name, direction = nil) ⇒ Object

DSL method to specify sorting item

Examples:


search do
  sort do
    by :category
    by :clicks, order: 'desc'
  end
end


52
53
54
55
# File 'lib/opensearch/dsl/search/sort.rb', line 52

def by(name, direction = nil)
  @value << (direction ? { name => direction } : name)
  self
end

#empty?Boolean

Return whether the definition is empty

Returns:

  • (Boolean)


77
78
79
# File 'lib/opensearch/dsl/search/sort.rb', line 77

def empty?
  to_hash.empty?
end

#to_hashHash

Convert the definition to a Hash

Returns:

  • (Hash)


61
62
63
64
65
66
67
68
69
70
71
# File 'lib/opensearch/dsl/search/sort.rb', line 61

def to_hash
  if @block
    call unless @block_called
    @block_called = true
  elsif @args && !@args.empty? && !@value.include?(@args)
    @value << @args
  end

  @hash = @value.flatten
  @hash
end