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 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