elastic_searchable 1.2.2 → 1.3.0
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.
@@ -111,7 +111,7 @@ module ElasticSearchable
|
|
111
111
|
# see http://www.elasticsearch.org/guide/reference/api/index_.html
|
112
112
|
def reindex(lifecycle = nil)
|
113
113
|
query = {}
|
114
|
-
query
|
114
|
+
query[:percolate] = "*" if _percolate_callbacks.any?
|
115
115
|
response = ElasticSearchable.request :put, self.class.index_type_path(self.id), :query => query, :json_body => self.as_json_for_index
|
116
116
|
|
117
117
|
self.index_lifecycle = lifecycle ? lifecycle.to_sym : nil
|
@@ -136,8 +136,10 @@ module ElasticSearchable
|
|
136
136
|
# can be done on transient/non-persisted objects!
|
137
137
|
# can be done automatically when indexing using :percolate => true config option
|
138
138
|
# http://www.elasticsearch.org/blog/2011/02/08/percolator.html
|
139
|
-
def percolate
|
140
|
-
|
139
|
+
def percolate(percolator_query = nil)
|
140
|
+
body = {:doc => self.as_json_for_index}
|
141
|
+
body[:query] = percolator_query if percolator_query
|
142
|
+
response = ElasticSearchable.request :get, self.class.index_type_path('_percolate'), :json_body => body
|
141
143
|
self.percolations = response['matches'] || []
|
142
144
|
self.percolations
|
143
145
|
end
|
@@ -325,11 +325,9 @@ class TestElasticSearchable < Test::Unit::TestCase
|
|
325
325
|
should 'have set mapping' do
|
326
326
|
@status = ElasticSearchable.request :get, '/elastic_searchable/users/_mapping'
|
327
327
|
expected = {
|
328
|
-
"
|
329
|
-
"name"=> {"type"=>"string", "index"=>"not_analyzed"}
|
330
|
-
}
|
328
|
+
"name"=> {"type"=>"string", "index"=>"not_analyzed"}
|
331
329
|
}
|
332
|
-
assert_equal expected, @status['users'], @status.inspect
|
330
|
+
assert_equal expected, @status['users']['properties'], @status.inspect
|
333
331
|
end
|
334
332
|
end
|
335
333
|
end
|
@@ -417,6 +415,29 @@ class TestElasticSearchable < Test::Unit::TestCase
|
|
417
415
|
assert_equal ['myfilter'], @matches
|
418
416
|
end
|
419
417
|
end
|
418
|
+
context "with multiple percolators" do
|
419
|
+
setup do
|
420
|
+
ElasticSearchable.request :put, '/_percolator/elastic_searchable/greenfilter', :json_body => { :color => 'green', :query => {:query_string => {:query => 'foo' }}}
|
421
|
+
ElasticSearchable.request :put, '/_percolator/elastic_searchable/bluefilter', :json_body => { :color => 'blue', :query => {:query_string => {:query => 'foo' }}}
|
422
|
+
ElasticSearchable.request :post, '/_percolator/_refresh'
|
423
|
+
end
|
424
|
+
context 'percolating a non-persisted object with no limitation' do
|
425
|
+
setup do
|
426
|
+
@matches = Book.new(:title => 'foo').percolate
|
427
|
+
end
|
428
|
+
should 'return all percolated matches' do
|
429
|
+
assert_equal ['bluefilter','greenfilter','myfilter'], @matches.sort
|
430
|
+
end
|
431
|
+
end
|
432
|
+
context 'percolating a non-persisted object with limitations' do
|
433
|
+
setup do
|
434
|
+
@matches = Book.new(:title => 'foo').percolate( { :term => { :color => 'green' }} )
|
435
|
+
end
|
436
|
+
should 'return limited percolated matches' do
|
437
|
+
assert_equal ['greenfilter'], @matches
|
438
|
+
end
|
439
|
+
end
|
440
|
+
end
|
420
441
|
end
|
421
442
|
end
|
422
443
|
end
|
metadata
CHANGED
@@ -5,9 +5,9 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 1.
|
8
|
+
- 3
|
9
|
+
- 0
|
10
|
+
version: 1.3.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Ryan Sonnek
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-11-
|
18
|
+
date: 2011-11-16 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: activerecord
|