elasticsearch-dsl 0.1.7 → 0.1.8
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/README.md +27 -24
- data/lib/elasticsearch/dsl.rb +1 -1
- data/lib/elasticsearch/dsl/search.rb +1 -1
- data/lib/elasticsearch/dsl/search/aggregation.rb +1 -1
- data/lib/elasticsearch/dsl/search/aggregations/composite.rb +60 -0
- data/lib/elasticsearch/dsl/search/aggregations/extended_stats.rb +1 -1
- data/lib/elasticsearch/dsl/search/aggregations/nested.rb +1 -1
- data/lib/elasticsearch/dsl/search/aggregations/range.rb +1 -1
- data/lib/elasticsearch/dsl/search/filter.rb +1 -1
- data/lib/elasticsearch/dsl/search/filters/bool.rb +4 -4
- data/lib/elasticsearch/dsl/search/filters/match_all.rb +1 -1
- data/lib/elasticsearch/dsl/search/filters/range.rb +1 -1
- data/lib/elasticsearch/dsl/search/filters/term.rb +1 -1
- data/lib/elasticsearch/dsl/search/highlight.rb +1 -1
- data/lib/elasticsearch/dsl/search/options.rb +1 -1
- data/lib/elasticsearch/dsl/search/queries/bool.rb +3 -3
- data/lib/elasticsearch/dsl/search/queries/geo_shape.rb +1 -1
- data/lib/elasticsearch/dsl/search/queries/match.rb +1 -1
- data/lib/elasticsearch/dsl/search/queries/match_all.rb +1 -1
- data/lib/elasticsearch/dsl/search/queries/query_string.rb +1 -1
- data/lib/elasticsearch/dsl/search/queries/range.rb +1 -1
- data/lib/elasticsearch/dsl/search/queries/term.rb +1 -1
- data/lib/elasticsearch/dsl/search/query.rb +1 -1
- data/lib/elasticsearch/dsl/search/sort.rb +1 -1
- data/lib/elasticsearch/dsl/search/suggest.rb +1 -1
- data/lib/elasticsearch/dsl/version.rb +1 -1
- data/spec/elasticsearch/dsl/search/aggregations/composite_spec.rb +99 -0
- data/spec/elasticsearch/dsl/search/filters/bool_spec.rb +50 -0
- data/spec/elasticsearch/dsl/search/queries/bool_spec.rb +58 -0
- data/test/integration/search_aggregation_children_test.rb +7 -9
- data/test/integration/search_aggregation_geo_test.rb +9 -11
- data/test/integration/search_aggregation_nested_test.rb +15 -16
- data/test/integration/search_aggregations_test.rb +7 -9
- data/test/integration/search_filters_test.rb +14 -16
- data/test/integration/search_options_test.rb +2 -2
- data/test/integration/search_query_test.rb +2 -2
- data/test/integration/search_size_from_test.rb +2 -2
- data/test/integration/search_sort_test.rb +3 -3
- data/test/integration/search_suggest_test.rb +13 -15
- data/test/integration/search_test.rb +3 -3
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5f1f7538a8ba72fb494c08161eaeea00b841efb6053eb9b640916082380e44d1
|
4
|
+
data.tar.gz: 8952342319cc9f742c8ad7c2be57d1b78a9025535a590f1b4b464a4e77f4cc4b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e845c2c5a586e8de9d7ef256305b4a9635c8f5278fbac3f22b3b512560366a25edefac398f9fdc8eba7fda84e6c67e79ce337e46b22a7f0491c486b00e62dfc2
|
7
|
+
data.tar.gz: 89628d179337835661ce4d671b4e7fcd56ee8cf92af8155a3a18bdbf8c3901e1791c9cfc427a55a1814b0c656598aca873a122c32a0fa423ea595ea6c86e3acf
|
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# Elasticsearch::DSL
|
2
2
|
|
3
3
|
The `elasticsearch-dsl` library provides a Ruby API for
|
4
|
-
the [Elasticsearch Query DSL](http://www.elasticsearch.
|
4
|
+
the [Elasticsearch Query DSL](http://www.elasticsearch.com/guide/en/elasticsearch/reference/current/query-dsl.html).
|
5
5
|
|
6
6
|
The library is compatible with Ruby 1.9 or higher and Elasticsearch 1.0 and higher.
|
7
7
|
|
@@ -26,7 +26,7 @@ or install it from a source code checkout:
|
|
26
26
|
|
27
27
|
The library is designed as a group of standalone Ruby modules, classes and DSL methods,
|
28
28
|
which provide an idiomatic way to build complex
|
29
|
-
[search definitions](http://www.elasticsearch.
|
29
|
+
[search definitions](http://www.elasticsearch.com/guide/en/elasticsearch/reference/current/search-request-body.html).
|
30
30
|
|
31
31
|
Let's have a simple example using the declarative variant:
|
32
32
|
|
@@ -100,20 +100,20 @@ which are translated to Hashes, and ultimately, JSON, the language of Elasticsea
|
|
100
100
|
|
101
101
|
All Elasticsearch DSL features are supported, namely:
|
102
102
|
|
103
|
-
* [Queries](
|
104
|
-
* [Filters](
|
105
|
-
* [Aggregations](
|
106
|
-
* [Suggestions](
|
107
|
-
* [Sorting](
|
108
|
-
* [Pagination](
|
109
|
-
* [Options](
|
103
|
+
* [Queries](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-queries.html)
|
104
|
+
* [Filters](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-filters.html)
|
105
|
+
* [Aggregations](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations.html)
|
106
|
+
* [Suggestions](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters.html)
|
107
|
+
* [Sorting](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-sort.html)
|
108
|
+
* [Pagination](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-from-size.html)
|
109
|
+
* [Options](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-body.html) (source filtering, highlighting, etc)
|
110
110
|
|
111
111
|
An example of a complex search definition is below.
|
112
112
|
|
113
113
|
**NOTE:** In order to run the example, you have to allow restoring from the `data.elasticsearch.org` repository by adding the following configuration line to your `elasticsearch.yml`:
|
114
114
|
|
115
115
|
```yaml
|
116
|
-
repositories.url.allowed_urls: ["https://s3.amazonaws.com/data.elasticsearch.
|
116
|
+
repositories.url.allowed_urls: ["https://s3.amazonaws.com/data.elasticsearch.com/*"]
|
117
117
|
```
|
118
118
|
|
119
119
|
```ruby
|
@@ -130,8 +130,8 @@ puts "Recovering the 'bicycles.stackexchange.com' index...".yellow
|
|
130
130
|
|
131
131
|
client.indices.delete index: 'bicycles.stackexchange.com', ignore: 404
|
132
132
|
|
133
|
-
client.snapshot.create_repository repository: 'data.elasticsearch.
|
134
|
-
client.snapshot.restore repository: 'data.elasticsearch.
|
133
|
+
client.snapshot.create_repository repository: 'data.elasticsearch.com', body: { type: 'url', settings: { url: 'https://s3.amazonaws.com/data.elasticsearch.com/bicycles.stackexchange.com/' } }
|
134
|
+
client.snapshot.restore repository: 'data.elasticsearch.com', snapshot: 'bicycles.stackexchange.com', body: { indices: 'bicycles.stackexchange.com' }
|
135
135
|
until client.cluster.health(level: 'indices')['indices']['bicycles.stackexchange.com']['status'] == 'green'
|
136
136
|
r = client.indices.recovery(index: 'bicycles.stackexchange.com', human: true)['bicycles.stackexchange.com']['shards'][0] rescue nil
|
137
137
|
print "\r#{r['index']['size']['recovered'] rescue '0b'} of #{r['index']['size']['total'] rescue 'N/A'}".ljust(52).gray
|
@@ -263,16 +263,19 @@ see instructions in the main [README](../README.md#development).
|
|
263
263
|
|
264
264
|
This software is licensed under the Apache 2 license, quoted below.
|
265
265
|
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
266
|
+
Licensed to Elasticsearch B.V. under one or more contributor
|
267
|
+
license agreements. See the NOTICE file distributed with
|
268
|
+
this work for additional information regarding copyright
|
269
|
+
ownership. Elasticsearch B.V. licenses this file to you under
|
270
|
+
the Apache License, Version 2.0 (the "License"); you may
|
271
|
+
not use this file except in compliance with the License.
|
270
272
|
You may obtain a copy of the License at
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
Unless required by applicable law or agreed to in writing,
|
275
|
-
distributed under the License is distributed on an
|
276
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
277
|
-
See the License for the
|
278
|
-
|
273
|
+
|
274
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
275
|
+
|
276
|
+
Unless required by applicable law or agreed to in writing,
|
277
|
+
software distributed under the License is distributed on an
|
278
|
+
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
279
|
+
KIND, either express or implied. See the License for the
|
280
|
+
specific language governing permissions and limitations
|
281
|
+
under the License.
|
data/lib/elasticsearch/dsl.rb
CHANGED
@@ -54,7 +54,7 @@ module Elasticsearch
|
|
54
54
|
# # => { query: { match: { title: "test"} } }
|
55
55
|
#
|
56
56
|
# @see Search
|
57
|
-
# @see
|
57
|
+
# @see https://www.elastic.co/guide/en/elasticsearch/guide/current/query-dsl-intro.html
|
58
58
|
#
|
59
59
|
module DSL
|
60
60
|
def self.included(base)
|
@@ -43,7 +43,7 @@ module Elasticsearch
|
|
43
43
|
# definition.to_hash
|
44
44
|
# # => {:query=>{:match=>{:title=>"test"}}}
|
45
45
|
#
|
46
|
-
# @see
|
46
|
+
# @see https://www.elastic.co/guide/en/elasticsearch/reference/current/search.html
|
47
47
|
#
|
48
48
|
def search(*args, &block)
|
49
49
|
Search.new(*args, &block)
|
@@ -31,7 +31,7 @@ module Elasticsearch
|
|
31
31
|
|
32
32
|
# Wraps the `aggregations` part of a search definition
|
33
33
|
#
|
34
|
-
# @see
|
34
|
+
# @see https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations.html
|
35
35
|
#
|
36
36
|
class Aggregation
|
37
37
|
def initialize(*args, &block)
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# Licensed to Elasticsearch B.V. under one or more contributor
|
2
|
+
# license agreements. See the NOTICE file distributed with
|
3
|
+
# this work for additional information regarding copyright
|
4
|
+
# ownership. Elasticsearch B.V. licenses this file to you under
|
5
|
+
# the Apache License, Version 2.0 (the "License"); you may
|
6
|
+
# not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing,
|
12
|
+
# software distributed under the License is distributed on an
|
13
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
14
|
+
# KIND, either express or implied. See the License for the
|
15
|
+
# specific language governing permissions and limitations
|
16
|
+
# under the License.
|
17
|
+
|
18
|
+
module Elasticsearch
|
19
|
+
module DSL
|
20
|
+
module Search
|
21
|
+
module Aggregations
|
22
|
+
#
|
23
|
+
# A multi-bucket aggregation that creates composite buckets from different sources.
|
24
|
+
#
|
25
|
+
# @example
|
26
|
+
#
|
27
|
+
# search do
|
28
|
+
# aggregation :things do
|
29
|
+
# composite do
|
30
|
+
# size 2000
|
31
|
+
# sources [
|
32
|
+
# { thing1: { terms: { field: 'thing1.field1' } } },
|
33
|
+
# { thing2: { terms: { field: 'thing2.field2' } } }
|
34
|
+
# ]
|
35
|
+
# after after_key
|
36
|
+
# end
|
37
|
+
# end
|
38
|
+
# end
|
39
|
+
#
|
40
|
+
# @see https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-composite-aggregation.html
|
41
|
+
#
|
42
|
+
class Composite
|
43
|
+
include BaseAggregationComponent
|
44
|
+
|
45
|
+
option_method :size
|
46
|
+
option_method :sources
|
47
|
+
option_method :after
|
48
|
+
|
49
|
+
def to_hash(_options={})
|
50
|
+
super
|
51
|
+
# remove :after if no value is given
|
52
|
+
@hash[name.to_sym].delete(:after) if @hash[name.to_sym].is_a?(Hash) && @hash[name.to_sym][:after].nil?
|
53
|
+
|
54
|
+
@hash
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -30,7 +30,7 @@ module Elasticsearch
|
|
30
30
|
# end
|
31
31
|
# end
|
32
32
|
#
|
33
|
-
# @see
|
33
|
+
# @see https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-extendedstats-aggregation.html
|
34
34
|
#
|
35
35
|
class ExtendedStats
|
36
36
|
include BaseComponent
|
@@ -37,7 +37,7 @@ module Elasticsearch
|
|
37
37
|
#
|
38
38
|
# See the integration test for a full example.
|
39
39
|
#
|
40
|
-
# @see
|
40
|
+
# @see https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-nested-aggregation.html
|
41
41
|
#
|
42
42
|
class Nested
|
43
43
|
include BaseAggregationComponent
|
@@ -47,7 +47,7 @@ module Elasticsearch
|
|
47
47
|
# end
|
48
48
|
# end
|
49
49
|
#
|
50
|
-
# @see
|
50
|
+
# @see https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-range-aggregation.html
|
51
51
|
class Range
|
52
52
|
include BaseAggregationComponent
|
53
53
|
|
@@ -25,7 +25,7 @@ module Elasticsearch
|
|
25
25
|
|
26
26
|
# Wraps the `filter` part of a search definition, aggregation, etc
|
27
27
|
#
|
28
|
-
# @see
|
28
|
+
# @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-filters.html
|
29
29
|
#
|
30
30
|
class Filter
|
31
31
|
def initialize(*args, &block)
|
@@ -52,28 +52,28 @@ module Elasticsearch
|
|
52
52
|
#
|
53
53
|
# See the integration test for a working example.
|
54
54
|
#
|
55
|
-
# @see
|
55
|
+
# @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-filter.html
|
56
56
|
#
|
57
57
|
class Bool
|
58
58
|
include BaseComponent
|
59
59
|
|
60
60
|
def must(*args, &block)
|
61
61
|
@hash[name][:must] ||= []
|
62
|
-
value = Filter.new(*args, &block).to_hash
|
62
|
+
value = args.empty? ? Filter.new(*args, &block).to_hash : args.first.to_hash
|
63
63
|
@hash[name][:must].push(value).flatten! unless @hash[name][:must].include?(value)
|
64
64
|
self
|
65
65
|
end
|
66
66
|
|
67
67
|
def must_not(*args, &block)
|
68
68
|
@hash[name][:must_not] ||= []
|
69
|
-
value = Filter.new(*args, &block).to_hash
|
69
|
+
value = args.empty? ? Filter.new(*args, &block).to_hash : args.first.to_hash
|
70
70
|
@hash[name][:must_not].push(value).flatten! unless @hash[name][:must_not].include?(value)
|
71
71
|
self
|
72
72
|
end
|
73
73
|
|
74
74
|
def should(*args, &block)
|
75
75
|
@hash[name][:should] ||= []
|
76
|
-
value = Filter.new(*args, &block).to_hash
|
76
|
+
value = args.empty? ? Filter.new(*args, &block).to_hash : args.first.to_hash
|
77
77
|
@hash[name][:should].push(value).flatten! unless @hash[name][:should].include?(value)
|
78
78
|
self
|
79
79
|
end
|
@@ -34,7 +34,7 @@ module Elasticsearch
|
|
34
34
|
# end
|
35
35
|
# end
|
36
36
|
#
|
37
|
-
# @see
|
37
|
+
# @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-all-filter.html
|
38
38
|
#
|
39
39
|
class MatchAll
|
40
40
|
include BaseComponent
|
@@ -37,7 +37,7 @@ module Elasticsearch
|
|
37
37
|
# end
|
38
38
|
# end
|
39
39
|
#
|
40
|
-
# @see
|
40
|
+
# @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-filter.html
|
41
41
|
#
|
42
42
|
class Range
|
43
43
|
include BaseComponent
|
@@ -37,7 +37,7 @@ module Elasticsearch
|
|
37
37
|
# @note The specified terms are *not analyzed* (lowercased, stemmed, etc),
|
38
38
|
# so they must match the indexed terms.
|
39
39
|
#
|
40
|
-
# @see
|
40
|
+
# @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-filter.html
|
41
41
|
#
|
42
42
|
class Term
|
43
43
|
include BaseComponent
|
@@ -21,7 +21,7 @@ module Elasticsearch
|
|
21
21
|
|
22
22
|
# Wraps the `highlight` part of a search definition
|
23
23
|
#
|
24
|
-
# @see
|
24
|
+
# @see https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-highlighting.html
|
25
25
|
#
|
26
26
|
class Highlight
|
27
27
|
include BaseComponent
|
@@ -21,7 +21,7 @@ module Elasticsearch
|
|
21
21
|
|
22
22
|
# Wraps the "extra" options of a search definition
|
23
23
|
#
|
24
|
-
# @see
|
24
|
+
# @see https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-body.html
|
25
25
|
#
|
26
26
|
class Options
|
27
27
|
DSL_METHODS = [
|
@@ -58,21 +58,21 @@ module Elasticsearch
|
|
58
58
|
|
59
59
|
def must(*args, &block)
|
60
60
|
@hash[name][:must] ||= []
|
61
|
-
value = Query.new(*args, &block).to_hash
|
61
|
+
value = args.empty? ? Query.new(*args, &block).to_hash : args.first.to_hash
|
62
62
|
@hash[name][:must].push(value).flatten! unless @hash[name][:must].include?(value)
|
63
63
|
self
|
64
64
|
end
|
65
65
|
|
66
66
|
def must_not(*args, &block)
|
67
67
|
@hash[name][:must_not] ||= []
|
68
|
-
value = Query.new(*args, &block).to_hash
|
68
|
+
value = args.empty? ? Query.new(*args, &block).to_hash : args.first.to_hash
|
69
69
|
@hash[name][:must_not].push(value).flatten! unless @hash[name][:must_not].include?(value)
|
70
70
|
self
|
71
71
|
end
|
72
72
|
|
73
73
|
def should(*args, &block)
|
74
74
|
@hash[name][:should] ||= []
|
75
|
-
value = Query.new(*args, &block).to_hash
|
75
|
+
value = args.empty? ? Query.new(*args, &block).to_hash : args.first.to_hash
|
76
76
|
@hash[name][:should].push(value).flatten! unless @hash[name][:should].include?(value)
|
77
77
|
self
|
78
78
|
end
|
@@ -33,7 +33,7 @@ module Elasticsearch
|
|
33
33
|
# end
|
34
34
|
# end
|
35
35
|
#
|
36
|
-
# @see
|
36
|
+
# @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-geo-shape-query.html
|
37
37
|
#
|
38
38
|
class GeoShape
|
39
39
|
include BaseComponent
|
@@ -34,7 +34,7 @@ module Elasticsearch
|
|
34
34
|
# end
|
35
35
|
# end
|
36
36
|
#
|
37
|
-
# @see
|
37
|
+
# @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query.html
|
38
38
|
#
|
39
39
|
class Match
|
40
40
|
include BaseComponent
|
@@ -30,7 +30,7 @@ module Elasticsearch
|
|
30
30
|
# end
|
31
31
|
# end
|
32
32
|
#
|
33
|
-
# @see
|
33
|
+
# @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-all-query.html
|
34
34
|
#
|
35
35
|
class MatchAll
|
36
36
|
include BaseComponent
|
@@ -33,7 +33,7 @@ module Elasticsearch
|
|
33
33
|
# end
|
34
34
|
# end
|
35
35
|
#
|
36
|
-
# @see
|
36
|
+
# @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html
|
37
37
|
# @see http://lucene.apache.org/core/2_9_4/queryparsersyntax.html
|
38
38
|
#
|
39
39
|
class QueryString
|
@@ -45,7 +45,7 @@ module Elasticsearch
|
|
45
45
|
# end
|
46
46
|
# end
|
47
47
|
#
|
48
|
-
# @see
|
48
|
+
# @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-query.html
|
49
49
|
#
|
50
50
|
class Range
|
51
51
|
include BaseComponent
|
@@ -32,7 +32,7 @@ module Elasticsearch
|
|
32
32
|
# end
|
33
33
|
# end
|
34
34
|
#
|
35
|
-
# @see
|
35
|
+
# @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html
|
36
36
|
#
|
37
37
|
class Term
|
38
38
|
include BaseComponent
|
@@ -25,7 +25,7 @@ module Elasticsearch
|
|
25
25
|
|
26
26
|
# Wraps the `query` part of a search definition
|
27
27
|
#
|
28
|
-
# @see
|
28
|
+
# @see https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.html
|
29
29
|
#
|
30
30
|
class Query
|
31
31
|
def initialize(*args, &block)
|
@@ -21,7 +21,7 @@ module Elasticsearch
|
|
21
21
|
|
22
22
|
# Wraps the `sort` part of a search definition
|
23
23
|
#
|
24
|
-
# @see
|
24
|
+
# @see https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-sort.html
|
25
25
|
#
|
26
26
|
class Sort
|
27
27
|
include BaseComponent
|
@@ -21,7 +21,7 @@ module Elasticsearch
|
|
21
21
|
|
22
22
|
# Wraps the `suggest` part of a search definition
|
23
23
|
#
|
24
|
-
# @see
|
24
|
+
# @see https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters.html
|
25
25
|
#
|
26
26
|
class Suggest
|
27
27
|
include BaseComponent
|
@@ -0,0 +1,99 @@
|
|
1
|
+
# Licensed to Elasticsearch B.V. under one or more contributor
|
2
|
+
# license agreements. See the NOTICE file distributed with
|
3
|
+
# this work for additional information regarding copyright
|
4
|
+
# ownership. Elasticsearch B.V. licenses this file to you under
|
5
|
+
# the Apache License, Version 2.0 (the "License"); you may
|
6
|
+
# not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing,
|
12
|
+
# software distributed under the License is distributed on an
|
13
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
14
|
+
# KIND, either express or implied. See the License for the
|
15
|
+
# specific language governing permissions and limitations
|
16
|
+
# under the License.
|
17
|
+
|
18
|
+
require 'spec_helper'
|
19
|
+
|
20
|
+
describe Elasticsearch::DSL::Search::Aggregations::Composite do
|
21
|
+
|
22
|
+
let(:search) do
|
23
|
+
described_class.new
|
24
|
+
end
|
25
|
+
|
26
|
+
describe '#to_hash' do
|
27
|
+
|
28
|
+
it 'can be converted to a hash' do
|
29
|
+
expect(search.to_hash).to eq(composite: {})
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context 'when options methods are called' do
|
34
|
+
|
35
|
+
let(:search) do
|
36
|
+
described_class.new(:foo)
|
37
|
+
end
|
38
|
+
|
39
|
+
describe '#size' do
|
40
|
+
|
41
|
+
before do
|
42
|
+
search.size(2_000)
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'applies the option' do
|
46
|
+
expect(search.to_hash[:composite][:foo][:size]).to eq(2_000)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe '#sources' do
|
51
|
+
|
52
|
+
before do
|
53
|
+
search.sources('bar')
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'applies the option' do
|
57
|
+
expect(search.to_hash[:composite][:foo][:sources]).to eq('bar')
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe '#after' do
|
62
|
+
context 'when after is not given' do
|
63
|
+
before do
|
64
|
+
search.size(2_000)
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'applies the option' do
|
68
|
+
expect(search.to_hash[:composite][:foo].keys).not_to include(:after)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
context 'when after is given' do
|
73
|
+
before do
|
74
|
+
search.after('fake_after_key')
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'applies the option' do
|
78
|
+
expect(search.to_hash[:composite][:foo][:after]).to eq('fake_after_key')
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
describe '#initialize' do
|
85
|
+
|
86
|
+
context 'when a block is provided' do
|
87
|
+
|
88
|
+
let(:search) do
|
89
|
+
described_class.new(:foo) do
|
90
|
+
size 2_000
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
it 'executes the block' do
|
95
|
+
expect(search.to_hash).to eq({ composite: { foo: { size: 2_000 } } })
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
@@ -32,6 +32,56 @@ describe Elasticsearch::DSL::Search::Filters::Bool do
|
|
32
32
|
|
33
33
|
describe '#initialize' do
|
34
34
|
|
35
|
+
context 'when an object instance is provided' do
|
36
|
+
|
37
|
+
let(:search) do
|
38
|
+
described_class.new.must( Elasticsearch::DSL::Search::Filters::Term.new foo: 'bar')
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'applies the condition' do
|
42
|
+
expect(search.to_hash).to eq(bool: { must: [ { term: { foo: 'bar' } } ] })
|
43
|
+
end
|
44
|
+
|
45
|
+
context 'when the block calls multiple methods' do
|
46
|
+
|
47
|
+
let(:search) do
|
48
|
+
described_class.new do
|
49
|
+
must(Elasticsearch::DSL::Search::Filters::Term.new foo: 'bar')
|
50
|
+
must_not(Elasticsearch::DSL::Search::Filters::Term.new moo: 'bam')
|
51
|
+
should(Elasticsearch::DSL::Search::Filters::Term.new xoo: 'bax')
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'executes the block' do
|
56
|
+
expect(search.to_hash).to eq(bool:
|
57
|
+
{ must: [ { term: { foo: 'bar' } } ],
|
58
|
+
must_not: [ { term: { moo: 'bam' } } ],
|
59
|
+
should: [ { term: { xoo: 'bax' } } ]
|
60
|
+
})
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
context 'when the block calls multiple conditions' do
|
65
|
+
|
66
|
+
let(:search) do
|
67
|
+
described_class.new do
|
68
|
+
must(Elasticsearch::DSL::Search::Filters::Term.new foo: 'bar')
|
69
|
+
must(Elasticsearch::DSL::Search::Filters::Term.new moo: 'bam')
|
70
|
+
|
71
|
+
should(Elasticsearch::DSL::Search::Filters::Term.new xoo: 'bax')
|
72
|
+
should(Elasticsearch::DSL::Search::Filters::Term.new zoo: 'baz')
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
it 'executes the block' do
|
77
|
+
expect(search.to_hash).to eq(bool:
|
78
|
+
{ must: [ { term: { foo: 'bar' } }, { term: { moo: 'bam' } } ],
|
79
|
+
should: [ { term: { xoo: 'bax' } }, { term: { zoo: 'baz' } } ]
|
80
|
+
})
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
35
85
|
context 'when a hash is provided' do
|
36
86
|
|
37
87
|
let(:search) do
|
@@ -32,6 +32,64 @@ describe Elasticsearch::DSL::Search::Queries::Bool do
|
|
32
32
|
|
33
33
|
describe '#initialize' do
|
34
34
|
|
35
|
+
context 'when an object instance is provided' do
|
36
|
+
|
37
|
+
let(:search) do
|
38
|
+
described_class.new.must(Elasticsearch::DSL::Search::Queries::Match.new foo: 'bar')
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'applies the condition' do
|
42
|
+
expect(search.to_hash).to eq(bool: {must: [ {match: { foo: 'bar' }} ] })
|
43
|
+
end
|
44
|
+
|
45
|
+
context 'when multiple option methods are called' do
|
46
|
+
|
47
|
+
let(:search) do
|
48
|
+
described_class.new do
|
49
|
+
should(Elasticsearch::DSL::Search::Queries::Term.new(tag: 'wow'))
|
50
|
+
should(Elasticsearch::DSL::Search::Queries::Term.new(tag: 'elasticsearch'))
|
51
|
+
|
52
|
+
minimum_should_match 1
|
53
|
+
boost 1.0
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'defines all the options' do
|
58
|
+
expect(search.to_hash).to eq(bool: {
|
59
|
+
minimum_should_match: 1,
|
60
|
+
boost: 1.0,
|
61
|
+
should: [ {term: { tag: 'wow' }}, {term: { tag: 'elasticsearch' }} ]})
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
context 'when multiple conditions are provided' do
|
66
|
+
|
67
|
+
let(:search) do
|
68
|
+
described_class.new do
|
69
|
+
must(Elasticsearch::DSL::Search::Queries::Match.new foo: 'bar')
|
70
|
+
must(Elasticsearch::DSL::Search::Queries::Match.new moo: 'bam')
|
71
|
+
|
72
|
+
should(Elasticsearch::DSL::Search::Queries::Match.new xoo: 'bax')
|
73
|
+
should(Elasticsearch::DSL::Search::Queries::Match.new zoo: 'baz')
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'applies each condition' do
|
78
|
+
expect(search.to_hash).to eq(bool:
|
79
|
+
{ must: [ {match: { foo: 'bar' }}, {match: { moo: 'bam' }} ],
|
80
|
+
should: [ {match: { xoo: 'bax' }}, {match: { zoo: 'baz' }} ]
|
81
|
+
})
|
82
|
+
end
|
83
|
+
|
84
|
+
context 'when #to_hash is called more than once' do
|
85
|
+
|
86
|
+
it 'does not alter the hash' do
|
87
|
+
expect(search.to_hash).to eq(search.to_hash)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
35
93
|
context 'when a block is provided' do
|
36
94
|
|
37
95
|
let(:search) do
|
@@ -29,16 +29,14 @@ module Elasticsearch
|
|
29
29
|
|
30
30
|
setup do
|
31
31
|
@client.indices.create index: 'articles-and-comments', body: {
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
}
|
32
|
+
mappings: {
|
33
|
+
properties: {
|
34
|
+
title: {type: 'text'},
|
35
|
+
category: {type: 'keyword'},
|
36
|
+
join_field: {type: 'join', relations: {article: 'comment'}},
|
37
|
+
author: {type: 'keyword'}
|
38
|
+
}
|
40
39
|
}
|
41
|
-
}
|
42
40
|
}
|
43
41
|
|
44
42
|
@client.index index: 'articles-and-comments', id: 1,
|
@@ -29,23 +29,21 @@ module Elasticsearch
|
|
29
29
|
|
30
30
|
setup do
|
31
31
|
@client.indices.create index: 'venues-test', body: {
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
}
|
32
|
+
mappings: {
|
33
|
+
properties: {
|
34
|
+
location: {type: 'geo_point'}
|
35
|
+
}
|
37
36
|
}
|
38
|
-
}
|
39
37
|
}
|
40
|
-
@client.index index: 'venues-test',
|
38
|
+
@client.index index: 'venues-test',
|
41
39
|
body: { name: 'Space', location: "38.886214,1.403889" }
|
42
|
-
@client.index index: 'venues-test',
|
40
|
+
@client.index index: 'venues-test',
|
43
41
|
body: { name: 'Pacha', location: "38.9184427,1.4433646" }
|
44
|
-
@client.index index: 'venues-test',
|
42
|
+
@client.index index: 'venues-test',
|
45
43
|
body: { name: 'Amnesia', location: "38.948045,1.408341" }
|
46
|
-
@client.index index: 'venues-test',
|
44
|
+
@client.index index: 'venues-test',
|
47
45
|
body: { name: 'Privilege', location: "38.958082,1.408288" }
|
48
|
-
@client.index index: 'venues-test',
|
46
|
+
@client.index index: 'venues-test',
|
49
47
|
body: { name: 'Es Paradis', location: "38.979071,1.307394" }
|
50
48
|
@client.indices.refresh index: 'venues-test'
|
51
49
|
end
|
@@ -29,31 +29,30 @@ module Elasticsearch
|
|
29
29
|
|
30
30
|
setup do
|
31
31
|
@client.indices.create index: 'products-test', body: {
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
32
|
+
mappings: {
|
33
|
+
properties: {
|
34
|
+
title: {type: 'text'},
|
35
|
+
category: {type: 'keyword'},
|
36
|
+
offers: {
|
37
|
+
type: 'nested',
|
38
|
+
properties: {
|
39
|
+
name: {type: 'text'},
|
40
|
+
price: {type: 'double'}
|
41
|
+
}
|
42
|
+
}
|
43
43
|
}
|
44
|
-
}
|
45
44
|
}
|
46
|
-
}
|
47
45
|
}
|
48
|
-
|
46
|
+
|
47
|
+
@client.index index: 'products-test',
|
49
48
|
body: { title: 'A',
|
50
49
|
category: 'audio',
|
51
50
|
offers: [ { name: 'A1', price: 100 }, { name: 'A2', price: 120 } ] }
|
52
|
-
@client.index index: 'products-test',
|
51
|
+
@client.index index: 'products-test',
|
53
52
|
body: { title: 'B',
|
54
53
|
category: 'audio',
|
55
54
|
offers: [ { name: 'B1', price: 200 }, { name: 'B2', price: 180 } ] }
|
56
|
-
@client.index index: 'products-test',
|
55
|
+
@client.index index: 'products-test',
|
57
56
|
body: { title: 'C',
|
58
57
|
category: 'video',
|
59
58
|
offers: [ { name: 'C1', price: 300 }, { name: 'C2', price: 350 } ] }
|
@@ -25,17 +25,15 @@ module Elasticsearch
|
|
25
25
|
context "Aggregations integration" do
|
26
26
|
setup do
|
27
27
|
@client.indices.create index: 'test', body: {
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
}
|
28
|
+
mappings: {
|
29
|
+
properties: {
|
30
|
+
tags: {type: 'keyword'}
|
31
|
+
}
|
33
32
|
}
|
34
|
-
}
|
35
33
|
}
|
36
|
-
@client.index index: 'test',
|
37
|
-
@client.index index: 'test',
|
38
|
-
@client.index index: 'test',
|
34
|
+
@client.index index: 'test', id: '1', body: { title: 'A', tags: %w[one], clicks: 5 }
|
35
|
+
@client.index index: 'test', id: '2', body: { title: 'B', tags: %w[one two], clicks: 15 }
|
36
|
+
@client.index index: 'test', id: '3', body: { title: 'C', tags: %w[one three], clicks: 20 }
|
39
37
|
@client.indices.refresh index: 'test'
|
40
38
|
end
|
41
39
|
|
@@ -31,49 +31,49 @@ module Elasticsearch
|
|
31
31
|
|
32
32
|
setup do
|
33
33
|
@client.indices.create index: 'test'
|
34
|
-
@client.index index: 'test',
|
34
|
+
@client.index index: 'test', id: 1,
|
35
35
|
body: { name: 'Original',
|
36
36
|
color: 'red',
|
37
37
|
size: 'xxl',
|
38
38
|
category: 'unisex',
|
39
39
|
manufacturer: 'a' }
|
40
40
|
|
41
|
-
@client.index index: 'test',
|
41
|
+
@client.index index: 'test', id: 2,
|
42
42
|
body: { name: 'Original',
|
43
43
|
color: 'red',
|
44
44
|
size: 'xl',
|
45
45
|
category: 'unisex',
|
46
46
|
manufacturer: 'a' }
|
47
47
|
|
48
|
-
@client.index index: 'test',
|
48
|
+
@client.index index: 'test', id: 3,
|
49
49
|
body: { name: 'Original',
|
50
50
|
color: 'red',
|
51
51
|
size: 'l',
|
52
52
|
category: 'unisex',
|
53
53
|
manufacturer: 'a' }
|
54
54
|
|
55
|
-
@client.index index: 'test',
|
55
|
+
@client.index index: 'test', id: 4,
|
56
56
|
body: { name: 'Western',
|
57
57
|
color: 'red',
|
58
58
|
size: 'm',
|
59
59
|
category: 'men',
|
60
60
|
manufacturer: 'c' }
|
61
61
|
|
62
|
-
@client.index index: 'test',
|
62
|
+
@client.index index: 'test', id: 5,
|
63
63
|
body: { name: 'Modern',
|
64
64
|
color: 'grey',
|
65
65
|
size: 'l',
|
66
66
|
category: 'men',
|
67
67
|
manufacturer: 'b' }
|
68
68
|
|
69
|
-
@client.index index: 'test',
|
69
|
+
@client.index index: 'test', id: 6,
|
70
70
|
body: { name: 'Modern',
|
71
71
|
color: 'grey',
|
72
72
|
size: 's',
|
73
73
|
category: 'men',
|
74
74
|
manufacturer: 'b' }
|
75
75
|
|
76
|
-
@client.index index: 'test',
|
76
|
+
@client.index index: 'test', id: 7,
|
77
77
|
body: { name: 'Modern',
|
78
78
|
color: 'grey',
|
79
79
|
size: 's',
|
@@ -152,21 +152,19 @@ module Elasticsearch
|
|
152
152
|
context "geographical filters" do
|
153
153
|
setup do
|
154
154
|
@client.indices.create index: 'places', body: {
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
155
|
+
mappings: {
|
156
|
+
properties: {
|
157
|
+
location: {
|
158
|
+
type: 'geo_point'
|
159
|
+
}
|
160
160
|
}
|
161
|
-
}
|
162
161
|
}
|
163
|
-
}
|
164
162
|
}
|
165
|
-
@client.index index: 'places',
|
163
|
+
@client.index index: 'places', id: 1,
|
166
164
|
body: { name: 'Vyšehrad',
|
167
165
|
location: '50.064399, 14.420018'}
|
168
166
|
|
169
|
-
@client.index index: 'places',
|
167
|
+
@client.index index: 'places', id: 2,
|
170
168
|
body: { name: 'Karlštejn',
|
171
169
|
location: '49.939518, 14.188046'}
|
172
170
|
|
@@ -25,8 +25,8 @@ module Elasticsearch
|
|
25
25
|
context "Search options" do
|
26
26
|
setup do
|
27
27
|
@client.indices.create index: 'test'
|
28
|
-
@client.index index: 'test',
|
29
|
-
@client.index index: 'test',
|
28
|
+
@client.index index: 'test', id: '1', body: { title: 'Test' }
|
29
|
+
@client.index index: 'test', id: '2', body: { title: 'Rest' }
|
30
30
|
@client.indices.refresh index: 'test'
|
31
31
|
end
|
32
32
|
|
@@ -29,8 +29,8 @@ module Elasticsearch
|
|
29
29
|
|
30
30
|
setup do
|
31
31
|
@client.indices.create index: 'test'
|
32
|
-
@client.index index: 'test',
|
33
|
-
@client.index index: 'test',
|
32
|
+
@client.index index: 'test', id: '1', body: { title: 'Test', tags: ['one'] }
|
33
|
+
@client.index index: 'test', id: '2', body: { title: 'Rest', tags: ['one', 'two'] }
|
34
34
|
@client.indices.refresh index: 'test'
|
35
35
|
end
|
36
36
|
|
@@ -25,9 +25,9 @@ module Elasticsearch
|
|
25
25
|
context "Search results pagination" do
|
26
26
|
setup do
|
27
27
|
@client.indices.create index: 'test', body: {
|
28
|
-
mappings: {
|
28
|
+
mappings: { properties: { title: { type: 'text', fields: { keyword: { type: 'keyword' } } } } } }
|
29
29
|
|
30
|
-
25.times { |i| @client.index index: 'test',
|
30
|
+
25.times { |i| @client.index index: 'test', id: i, body: { title: "Test #{sprintf('%03d', i)}" } }
|
31
31
|
|
32
32
|
@client.indices.refresh index: 'test'
|
33
33
|
end
|
@@ -29,9 +29,9 @@ module Elasticsearch
|
|
29
29
|
|
30
30
|
setup do
|
31
31
|
@client.indices.create index: 'test'
|
32
|
-
@client.index index: 'test',
|
33
|
-
@client.index index: 'test',
|
34
|
-
@client.index index: 'test',
|
32
|
+
@client.index index: 'test', id: '1', body: { tags: ['one'], clicks: 15 }
|
33
|
+
@client.index index: 'test', id: '2', body: { tags: ['one', 'two'], clicks: 5 }
|
34
|
+
@client.index index: 'test', id: '3', body: { tags: ['one', 'three'], clicks: 20 }
|
35
35
|
@client.indices.refresh index: 'test'
|
36
36
|
end
|
37
37
|
|
@@ -31,37 +31,35 @@ module Elasticsearch
|
|
31
31
|
|
32
32
|
setup do
|
33
33
|
@client.indices.create index: 'test', body: {
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
34
|
+
mappings: {
|
35
|
+
properties: {
|
36
|
+
title: {type: 'text'},
|
37
|
+
suggest: {
|
38
|
+
type: 'object',
|
39
|
+
properties: {
|
40
|
+
title: {type: 'completion'},
|
41
|
+
payload: {type: 'object', enabled: false}
|
42
|
+
}
|
43
|
+
}
|
44
44
|
}
|
45
|
-
}
|
46
45
|
}
|
47
|
-
}
|
48
46
|
}
|
49
47
|
|
50
|
-
@client.index index: 'test',
|
48
|
+
@client.index index: 'test', id: '1', body: {
|
51
49
|
title: 'One',
|
52
50
|
suggest: {
|
53
51
|
title: { input: ['one', 'uno', 'jedna'] },
|
54
52
|
payload: { id: '1' }
|
55
53
|
}
|
56
54
|
}
|
57
|
-
@client.index index: 'test',
|
55
|
+
@client.index index: 'test', id: '2', body: {
|
58
56
|
title: 'Two',
|
59
57
|
suggest: {
|
60
58
|
title: { input: ['two', 'due', 'dvě'] },
|
61
59
|
payload: { id: '2' }
|
62
60
|
}
|
63
61
|
}
|
64
|
-
@client.index index: 'test',
|
62
|
+
@client.index index: 'test', id: '3', body: {
|
65
63
|
title: 'Three',
|
66
64
|
suggest: {
|
67
65
|
title: { input: ['three', 'tres', 'tři'] },
|
@@ -56,9 +56,9 @@ module Elasticsearch
|
|
56
56
|
|
57
57
|
setup do
|
58
58
|
@client.indices.create index: 'test'
|
59
|
-
@client.index index: 'test',
|
60
|
-
@client.index index: 'test',
|
61
|
-
@client.index index: 'test',
|
59
|
+
@client.index index: 'test', id: '1', body: { title: 'Test', tags: ['one'] }
|
60
|
+
@client.index index: 'test', id: '2', body: { title: 'Test', tags: ['one', 'two'] }
|
61
|
+
@client.index index: 'test', id: '3', body: { title: 'Test', tags: ['three'] }
|
62
62
|
@client.indices.refresh index: 'test'
|
63
63
|
end
|
64
64
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: elasticsearch-dsl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Karel Minarik
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-06-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -214,6 +214,7 @@ files:
|
|
214
214
|
- lib/elasticsearch/dsl/search/aggregations/avg.rb
|
215
215
|
- lib/elasticsearch/dsl/search/aggregations/cardinality.rb
|
216
216
|
- lib/elasticsearch/dsl/search/aggregations/children.rb
|
217
|
+
- lib/elasticsearch/dsl/search/aggregations/composite.rb
|
217
218
|
- lib/elasticsearch/dsl/search/aggregations/date_histogram.rb
|
218
219
|
- lib/elasticsearch/dsl/search/aggregations/date_range.rb
|
219
220
|
- lib/elasticsearch/dsl/search/aggregations/extended_stats.rb
|
@@ -333,6 +334,7 @@ files:
|
|
333
334
|
- spec/elasticsearch/dsl/search/aggregations/avg_spec.rb
|
334
335
|
- spec/elasticsearch/dsl/search/aggregations/cardinality_spec.rb
|
335
336
|
- spec/elasticsearch/dsl/search/aggregations/children_spec.rb
|
337
|
+
- spec/elasticsearch/dsl/search/aggregations/composite_spec.rb
|
336
338
|
- spec/elasticsearch/dsl/search/aggregations/date_histogram_spec.rb
|
337
339
|
- spec/elasticsearch/dsl/search/aggregations/date_range_spec.rb
|
338
340
|
- spec/elasticsearch/dsl/search/aggregations/extended_stats_spec.rb
|
@@ -484,7 +486,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
484
486
|
- !ruby/object:Gem::Version
|
485
487
|
version: '0'
|
486
488
|
requirements: []
|
487
|
-
rubygems_version: 3.0.
|
489
|
+
rubygems_version: 3.0.3
|
488
490
|
signing_key:
|
489
491
|
specification_version: 4
|
490
492
|
summary: A Ruby DSL builder for Elasticsearch
|
@@ -492,6 +494,7 @@ test_files:
|
|
492
494
|
- spec/elasticsearch/dsl/search/aggregations/avg_spec.rb
|
493
495
|
- spec/elasticsearch/dsl/search/aggregations/cardinality_spec.rb
|
494
496
|
- spec/elasticsearch/dsl/search/aggregations/children_spec.rb
|
497
|
+
- spec/elasticsearch/dsl/search/aggregations/composite_spec.rb
|
495
498
|
- spec/elasticsearch/dsl/search/aggregations/date_histogram_spec.rb
|
496
499
|
- spec/elasticsearch/dsl/search/aggregations/date_range_spec.rb
|
497
500
|
- spec/elasticsearch/dsl/search/aggregations/extended_stats_spec.rb
|