Class: Elasticsearch::DSL::Search::Sort

Inherits:
Object
  • Object
show all
Includes:
BaseComponent
Defined in:
lib/elasticsearch/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.



29
30
31
32
# File 'lib/elasticsearch/dsl/search/sort.rb', line 29

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


45
46
47
48
# File 'lib/elasticsearch/dsl/search/sort.rb', line 45

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

#empty?Boolean

Return whether the definition is empty

Returns:

  • (Boolean)


70
71
72
# File 'lib/elasticsearch/dsl/search/sort.rb', line 70

def empty?
  to_hash.empty?
end

#to_hashHash

Convert the definition to a Hash

Returns:

  • (Hash)


54
55
56
57
58
59
60
61
62
63
64
# File 'lib/elasticsearch/dsl/search/sort.rb', line 54

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

  @hash = @value.flatten
  @hash
end