elastomer-client 2.3.0 → 3.0.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.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/.travis.yml +0 -4
- data/CHANGELOG.md +8 -0
- data/docker/docker-compose.cibuild.yml +8 -0
- data/docker/docker-compose.es24.yml +34 -0
- data/docker/docker-compose.es56.yml +37 -0
- data/docker/elasticsearch.yml +15 -0
- data/docs/index.md +2 -2
- data/docs/notifications.md +1 -1
- data/elastomer-client.gemspec +2 -0
- data/lib/elastomer/client.rb +86 -33
- data/lib/elastomer/client/app_delete_by_query.rb +158 -0
- data/lib/elastomer/client/delete_by_query.rb +8 -115
- data/lib/elastomer/client/docs.rb +63 -13
- data/lib/elastomer/client/errors.rb +10 -2
- data/lib/elastomer/client/index.rb +40 -12
- data/lib/elastomer/client/multi_percolate.rb +2 -2
- data/lib/elastomer/client/native_delete_by_query.rb +60 -0
- data/lib/elastomer/client/percolator.rb +6 -3
- data/lib/elastomer/client/scroller.rb +22 -7
- data/lib/elastomer/client/tasks.rb +188 -0
- data/lib/elastomer/client/warmer.rb +6 -0
- data/lib/elastomer/notifications.rb +1 -0
- data/lib/elastomer/version.rb +1 -1
- data/lib/elastomer/version_support.rb +177 -0
- data/script/cibuild +77 -6
- data/script/cibuild-elastomer-client +1 -0
- data/script/cibuild-elastomer-client-es24 +8 -0
- data/script/cibuild-elastomer-client-es56 +8 -0
- data/script/poll-for-es +20 -0
- data/test/client/{delete_by_query_test.rb → app_delete_by_query_test.rb} +7 -7
- data/test/client/bulk_test.rb +9 -13
- data/test/client/cluster_test.rb +2 -2
- data/test/client/docs_test.rb +133 -49
- data/test/client/errors_test.rb +21 -1
- data/test/client/es_5_x_warmer_test.rb +13 -0
- data/test/client/index_test.rb +104 -39
- data/test/client/multi_percolate_test.rb +13 -6
- data/test/client/multi_search_test.rb +5 -5
- data/test/client/native_delete_by_query_test.rb +123 -0
- data/test/client/nodes_test.rb +1 -1
- data/test/client/percolator_test.rb +10 -2
- data/test/client/repository_test.rb +1 -1
- data/test/client/scroller_test.rb +16 -6
- data/test/client/snapshot_test.rb +1 -1
- data/test/client/stubbed_client_test.rb +1 -1
- data/test/client/tasks_test.rb +139 -0
- data/test/client/template_test.rb +1 -1
- data/test/client/warmer_test.rb +8 -4
- data/test/client_test.rb +99 -0
- data/test/core_ext/time_test.rb +1 -1
- data/test/notifications_test.rb +4 -0
- data/test/test_helper.rb +129 -21
- data/test/version_support_test.rb +119 -0
- metadata +59 -5
data/script/cibuild
CHANGED
@@ -1,30 +1,101 @@
|
|
1
|
-
#!/bin/
|
1
|
+
#!/bin/bash
|
2
2
|
# Usage: script/cibuild
|
3
|
-
# CI build script
|
3
|
+
# CI build script
|
4
4
|
# This is tailored for the janky build machines.
|
5
|
-
|
5
|
+
|
6
|
+
set -ue
|
7
|
+
|
8
|
+
# Only echo the tags when in CI_MODE
|
9
|
+
begin_fold() {
|
10
|
+
local tag="$1"
|
11
|
+
if [ "${CI_MODE:-}" ]; then
|
12
|
+
echo "%%%FOLD {${tag}}%%%"
|
13
|
+
fi
|
14
|
+
}
|
15
|
+
|
16
|
+
# Only echo the tags when in CI_MODE
|
17
|
+
end_fold() {
|
18
|
+
if [ "${CI_MODE:-}" ]; then
|
19
|
+
echo "%%%END FOLD%%%"
|
20
|
+
fi
|
21
|
+
}
|
22
|
+
|
23
|
+
function cleanup() {
|
24
|
+
echo
|
25
|
+
begin_fold "Shutting down services..."
|
26
|
+
$docker_compose down -v
|
27
|
+
end_fold
|
28
|
+
}
|
29
|
+
|
30
|
+
# Borrowed from script/bintools in github/ci
|
31
|
+
output_fold() {
|
32
|
+
# Exit early if no label provided
|
33
|
+
if [ -z "$1" ]; then
|
34
|
+
echo "output_fold(): requires a label argument."
|
35
|
+
return
|
36
|
+
fi
|
37
|
+
|
38
|
+
exit_value=0 # exit_value is used to record exit status of the given command
|
39
|
+
label=$1 # human-readable label describing what's being folded up
|
40
|
+
shift 1 # having retrieved the output_fold()-specific arguments, strip them off $@
|
41
|
+
|
42
|
+
begin_fold "$label"
|
43
|
+
|
44
|
+
# run the remaining arguments. If the command exits non-0, the `||` will
|
45
|
+
# prevent the `-e` flag from seeing the failure exit code, and we'll see
|
46
|
+
# the second echo execute
|
47
|
+
"$@" || exit_value=$?
|
48
|
+
|
49
|
+
end_fold
|
50
|
+
|
51
|
+
# preserve the exit code from the subcommand.
|
52
|
+
return $exit_value
|
53
|
+
}
|
54
|
+
|
55
|
+
trap cleanup EXIT
|
56
|
+
|
57
|
+
export ES_PORT=${ES_PORT:-19200}
|
58
|
+
|
59
|
+
es_version=${ES_VERSION:-24}
|
60
|
+
docker_compose="docker-compose --file docker/docker-compose.es${es_version}.yml"
|
61
|
+
|
62
|
+
if [ "${CI_MODE:-}" ]; then
|
63
|
+
docker_compose="${docker_compose} --file docker/docker-compose.cibuild.yml"
|
64
|
+
# docker_compose="${docker_compose} --no-ansi"
|
65
|
+
fi
|
6
66
|
|
7
67
|
# change into root dir and setup path
|
8
68
|
cd $(dirname "$0")/..
|
9
69
|
PATH="$(pwd)/bin:$(pwd)/script:/usr/share/rbenv/shims:$PATH"
|
10
70
|
|
71
|
+
echo "hostname: $(hostname)"
|
72
|
+
|
11
73
|
# Write commit we're building at
|
12
|
-
git log -n 1 || true
|
74
|
+
output_fold "Commit info..." git log -n 1 || true
|
75
|
+
echo
|
76
|
+
|
77
|
+
output_fold "Bootstrapping container..." $docker_compose build
|
78
|
+
output_fold "Bringing up services..." $docker_compose up -d
|
79
|
+
output_fold "Waiting for Elasticsearch..." script/poll-for-es
|
13
80
|
echo
|
14
81
|
|
15
82
|
result=0
|
16
83
|
|
84
|
+
begin_fold "Ruby environment setup..."
|
17
85
|
export RBENV_VERSION="2.3.3"
|
18
86
|
if [ -d /usr/share/rbenv/shims ]; then
|
19
|
-
|
87
|
+
export PATH=/usr/share/rbenv/shims:$PATH
|
20
88
|
fi
|
21
89
|
ruby -v
|
22
90
|
rm -f Gemfile.lock
|
23
91
|
script/bootstrap
|
92
|
+
end_fold
|
93
|
+
echo
|
94
|
+
|
24
95
|
bundle exec rake test || result=$?
|
25
96
|
|
26
97
|
if [ $result -ne 0 ]; then
|
27
|
-
|
98
|
+
exit $result
|
28
99
|
fi
|
29
100
|
|
30
101
|
# echo
|
@@ -0,0 +1 @@
|
|
1
|
+
script/cibuild-elastomer-client-es24
|
data/script/poll-for-es
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
#
|
3
|
+
# This script will poll the Elasticsearch health endpoint until the cluster
|
4
|
+
# reaches a yellow state which is good enough for testing. This script will poll
|
5
|
+
# for up to 30 seconds waiting for Elasticsearch to start. It will give up at
|
6
|
+
# that time and return a non-zero exit code.
|
7
|
+
|
8
|
+
es_port=${ES_PORT:-9200}
|
9
|
+
count=0
|
10
|
+
|
11
|
+
until $(curl -s "localhost:${es_port}/_cluster/health?wait_for_status=yellow&timeout=30s" > /dev/null 2>&1); do
|
12
|
+
sleep 0.50
|
13
|
+
count=$(($count+1))
|
14
|
+
if [ "$count" -gt 60 ]; then
|
15
|
+
echo "Timed out waiting for Elasticsearch at localhost:${es_port}"
|
16
|
+
exit 1
|
17
|
+
fi
|
18
|
+
done
|
19
|
+
|
20
|
+
echo "Elasticsearch is ready at localhost:${es_port}"
|
@@ -1,6 +1,6 @@
|
|
1
|
-
|
1
|
+
require_relative "../test_helper"
|
2
2
|
|
3
|
-
describe Elastomer::Client::
|
3
|
+
describe Elastomer::Client::AppDeleteByQuery do
|
4
4
|
|
5
5
|
before do
|
6
6
|
@index = $client.index "elastomer-delete-by-query-test"
|
@@ -23,7 +23,7 @@ describe Elastomer::Client::DeleteByQuery do
|
|
23
23
|
@docs.index({ :_id => 1, :name => "luna" })
|
24
24
|
|
25
25
|
@index.refresh
|
26
|
-
response = @index.
|
26
|
+
response = @index.app_delete_by_query(nil, :q => "name:mittens")
|
27
27
|
assert_equal({
|
28
28
|
"_all" => {
|
29
29
|
"found" => 1,
|
@@ -50,7 +50,7 @@ describe Elastomer::Client::DeleteByQuery do
|
|
50
50
|
@docs.index({ :_id => 1, :name => "luna" })
|
51
51
|
@index.refresh
|
52
52
|
|
53
|
-
response = @index.
|
53
|
+
response = @index.app_delete_by_query(nil, :action_count => 1)
|
54
54
|
|
55
55
|
assert_requested(:post, /_bulk/, :times => 2)
|
56
56
|
|
@@ -95,7 +95,7 @@ describe Elastomer::Client::DeleteByQuery do
|
|
95
95
|
end)
|
96
96
|
|
97
97
|
@index.refresh
|
98
|
-
response = @index.
|
98
|
+
response = @index.app_delete_by_query(nil, :action_count => 1)
|
99
99
|
assert_equal({
|
100
100
|
"_all" => {
|
101
101
|
"found" => 0,
|
@@ -131,7 +131,7 @@ describe Elastomer::Client::DeleteByQuery do
|
|
131
131
|
end)
|
132
132
|
|
133
133
|
@index.refresh
|
134
|
-
response = @index.
|
134
|
+
response = @index.app_delete_by_query(nil, :action_count => 1)
|
135
135
|
assert_equal({
|
136
136
|
"_all" => {
|
137
137
|
"found" => 1,
|
@@ -160,7 +160,7 @@ describe Elastomer::Client::DeleteByQuery do
|
|
160
160
|
docs.index({ :_id => 1, :_routing => "cat", :name => "luna" })
|
161
161
|
|
162
162
|
index.refresh
|
163
|
-
response = index.
|
163
|
+
response = index.app_delete_by_query(nil, :q => "name:mittens")
|
164
164
|
assert_equal({
|
165
165
|
"_all" => {
|
166
166
|
"found" => 1,
|
data/test/client/bulk_test.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative "../test_helper"
|
2
2
|
|
3
3
|
describe Elastomer::Client::Bulk do
|
4
4
|
|
@@ -13,15 +13,15 @@ describe Elastomer::Client::Bulk do
|
|
13
13
|
:tweet => {
|
14
14
|
:_source => { :enabled => true }, :_all => { :enabled => false },
|
15
15
|
:properties => {
|
16
|
-
:message =>
|
17
|
-
:author =>
|
16
|
+
:message => $client.version_support.text(analyzer: "standard"),
|
17
|
+
:author => $client.version_support.keyword
|
18
18
|
}
|
19
19
|
},
|
20
20
|
:book => {
|
21
21
|
:_source => { :enabled => true }, :_all => { :enabled => false },
|
22
22
|
:properties => {
|
23
|
-
:title =>
|
24
|
-
:author =>
|
23
|
+
:title => $client.version_support.text(analyzer: "standard"),
|
24
|
+
:author => $client.version_support.keyword
|
25
25
|
}
|
26
26
|
}
|
27
27
|
}
|
@@ -89,16 +89,14 @@ describe Elastomer::Client::Bulk do
|
|
89
89
|
|
90
90
|
assert_equal 2, h["items"].length
|
91
91
|
|
92
|
-
if
|
92
|
+
if bulk_index_returns_create_for_new_documents?
|
93
93
|
assert_bulk_index h["items"].first
|
94
94
|
assert_bulk_create h["items"].last
|
95
95
|
book_id = items.last["create"]["_id"]
|
96
|
-
|
96
|
+
else
|
97
97
|
assert_bulk_index h["items"].first
|
98
98
|
assert_bulk_index h["items"].last
|
99
99
|
book_id = items.last["index"]["_id"]
|
100
|
-
else
|
101
|
-
fail "Unknown ES version!"
|
102
100
|
end
|
103
101
|
|
104
102
|
assert_match %r/^\S{20,22}$/, book_id
|
@@ -120,18 +118,16 @@ describe Elastomer::Client::Bulk do
|
|
120
118
|
|
121
119
|
assert_equal 2, h["items"].length
|
122
120
|
|
123
|
-
if
|
121
|
+
if bulk_index_returns_create_for_new_documents?
|
124
122
|
assert_bulk_create h["items"].first, "expected to create a book"
|
125
123
|
assert_bulk_delete h["items"].last, "expected to delete a book"
|
126
124
|
|
127
125
|
book_id2 = items.first["create"]["_id"]
|
128
|
-
|
126
|
+
else
|
129
127
|
assert_bulk_index h["items"].first, "expected to create a book"
|
130
128
|
assert_bulk_delete h["items"].last, "expected to delete a book"
|
131
129
|
|
132
130
|
book_id2 = items.first["index"]["_id"]
|
133
|
-
else
|
134
|
-
fail "Unknown ES version!"
|
135
131
|
end
|
136
132
|
|
137
133
|
assert_match %r/^\S{20,22}$/, book_id2
|
data/test/client/cluster_test.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative "../test_helper"
|
2
2
|
|
3
3
|
describe Elastomer::Client::Cluster do
|
4
4
|
|
@@ -69,7 +69,7 @@ describe Elastomer::Client::Cluster do
|
|
69
69
|
it "returns cluster stats" do
|
70
70
|
h = @cluster.stats
|
71
71
|
expected = %w[cluster_name indices nodes status timestamp]
|
72
|
-
expected.unshift("_nodes") if
|
72
|
+
expected.unshift("_nodes") if cluster_stats_includes_underscore_nodes?
|
73
73
|
assert_equal expected, h.keys.sort
|
74
74
|
end
|
75
75
|
|
data/test/client/docs_test.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative "../test_helper"
|
2
2
|
|
3
3
|
describe Elastomer::Client::Docs do
|
4
4
|
|
@@ -13,19 +13,24 @@ describe Elastomer::Client::Docs do
|
|
13
13
|
:doc1 => {
|
14
14
|
:_source => { :enabled => true }, :_all => { :enabled => false },
|
15
15
|
:properties => {
|
16
|
-
:title =>
|
17
|
-
:author =>
|
16
|
+
:title => $client.version_support.text(analyzer: "standard", term_vector: "with_positions_offsets"),
|
17
|
+
:author => $client.version_support.keyword
|
18
18
|
}
|
19
19
|
},
|
20
20
|
:doc2 => {
|
21
21
|
:_source => { :enabled => true }, :_all => { :enabled => false },
|
22
22
|
:properties => {
|
23
|
-
:title =>
|
24
|
-
:author =>
|
23
|
+
:title => $client.version_support.text(analyzer: "standard", term_vector: "with_positions_offsets"),
|
24
|
+
:author => $client.version_support.keyword
|
25
25
|
}
|
26
26
|
}
|
27
27
|
}
|
28
28
|
|
29
|
+
# COMPATIBILITY
|
30
|
+
if requires_percolator_mapping?
|
31
|
+
@index.update_mapping("percolator", { :properties => { :query => { :type => "percolator"}}})
|
32
|
+
end
|
33
|
+
|
29
34
|
wait_for_index(@name)
|
30
35
|
end
|
31
36
|
|
@@ -92,26 +97,81 @@ describe Elastomer::Client::Docs do
|
|
92
97
|
assert_match %r/^\S{20,22}$/, h["_id"]
|
93
98
|
end
|
94
99
|
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
100
|
+
describe "indexing directive fields" do
|
101
|
+
it "indexes fields that are not recognized as indexing directives" do
|
102
|
+
doc = {
|
103
|
+
_id: "12",
|
104
|
+
_type: "doc2",
|
105
|
+
title: "The Adventures of Huckleberry Finn",
|
106
|
+
author: "Mark Twain",
|
107
|
+
_unknown_1: "unknown attribute 1",
|
108
|
+
"_unknown_2" => "unknown attribute 2"
|
109
|
+
}
|
105
110
|
|
106
|
-
|
107
|
-
|
108
|
-
|
111
|
+
h = @docs.index(doc)
|
112
|
+
assert_created h
|
113
|
+
assert_equal "12", h["_id"]
|
114
|
+
|
115
|
+
indexed_doc = @docs.get(type: "doc2", id: "12")
|
116
|
+
expected = {
|
117
|
+
"title" => "The Adventures of Huckleberry Finn",
|
118
|
+
"author" => "Mark Twain",
|
119
|
+
"_unknown_1" => "unknown attribute 1",
|
120
|
+
"_unknown_2" => "unknown attribute 2"
|
121
|
+
}
|
122
|
+
assert_equal expected, indexed_doc["_source"]
|
123
|
+
end
|
124
|
+
|
125
|
+
it "extracts indexing directives from the document" do
|
126
|
+
doc = {
|
127
|
+
_id: "12",
|
128
|
+
"_type" => "doc2",
|
129
|
+
_routing: "author",
|
130
|
+
title: "The Adventures of Huckleberry Finn",
|
131
|
+
author: "Mark Twain"
|
132
|
+
}
|
133
|
+
|
134
|
+
h = @docs.index(doc)
|
135
|
+
assert_created h
|
136
|
+
assert_equal "12", h["_id"]
|
137
|
+
|
138
|
+
# Special keys are removed from the document hash
|
139
|
+
refute doc.key?(:_id)
|
140
|
+
refute doc.key?("_type")
|
141
|
+
refute doc.key?(:_routing)
|
142
|
+
|
143
|
+
indexed_doc = @docs.get(type: "doc2", id: "12")
|
144
|
+
expected = {
|
145
|
+
"title" => "The Adventures of Huckleberry Finn",
|
146
|
+
"author" => "Mark Twain",
|
147
|
+
}
|
148
|
+
assert_equal expected, indexed_doc["_source"]
|
149
|
+
end
|
109
150
|
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
151
|
+
# COMPATIBILITY: Fail fast on known indexing directives that aren't for this version of ES
|
152
|
+
it "raises an exception when a known indexing directive from an unsupported version is used" do
|
153
|
+
# Symbol keys
|
154
|
+
doc = {
|
155
|
+
_id: "12",
|
156
|
+
_type: "doc2",
|
157
|
+
title: "The Adventures of Huckleberry Finn"
|
158
|
+
}.merge(incompatible_indexing_directive)
|
159
|
+
|
160
|
+
assert_raises(Elastomer::Client::IllegalArgument) do
|
161
|
+
@docs.index(doc)
|
162
|
+
end
|
163
|
+
|
164
|
+
# String keys
|
165
|
+
doc = {
|
166
|
+
"_id" => "12",
|
167
|
+
"_type" => "doc2",
|
168
|
+
"title" => "The Adventures of Huckleberry Finn"
|
169
|
+
}.merge(incompatible_indexing_directive.stringify_keys)
|
170
|
+
|
171
|
+
assert_raises(Elastomer::Client::IllegalArgument) do
|
172
|
+
@docs.index(doc)
|
173
|
+
end
|
174
|
+
end
|
115
175
|
end
|
116
176
|
|
117
177
|
it "gets documents from the search index" do
|
@@ -214,33 +274,38 @@ describe Elastomer::Client::Docs do
|
|
214
274
|
assert_equal %w[pea53 grantr], authors
|
215
275
|
|
216
276
|
h = @docs.delete_by_query(:q => "author:grantr")
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
"
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
277
|
+
|
278
|
+
if supports_native_delete_by_query?
|
279
|
+
assert_equal(1, h["deleted"])
|
280
|
+
else
|
281
|
+
assert_equal(h["_indices"], {
|
282
|
+
"_all" => {
|
283
|
+
"found" => 1,
|
284
|
+
"deleted" => 1,
|
285
|
+
"missing" => 0,
|
286
|
+
"failed" => 0,
|
287
|
+
},
|
288
|
+
@name => {
|
289
|
+
"found" => 1,
|
290
|
+
"deleted" => 1,
|
291
|
+
"missing" => 0,
|
292
|
+
"failed" => 0,
|
293
|
+
},
|
294
|
+
})
|
295
|
+
end
|
296
|
+
|
231
297
|
@index.refresh
|
232
298
|
h = @docs.multi_get :ids => [1, 2]
|
233
299
|
assert_found h["docs"][0]
|
234
300
|
refute_found h["docs"][1]
|
235
301
|
|
236
302
|
h = @docs.delete_by_query(
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
)
|
303
|
+
:query => {
|
304
|
+
:bool => {
|
305
|
+
:filter => {:term => {:author => "pea53"}}
|
306
|
+
}
|
307
|
+
}
|
308
|
+
)
|
244
309
|
@index.refresh
|
245
310
|
h = @docs.multi_get :ids => [1, 2]
|
246
311
|
refute_found h["docs"][0]
|
@@ -261,7 +326,7 @@ describe Elastomer::Client::Docs do
|
|
261
326
|
|
262
327
|
h = @docs.search({
|
263
328
|
:query => {:match_all => {}},
|
264
|
-
:
|
329
|
+
:post_filter => {:term => {:author => "defunkt"}}
|
265
330
|
}, :type => %w[doc1 doc2] )
|
266
331
|
assert_equal 1, h["hits"]["total"]
|
267
332
|
|
@@ -302,8 +367,7 @@ describe Elastomer::Client::Docs do
|
|
302
367
|
|
303
368
|
h = @docs.count({
|
304
369
|
:query => {
|
305
|
-
:
|
306
|
-
:query => {:match_all => {}},
|
370
|
+
:bool => {
|
307
371
|
:filter => {:term => {:author => "defunkt"}}
|
308
372
|
}
|
309
373
|
}
|
@@ -340,8 +404,23 @@ describe Elastomer::Client::Docs do
|
|
340
404
|
:filter => {:term => {:author => "defunkt"}}
|
341
405
|
}
|
342
406
|
}
|
343
|
-
}, :type => %w[doc1 doc2]
|
344
|
-
|
407
|
+
}, :type => %w[doc1 doc2])
|
408
|
+
|
409
|
+
if filtered_query_removed?
|
410
|
+
refute h["valid"]
|
411
|
+
else
|
412
|
+
assert h["valid"]
|
413
|
+
end
|
414
|
+
|
415
|
+
h = @docs.validate({
|
416
|
+
:query => {
|
417
|
+
:bool => {
|
418
|
+
:filter => {:term => {:author => "defunkt"}}
|
419
|
+
}
|
420
|
+
}
|
421
|
+
}, :type => %w[doc1 doc2])
|
422
|
+
|
423
|
+
assert h["valid"]
|
345
424
|
end
|
346
425
|
|
347
426
|
it "updates documents" do
|
@@ -463,6 +542,7 @@ describe Elastomer::Client::Docs do
|
|
463
542
|
percolator2 = @index.percolator "2"
|
464
543
|
response = percolator2.create :query => { :match => { :author => "defunkt" } }
|
465
544
|
assert response["created"], "Couldn't create the percolator query"
|
545
|
+
@index.refresh
|
466
546
|
|
467
547
|
response = @index.docs("doc1").percolate(:doc => { :author => "pea53" })
|
468
548
|
assert_equal 1, response["matches"].length
|
@@ -478,6 +558,7 @@ describe Elastomer::Client::Docs do
|
|
478
558
|
percolator2 = @index.percolator "2"
|
479
559
|
response = percolator2.create :query => { :match => { :author => "defunkt" } }
|
480
560
|
assert response["created"], "Couldn't create the percolator query"
|
561
|
+
@index.refresh
|
481
562
|
|
482
563
|
response = @index.docs("doc2").percolate(nil, :id => "1")
|
483
564
|
assert_equal 1, response["matches"].length
|
@@ -493,6 +574,7 @@ describe Elastomer::Client::Docs do
|
|
493
574
|
percolator2 = @index.percolator "2"
|
494
575
|
response = percolator2.create :query => { :match => { :author => "defunkt" } }
|
495
576
|
assert response["created"], "Couldn't create the percolator query"
|
577
|
+
@index.refresh
|
496
578
|
|
497
579
|
count = @index.docs("doc1").percolate_count :doc => { :author => "pea53" }
|
498
580
|
assert_equal 1, count
|
@@ -507,6 +589,7 @@ describe Elastomer::Client::Docs do
|
|
507
589
|
percolator2 = @index.percolator "2"
|
508
590
|
response = percolator2.create :query => { :match => { :author => "defunkt" } }
|
509
591
|
assert response["created"], "Couldn't create the percolator query"
|
592
|
+
@index.refresh
|
510
593
|
|
511
594
|
count = @index.docs("doc2").percolate_count(nil, :id => "1")
|
512
595
|
assert_equal 1, count
|
@@ -515,6 +598,7 @@ describe Elastomer::Client::Docs do
|
|
515
598
|
it "performs multi percolate queries" do
|
516
599
|
@index.percolator("1").create :query => { :match_all => { } }
|
517
600
|
@index.percolator("2").create :query => { :match => { :author => "pea53" } }
|
601
|
+
@index.refresh
|
518
602
|
|
519
603
|
h = @index.docs("doc2").multi_percolate do |m|
|
520
604
|
m.percolate :author => "pea53"
|