arelastic 2.1.4 → 2.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d7dd07c79d390e3b2c840edaa9a075901818e0db63f9445b9df8be621a3f9128
4
- data.tar.gz: 0fcccd8fb4fa7c24d76749986a65a20697bb51d93992c90d2e4b37d3dbfeec32
3
+ metadata.gz: eecf4e946c5a80dbd67b631bc501c709f7f675a5cdf361fd1ca70720316e988f
4
+ data.tar.gz: 8cdb5255aabd05b3cebfbdaa2b14ee4bda3ed92f35165a6d6d263b823b1b6e79
5
5
  SHA512:
6
- metadata.gz: 72836ec160d987f8fc5d648c0b2f82f10bc9c92e3b16ed002f8c9be189e3566aed31869f9f9c6f47bebd3507457415b50851af6371279abe9e86f82b0ac519c7
7
- data.tar.gz: e1f8e296c26dacb529cd14858e06a2e69cd98af08261b3f62fe88c76bb86b0d46234145585925e7d30e72fa9ea23e98441d1cbac4d0121731dbe76dd51826868
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
- {name => as_elastic_aggregation}
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 as_elastic
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
@@ -2,7 +2,7 @@ module Arelastic
2
2
  module Aggregations
3
3
  class DateHistogram < Arelastic::Aggregations::Bucket
4
4
  def as_elastic_aggregation
5
- {'date_histogram' => options}
5
+ {'date_histogram' => options}.merge(super)
6
6
  end
7
7
  end
8
8
  end
@@ -9,7 +9,7 @@ module Arelastic
9
9
  end
10
10
 
11
11
  def as_elastic_aggregation
12
- {'filter' => convert_to_elastic(filter)}
12
+ {'filter' => convert_to_elastic(filter)}.merge(super)
13
13
  end
14
14
  end
15
15
  end
@@ -0,0 +1,9 @@
1
+ module Arelastic
2
+ module Aggregations
3
+ class Histogram < Arelastic::Aggregations::Bucket
4
+ def as_elastic_aggregation
5
+ {'histogram' => options}.merge(super)
6
+ end
7
+ end
8
+ end
9
+ end
@@ -9,7 +9,7 @@ module Arelastic
9
9
  end
10
10
 
11
11
  def as_elastic_aggregation
12
- { "nested" => { "path" => path } }
12
+ {"nested" => { "path" => path }}.merge(super)
13
13
  end
14
14
  end
15
15
  end
@@ -11,7 +11,7 @@ module Arelastic
11
11
  def as_elastic_aggregation
12
12
  params = path ? { "path" => path } : {}
13
13
 
14
- { "reverse_nested" => params }
14
+ {"reverse_nested" => params}.merge(super)
15
15
  end
16
16
  end
17
17
  end
@@ -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, shard_size: shard_size)
6
+ super(name, aggs: aggs)
7
+ @shard_size = shard_size
6
8
  end
7
9
 
8
10
  def as_elastic_aggregation
9
- { 'sampler' => { 'shard_size' => options[:shard_size] } }
11
+ {'sampler' => { 'shard_size' => shard_size}}.merge(super)
10
12
  end
11
13
  end
12
14
  end
@@ -2,7 +2,7 @@ module Arelastic
2
2
  module Aggregations
3
3
  class Terms < Arelastic::Aggregations::Bucket
4
4
  def as_elastic_aggregation
5
- {'terms' => options}
5
+ {'terms' => options}.merge(super)
6
6
  end
7
7
  end
8
8
  end
@@ -7,13 +7,25 @@ module Arelastic
7
7
  end
8
8
  end
9
9
 
10
- def terms options = {}
11
- Arelastic::Aggregations::Terms.new(name, options)
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.1.4
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-03-21 00:00:00.000000000 Z
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