Class: ElasticSearch::SearchRequest

Inherits:
Request
  • Object
show all
Defined in:
lib/jruby-elasticsearch/searchrequest.rb

Instance Method Summary collapse

Methods inherited from Request

#on, #use_callback

Constructor Details

#initialize(client) ⇒ SearchRequest

Returns a new instance of SearchRequest.



14
15
16
17
18
19
# File 'lib/jruby-elasticsearch/searchrequest.rb', line 14

def initialize(client)
  @client = client
  @prep = org.elasticsearch.client.action.search.SearchRequestBuilder.new(@client)
  @indeces = []
  super()
end

Instance Method Details

#execute(&block) ⇒ Object



40
41
42
43
44
45
# File 'lib/jruby-elasticsearch/searchrequest.rb', line 40

def execute(&block)
  use_callback(&block) if block_given?
  @prep.setIndices(@indeces.to_java(:String))
  action = @prep.execute(@handler)
  return action
end

#execute!Object



50
51
52
53
# File 'lib/jruby-elasticsearch/searchrequest.rb', line 50

def execute!
  @prep.setIndices(@indeces.to_java(:String))
  return @prep.execute.actionGet()
end

#from(from) ⇒ Object Also known as: offset



125
126
127
128
# File 'lib/jruby-elasticsearch/searchrequest.rb', line 125

def from(from)
  @prep.setFrom(from)
  return self
end

#histogram(field, interval, name = nil) ⇒ Object



90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/jruby-elasticsearch/searchrequest.rb', line 90

def histogram(field, interval, name=nil)
  if name.nil?
    # TODO(sissel): How do we expose the name of the histogram?
    name = "#{field}_#{interval}"
  end
  # TODO(sissel): Support 'global' ?
  builder = org.elasticsearch.search.facet.histogram.HistogramFacetBuilder.new(name)
  builder.field(field)
  builder.interval(interval)
  @prep.addFacet(builder)
  return self
end

#index(index_name) ⇒ Object



28
29
30
# File 'lib/jruby-elasticsearch/searchrequest.rb', line 28

def index(index_name)
  @indeces << index_name
end

#query(query_string, default_operator = :and) ⇒ Object



70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/jruby-elasticsearch/searchrequest.rb', line 70

def query(query_string, default_operator=:and)
  # TODO(sissel): allow doing other queries and such.
  qbuilder = QueryStringQueryBuilder.new(query_string)

  operator = QueryStringQueryBuilder::Operator
  case default_operator
    when :and
      qbuilder.defaultOperator(operator::AND)
    when :or
      qbuilder.defaultOperator(operator::OR)
    else
      raise "Unknown default operator '#{default_operator.inspect}'"
  end

  @prep.setQuery(qbuilder)
  return self
end

#size(s) ⇒ Object Also known as: count, limit



117
118
119
120
# File 'lib/jruby-elasticsearch/searchrequest.rb', line 117

def size(s)
  @prep.setSize(s)
  return self
end

#sort(field, order) ⇒ Object



56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/jruby-elasticsearch/searchrequest.rb', line 56

def sort(field, order)
  case order
    when :asc
      order_val = org.elasticsearch.search.sort.SortOrder::ASC
    when :desc
      order_val = org.elasticsearch.search.sort.SortOrder::DESC
    else
      raise "Invalid sort order '#{order.inspect}'"
  end
  @prep.addSort(field, order_val)
  return self
end

#terms(field, name = nil) ⇒ Object



104
105
106
107
108
109
110
111
112
113
114
# File 'lib/jruby-elasticsearch/searchrequest.rb', line 104

def terms(field, name=nil)
  if name.nil?
    # TODO(sissel): How do we expose the name of the histogram?
    name = field
  end
  # TODO(sissel): Support 'global' ?
  builder = org.elasticsearch.search.facet.terms.TermsFacetBuilder.new(name)
  builder.field(field)
  @prep.addFacet(builder)
  return self
end

#with(&block) ⇒ Object



22
23
24
25
# File 'lib/jruby-elasticsearch/searchrequest.rb', line 22

def with(&block)
  instance_eval(&block)
  return self
end