arelastic 3.1.0 → 3.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: b92131dd2729b5be9ad302a31d33db3482ecc47dee0b97681b3cca050cf627ba
4
- data.tar.gz: d2c3fa9dc8ffe7c8f1c268c030964f23281b15dcba1655bc845d6c5ce8a91862
3
+ metadata.gz: '0984b722326d3ec3a60b11114a249eba54399ba4a28a5f05635ec3c6570b16dc'
4
+ data.tar.gz: 7f4451aa328ab073bc7aa66818bcb98b28ac6d2354c8d086213fdad1a441532d
5
5
  SHA512:
6
- metadata.gz: 3e1e3bbdb544e0ee9b39b8c48100339e4340a0adf5985c5a524187ca7758798f596fdf2f7fb3ed221a5334f9f882e037d740267fa29a5cd434c3c13c015fdc3c
7
- data.tar.gz: 7e3578aa3af4ca0efb60fe148a0cd611144d76c9e18b5a78623f43778b3b792e5987a8745dde2e175002e50a4781227bf86500f72716efab76b26387392a4337
6
+ metadata.gz: 01d68d3d7669ab860e232fdb6723b70460ddb103e2c8a4b3d4597a49d090b24da4ef25f3a6a847ee76e459e00b8b6f983499216aa9aa672bef80fe0141913af1
7
+ data.tar.gz: 1a866d2a4b7129a7b59c44ed7c030748937f70bd0539afe9ed45fb6e10ca6a672d1fa4795672b5b9569b34c327764a8a1c798572e49090ebd017a631370430e9
@@ -1,22 +1,8 @@
1
1
  module Arelastic
2
2
  module Aggregations
3
3
  class BucketSelector < Arelastic::Aggregations::Aggregation
4
- attr_accessor :script_params, :script
5
-
6
- def initialize(name, options = {})
7
- options = options.dup
8
- @script_params = read_option! options, 'script_params'
9
- @script = read_option! options, 'script'
10
- super(name, options)
11
- end
12
-
13
4
  def as_elastic_aggregation
14
- {
15
- 'bucket_selector' => {
16
- 'buckets_path' => script_params,
17
- 'script' => script
18
- }
19
- }
5
+ { 'bucket_selector' => options }
20
6
  end
21
7
  end
22
8
  end
@@ -1,37 +1,18 @@
1
1
  module Arelastic
2
2
  module Aggregations
3
3
  class BucketSort < Arelastic::Aggregations::Aggregation
4
- attr_accessor :from, :size, :sort
4
+ attr_accessor :sort
5
5
 
6
6
  def initialize(name, options = {})
7
- options = options.dup
8
- @from = read_option! options, 'from'
9
- @size = read_option! options, 'size'
7
+ super
10
8
  @sort = read_option! options, 'sort'
11
- super(name, options)
12
9
  end
13
10
 
14
11
  def as_elastic_aggregation
15
- bucket_sort = {}
16
- bucket_sort['sort'] = parse_sort if sort
17
- bucket_sort['from'] = from if from
18
- bucket_sort['size'] = size if size
19
- { 'bucket_sort' => bucket_sort }
12
+ params = options
13
+ params = params.merge('sort' => convert_to_elastic(sort)) if sort
14
+ { 'bucket_sort' => params }
20
15
  end
21
-
22
- private
23
-
24
- def parse_sort
25
- if sort.is_a?(Hash)
26
- sort.map { |bucket_path, order| { bucket_path => order } }
27
- elsif sort.is_a?(String)
28
- [sort]
29
- elsif sort.is_a?(Array)
30
- sort
31
- else
32
- raise TypeError.new('Expecting a hash, string, or array as the "sort" argument')
33
- end
34
- end
35
16
  end
36
17
  end
37
18
  end
@@ -1,22 +1,22 @@
1
- require 'helper'
1
+ require "helper"
2
2
 
3
3
  class Arelastic::Aggregations::BucketSelectorTest < Minitest::Test
4
4
  def test_as_elastic
