jruby-elasticsearch 0.0.3 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,7 @@
|
|
1
1
|
require "java"
|
2
2
|
require "jruby-elasticsearch/namespace"
|
3
3
|
require "jruby-elasticsearch/indexrequest"
|
4
|
+
require "jruby-elasticsearch/searchrequest"
|
4
5
|
|
5
6
|
class ElasticSearch::Client
|
6
7
|
def initialize
|
@@ -43,6 +44,25 @@ class ElasticSearch::Client
|
|
43
44
|
return indexreq
|
44
45
|
end # def index
|
45
46
|
|
47
|
+
# Search for data.
|
48
|
+
# If a block is given, it is passed to SearchRequest#with so you can
|
49
|
+
# more easily configure the search, like so:
|
50
|
+
#
|
51
|
+
# search = client.search("foo") do
|
52
|
+
# query("*")
|
53
|
+
# histogram("field", 1000)
|
54
|
+
# end
|
55
|
+
#
|
56
|
+
# The context of the block is of the SearchRequest object.
|
57
|
+
public
|
58
|
+
def search(&block)
|
59
|
+
searchreq = ElasticSearch::SearchRequest.new(@client)
|
60
|
+
if block_given?
|
61
|
+
searchreq.with(&block)
|
62
|
+
end
|
63
|
+
return searchreq
|
64
|
+
end # def search
|
65
|
+
|
46
66
|
def cluster
|
47
67
|
return @client.admin.cluster
|
48
68
|
end
|
@@ -0,0 +1,96 @@
|
|
1
|
+
require "jruby-elasticsearch/namespace"
|
2
|
+
require "jruby-elasticsearch/request"
|
3
|
+
|
4
|
+
class ElasticSearch::SearchRequest < ElasticSearch::Request
|
5
|
+
# Create a new index request.
|
6
|
+
public
|
7
|
+
def initialize(client)
|
8
|
+
@client = client
|
9
|
+
@prep = org.elasticsearch.client.action.search.SearchRequestBuilder.new(@client)
|
10
|
+
@indeces = []
|
11
|
+
super()
|
12
|
+
end # def initialize
|
13
|
+
|
14
|
+
public
|
15
|
+
def with(&block)
|
16
|
+
instance_eval(&block)
|
17
|
+
return self
|
18
|
+
end # def with
|
19
|
+
|
20
|
+
public
|
21
|
+
def index(index_name)
|
22
|
+
@indeces << index_name
|
23
|
+
end
|
24
|
+
|
25
|
+
# Execute this search request.
|
26
|
+
# This call is asynchronous.
|
27
|
+
#
|
28
|
+
# If a block is given, register it for both failure and success.
|
29
|
+
#
|
30
|
+
# On success, callback will receive a
|
31
|
+
# org.elasticsearch.action.search.SearchResponse
|
32
|
+
public
|
33
|
+
def execute(&block)
|
34
|
+
use_callback(&block) if block_given?
|
35
|
+
@prep.setIndices(@indeces) if !@indeces.empty?
|
36
|
+
|
37
|
+
action = @prep.execute(@handler)
|
38
|
+
return action
|
39
|
+
end # def execute
|
40
|
+
|
41
|
+
# Execute this index request synchronously
|
42
|
+
# Returns an org.elasticsearch.action.search.SearchResponse
|
43
|
+
public
|
44
|
+
def execute!
|
45
|
+
return @prep.execute.actionGet()
|
46
|
+
end # def execute!
|
47
|
+
|
48
|
+
public
|
49
|
+
def sort(field, order)
|
50
|
+
case order
|
51
|
+
when :asc
|
52
|
+
order_val = org.elasticsearch.search.sort.SortOrder::ASC
|
53
|
+
when :desc
|
54
|
+
order_val = org.elasticsearch.search.sort.SortOrder::DESC
|
55
|
+
else
|
56
|
+
raise "Invalid sort order '#{order.inspect}'"
|
57
|
+
end
|
58
|
+
@prep.addSort(field, order_val)
|
59
|
+
return self
|
60
|
+
end # def sort
|
61
|
+
|
62
|
+
public
|
63
|
+
def query(query_string)
|
64
|
+
# TODO(sissel): allow doing other queries and such.
|
65
|
+
qbuilder = org.elasticsearch.index.query.xcontent.QueryStringQueryBuilder.new(query_string)
|
66
|
+
@prep.setQuery(qbuilder)
|
67
|
+
return self
|
68
|
+
end # def query
|
69
|
+
|
70
|
+
# Add a histogram facet to this query. Can be invoked multiple times.
|
71
|
+
public
|
72
|
+
def histogram(field, interval, name=nil)
|
73
|
+
if name.nil?
|
74
|
+
# TODO(sissel): How do we expose the name of the histogram?
|
75
|
+
name = "#{field}_#{interval}"
|
76
|
+
end
|
77
|
+
# TODO(sissel): Support 'global' ?
|
78
|
+
builder = org.elasticsearch.search.facet.histogram.HistogramFacetBuilder.new(name)
|
79
|
+
builder.field(field)
|
80
|
+
builder.interval(interval)
|
81
|
+
@prep.addFacet(builder)
|
82
|
+
return self
|
83
|
+
end # def histogram
|
84
|
+
|
85
|
+
public
|
86
|
+
def limit(size)
|
87
|
+
@prep.setSize(size)
|
88
|
+
return self
|
89
|
+
end
|
90
|
+
|
91
|
+
public
|
92
|
+
def offset(from)
|
93
|
+
@prep.setFrom(from)
|
94
|
+
return self
|
95
|
+
end
|
96
|
+
end # class ElasticSearch::SearchRequest
|
metadata
CHANGED
@@ -1,26 +1,22 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jruby-elasticsearch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 0
|
8
|
-
- 3
|
9
|
-
version: 0.0.3
|
4
|
+
prerelease:
|
5
|
+
version: 0.0.5
|
10
6
|
platform: ruby
|
11
7
|
authors:
|
12
|
-
|
8
|
+
- Jordan Sissel
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
12
|
|
17
|
-
date: 2011-
|
13
|
+
date: 2011-03-26 00:00:00 -07:00
|
18
14
|
default_executable:
|
19
15
|
dependencies: []
|
20
16
|
|
21
17
|
description: ...
|
22
18
|
email:
|
23
|
-
|
19
|
+
- jls@semicomplete.com
|
24
20
|
executables: []
|
25
21
|
|
26
22
|
extensions: []
|
@@ -28,44 +24,41 @@ extensions: []
|
|
28
24
|
extra_rdoc_files: []
|
29
25
|
|
30
26
|
files:
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
27
|
+
- lib/jruby-elasticsearch.rb
|
28
|
+
- lib/jruby-elasticsearch/searchrequest.rb
|
29
|
+
- lib/jruby-elasticsearch/namespace.rb
|
30
|
+
- lib/jruby-elasticsearch/bulkrequest.rb
|
31
|
+
- lib/jruby-elasticsearch/actionlistener.rb
|
32
|
+
- lib/jruby-elasticsearch/request.rb
|
33
|
+
- lib/jruby-elasticsearch/indexrequest.rb
|
34
|
+
- lib/jruby-elasticsearch/client.rb
|
35
|
+
- lib/jruby-elasticsearch/bulkstream.rb
|
39
36
|
has_rdoc: true
|
40
37
|
homepage: https://github.com/jordansissel/jruby-elasticsearch
|
41
38
|
licenses:
|
42
|
-
|
39
|
+
- Apache License (2.0)
|
43
40
|
post_install_message:
|
44
41
|
rdoc_options: []
|
45
42
|
|
46
43
|
require_paths:
|
47
|
-
|
48
|
-
|
44
|
+
- lib
|
45
|
+
- lib
|
49
46
|
required_ruby_version: !ruby/object:Gem::Requirement
|
50
47
|
none: false
|
51
48
|
requirements:
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
- 0
|
56
|
-
version: "0"
|
49
|
+
- - ">="
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: "0"
|
57
52
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
58
53
|
none: false
|
59
54
|
requirements:
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
- 0
|
64
|
-
version: "0"
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: "0"
|
65
58
|
requirements: []
|
66
59
|
|
67
60
|
rubyforge_project:
|
68
|
-
rubygems_version: 1.
|
61
|
+
rubygems_version: 1.6.0
|
69
62
|
signing_key:
|
70
63
|
specification_version: 3
|
71
64
|
summary: JRuby API for ElasticSearch using the native ES Java API
|