arelastic 2.1.4 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/arelastic/aggregations/aggregation.rb +7 -6
- data/lib/arelastic/aggregations/bucket.rb +1 -5
- data/lib/arelastic/aggregations/date_histogram.rb +1 -1
- data/lib/arelastic/aggregations/filter.rb +1 -1
- data/lib/arelastic/aggregations/histogram.rb +9 -0
- data/lib/arelastic/aggregations/nested.rb +1 -1
- data/lib/arelastic/aggregations/reverse_nested.rb +1 -1
- data/lib/arelastic/aggregations/sampler.rb +4 -2
- data/lib/arelastic/aggregations/terms.rb +1 -1
- data/lib/arelastic/builders/aggregation.rb +14 -2
- data/test/arelastic/aggregations/aggregation_test.rb +13 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eecf4e946c5a80dbd67b631bc501c709f7f675a5cdf361fd1ca70720316e988f
|
4
|
+
data.tar.gz: 8cdb5255aabd05b3cebfbdaa2b14ee4bda3ed92f35165a6d6d263b823b1b6e79
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7be8e99832a66885f1a073b6001dc845d7a9ce1908376c9b4ca367715a18fc0353b89e7122a4c2e2e001322ad37fd25677396ebbd05af796e23b79a54f765a48
|
7
|
+
data.tar.gz: 57dcd466e35b9531536dd3b9e6ec12e039f7843ae98faa19b0f1fdc342ae22ef8996afb537555ee85af6f77ba4bd58436e68bcf766d81903c2c28e166e351b15
|
@@ -1,15 +1,20 @@
|
|
1
1
|
module Arelastic
|
2
2
|
module Aggregations
|
3
3
|
class Aggregation < Arelastic::Nodes::Node
|
4
|
-
attr_accessor :name, :options
|
4
|
+
attr_accessor :name, :meta, :options
|
5
5
|
|
6
6
|
def initialize(name, options = {})
|
7
7
|
@name = name
|
8
|
+
|
9
|
+
options = options.dup
|
10
|
+
@meta = read_option! options, 'meta'
|
8
11
|
@options = options
|
9
12
|
end
|
10
13
|
|
11
14
|
def as_elastic
|
12
|
-
|
15
|
+
params = as_elastic_aggregation
|
16
|
+
params['meta'] = meta if meta
|
17
|
+
{name => params}
|
13
18
|
end
|
14
19
|
|
15
20
|
def nested(path)
|
@@ -19,10 +24,6 @@ module Arelastic
|
|
19
24
|
def reverse_nested(path = nil)
|
20
25
|
Arelastic::Aggregations::ReverseNested.new(name, path, [self])
|
21
26
|
end
|
22
|
-
|
23
|
-
def as_elastic_aggregation
|
24
|
-
raise 'not implemented'
|
25
|
-
end
|
26
27
|
end
|
27
28
|
end
|
28
29
|
end
|
@@ -9,11 +9,7 @@ module Arelastic
|
|
9
9
|
super(name, options)
|
10
10
|
end
|
11
11
|
|
12
|
-
def
|
13
|
-
{name => as_elastic_aggregation.merge(sub_aggregations_as_elastic)}
|
14
|
-
end
|
15
|
-
|
16
|
-
def sub_aggregations_as_elastic
|
12
|
+
def as_elastic_aggregation
|
17
13
|
if aggs
|
18
14
|
{'aggs' => Arelastic::Nodes::HashGroup.new(aggs).as_elastic}
|
19
15
|
else
|
@@ -1,12 +1,14 @@
|
|
1
1
|
module Arelastic
|
2
2
|
module Aggregations
|
3
3
|
class Sampler < Bucket
|
4
|
+
attr_accessor :shard_size
|
4
5
|
def initialize(name, shard_size, aggs)
|
5
|
-
super(name, aggs: aggs
|
6
|
+
super(name, aggs: aggs)
|
7
|
+
@shard_size = shard_size
|
6
8
|
end
|
7
9
|
|
8
10
|
def as_elastic_aggregation
|
9
|
-
{
|
11
|
+
{'sampler' => { 'shard_size' => shard_size}}.merge(super)
|
10
12
|
end
|
11
13
|
end
|
12
14
|
end
|
@@ -7,13 +7,25 @@ module Arelastic
|
|
7
7
|
end
|
8
8
|
end
|
9
9
|
|
10
|
-
def
|
11
|
-
Arelastic::Aggregations::
|
10
|
+
def date_histogram options
|
11
|
+
Arelastic::Aggregations::DateHistogram.new name, options
|
12
|
+
end
|
13
|
+
|
14
|
+
def filter filter, options
|
15
|
+
Arelastic::Aggregations::Filter.new name, filter, options
|
12
16
|
end
|
13
17
|
|
14
18
|
def histogram options
|
15
19
|
Arelastic::Aggregations::Histogram.new name, options
|
16
20
|
end
|
21
|
+
|
22
|
+
def sample shard_size, aggs
|
23
|
+
Arelastic::Aggregations::Sampler.new(name, sample_size, aggs)
|
24
|
+
end
|
25
|
+
|
26
|
+
def terms options = {}
|
27
|
+
Arelastic::Aggregations::Terms.new(name, options)
|
28
|
+
end
|
17
29
|
end
|
18
30
|
end
|
19
31
|
end
|
@@ -11,7 +11,19 @@ class Arelastic::Aggregations::AggregationTest < Minitest::Test
|
|
11
11
|
def test_reverse_nested
|
12
12
|
aggregation = Arelastic::Aggregations::Min.new('smallest', 'field' => 'pets.weight').reverse_nested('pets')
|
13
13
|
|
14
|
-
expected = Arelastic::Aggregations::ReverseNested.new('smallest', 'pets', [aggregation])
|
14
|
+
expected = Arelastic::Aggregations::ReverseNested.new('smallest', 'pets', [aggregation])
|
15
15
|
assert_equal expected, aggregation.reverse_nested('pets')
|
16
16
|
end
|
17
|
+
|
18
|
+
def test_meta
|
19
|
+
aggregation = Arelastic::Aggregations::Min.new('smallest', 'field' => 'pets.weight', 'meta' => {'color' => 'blue'})
|
20
|
+
|
21
|
+
expected = {
|
22
|
+
"smallest" => {
|
23
|
+
"min" => {"field" => "pets.weight"},
|
24
|
+
"meta" => {"color" => "blue"}
|
25
|
+
},
|
26
|
+
}
|
27
|
+
assert_equal expected, aggregation.as_elastic
|
28
|
+
end
|
17
29
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arelastic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthew Higgins
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-04-21 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Build Elastic Search queries with objects
|
14
14
|
email: developer@matthewhiggins.com
|