5
- aggregation = Arelastic::Aggregations::BucketSelector.new('foo_agg',
6
- script_params: {
7
- 'foo_bucket' => 'foo_bucket_path',
8
- 'bar_bucket' => 'bar_bucket_path'
5
+ aggregation = Arelastic::Aggregations::BucketSelector.new("foo_agg",
6
+ "buckets_path" => {
7
+ "foo_bucket" => "foo_bucket_path",
8
+ "bar_bucket" => "bar_bucket_path"
9
9
  },
10
- script: "params.foo_bucket > 10 && params.bar_bucket < 100"
10
+ "script" => "params.foo_bucket > 10 && params.bar_bucket < 100"
11
11
  )
12
12
  expected = {
13
- 'foo_agg' => {
14
- 'bucket_selector' => {
15
- 'buckets_path' => {
16
- 'foo_bucket' => 'foo_bucket_path',
17
- 'bar_bucket' => 'bar_bucket_path'
13
+ "foo_agg" => {
14
+ "bucket_selector" => {
15
+ "buckets_path" => {
16
+ "foo_bucket" => "foo_bucket_path",
17
+ "bar_bucket" => "bar_bucket_path"
18
18
  },
19
- 'script' => 'params.foo_bucket > 10 && params.bar_bucket < 100'
19
+ "script" => "params.foo_bucket > 10 && params.bar_bucket < 100"
20
20
  }
21
21
  }
22
22
  }
@@ -1,25 +1,45 @@
1
- require 'helper'
1
+ require "helper"
2
2
 
3
3
  class Arelastic::Aggregations::BucketSortTest < Minitest::Test
4
- def test_parse_sort
5
- assert_equal ['foo'], parse_sort('foo')
6
- assert_equal [{'foo' => 'desc'}, {'bar' => 'asc'}], parse_sort({'foo' => 'desc', 'bar' => 'asc'})
4
+ def test_as_elastic
5
+ aggregation = Arelastic::Aggregations::BucketSort.new("foo_agg", "size" => 3, "from" => 5, "sort" => "price")
6
+
7
+ expected = {
8
+ "foo_agg" => {
9
+ "bucket_sort" => {
10
+ "sort" => "price",
11
+ "from" => 5,
12
+ "size" => 3
13
+ }
14
+ }
15
+ }
16
+ assert_equal expected, aggregation.as_elastic
7
17
  end
8
18
 
9
- def test_size_and_from
10
- aggregation = Arelastic::Aggregations::BucketSort.new('foo_agg', 'size' => 3, 'from' => 5)
19
+ def test_arelastic_sort
20
+ sort = Arelastic::Sorts::Field.new("price" => "desc")
21
+ aggregation = Arelastic::Aggregations::BucketSort.new("foo_agg", "sort" => sort)
22
+
11
23
  expected = {
12
- 'foo_agg' => {
13
- 'bucket_sort' => {
14
- 'from' => 5,
15
- 'size' => 3
24
+ "foo_agg" => {
25
+ "bucket_sort" => {
26
+ "sort" => {"price" => "desc"}
16
27
  }
17
28
  }
18
29
  }
19
30
  assert_equal expected, aggregation.as_elastic
20
31
  end
21
32
 
22
- def parse_sort(sort)
23
- Arelastic::Aggregations::BucketSort.new('foosort', sort: sort).as_elastic['foosort']['bucket_sort']['sort']
33
+ def test_optional_sort
34
+ aggregation = Arelastic::Aggregations::BucketSort.new("foo_agg", "size" => 3)
35
+
36
+ expected = {
37
+ "foo_agg" => {
38
+ "bucket_sort" => {
39
+ "size" => 3
40
+ }
41
+ }
42
+ }
43
+ assert_equal expected, aggregation.as_elastic
24
44
  end
25
45
  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: 3.1.0
4
+ version: 3.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: 2021-05-24 00:00:00.000000000 Z
11
+ date: 2021-05-28 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Build Elastic Search queries with objects
14
14
  email: developer@matthewhiggins.com