elasticsearch-dsl 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -3
  3. data/elasticsearch-dsl.gemspec +5 -1
  4. data/lib/elasticsearch/dsl/search.rb +1 -1
  5. data/lib/elasticsearch/dsl/search/aggregations/missing.rb +36 -0
  6. data/lib/elasticsearch/dsl/search/aggregations/pipeline/avg_bucket.rb +34 -0
  7. data/lib/elasticsearch/dsl/search/aggregations/pipeline/bucket_script.rb +36 -0
  8. data/lib/elasticsearch/dsl/search/aggregations/pipeline/bucket_selector.rb +35 -0
  9. data/lib/elasticsearch/dsl/search/aggregations/pipeline/cumulative_sum.rb +33 -0
  10. data/lib/elasticsearch/dsl/search/aggregations/pipeline/derivative.rb +34 -0
  11. data/lib/elasticsearch/dsl/search/aggregations/pipeline/extended_stats_bucket.rb +34 -0
  12. data/lib/elasticsearch/dsl/search/aggregations/pipeline/max_bucket.rb +34 -0
  13. data/lib/elasticsearch/dsl/search/aggregations/pipeline/min_bucket.rb +34 -0
  14. data/lib/elasticsearch/dsl/search/aggregations/pipeline/moving_avg.rb +42 -0
  15. data/lib/elasticsearch/dsl/search/aggregations/pipeline/percentiles_bucket.rb +36 -0
  16. data/lib/elasticsearch/dsl/search/aggregations/pipeline/serial_diff.rb +36 -0
  17. data/lib/elasticsearch/dsl/search/aggregations/pipeline/stats_bucket.rb +34 -0
  18. data/lib/elasticsearch/dsl/search/aggregations/pipeline/sum_bucket.rb +34 -0
  19. data/lib/elasticsearch/dsl/search/queries/bool.rb +10 -0
  20. data/lib/elasticsearch/dsl/search/sort.rb +11 -2
  21. data/lib/elasticsearch/dsl/version.rb +1 -1
  22. data/test/integration/search_test.rb +60 -0
  23. data/test/unit/aggregations/missing_test.rb +39 -0
  24. data/test/unit/aggregations/pipeline/avg_bucket_test.rb +39 -0
  25. data/test/unit/aggregations/pipeline/bucket_script_test.rb +39 -0
  26. data/test/unit/aggregations/pipeline/bucket_selector_test.rb +38 -0
  27. data/test/unit/aggregations/pipeline/cumulative_sum_test.rb +37 -0
  28. data/test/unit/aggregations/pipeline/derivative_test.rb +39 -0
  29. data/test/unit/aggregations/pipeline/extended_stats_bucket_test.rb +38 -0
  30. data/test/unit/aggregations/pipeline/max_bucket_test.rb +38 -0
  31. data/test/unit/aggregations/pipeline/min_bucket_test.rb +38 -0
  32. data/test/unit/aggregations/pipeline/moving_avg_test.rb +41 -0
  33. data/test/unit/aggregations/pipeline/percentiles_bucket_test.rb +39 -0
  34. data/test/unit/aggregations/pipeline/serial_diff_test.rb +39 -0
  35. data/test/unit/aggregations/pipeline/stats_bucket_test.rb +38 -0
  36. data/test/unit/aggregations/pipeline/sum_bucket_test.rb +38 -0
  37. data/test/unit/queries/bool_test.rb +9 -0
  38. data/test/unit/search_sort_test.rb +25 -0
  39. data/test/unit/search_test.rb +34 -0
  40. metadata +50 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c2037d3abda2b5b40dab3cd2618751d20c0fcc06
4
- data.tar.gz: b31c3b77ac4628ea87e96f85b9e06b2f8a592b91
3
+ metadata.gz: 5e9bb408fa97be4d12b615340b7fa44090287e08
4
+ data.tar.gz: d4c70bf0fcc2864c11226855c471dc921d23687c
5
5
  SHA512:
6
- metadata.gz: 8c7b217d8851ccb1f90263a48f05dff3517dca17d57296acbb750d2fd5232f35c7ed8f6cd5e060e6a30eb93937975c03c04dacd85006ca9fbe9827478471fab8
7
- data.tar.gz: 1c8efb817f44b4ce94d08c56aaa43b4eb74b6a348e2b55582d70a3325f437271a1bb602c7fec4a5d0e4124ab3d2987fb2176b9aa34ad95c4ed1f8b9f37f76c28
6
+ metadata.gz: b0cdfe1bfb6786cffd3610c4fd9687fb86baf6b51c49d0282d867ebb4cf91fbd0aaa1c0594a572e01ad0ca34a2ce5fc56feff1761a319943fead579a1f4d1628
7
+ data.tar.gz: d721ec3d8824fff4598984d0292c07df508134d431264fe51a54404dec837e45de2d7ccb2fa4a6c07faf5000ee4842693ed80e344fb59118566c4b4895cae115
data/README.md CHANGED
@@ -110,9 +110,11 @@ All Elasticsearch DSL features are supported, namely:
110
110
 
111
111
  An example of a complex search definition is below.
112
112
 
113
- **NOTE:** In order to run the example, you have to allow restoring from the `data.elasticsearch.org`
114
- repository by adding this configuration to your `elasticsearch.yml`:
115
- `repositories.url.allowed_urls: ["https://s3.amazonaws.com/data.elasticsearch.org/*"]`
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
+
115
+ ```yaml
116
+ repositories.url.allowed_urls: ["https://s3.amazonaws.com/data.elasticsearch.org/*"]
117
+ ```
116
118
 
117
119
  ```ruby
118
120
  require 'awesome_print'
@@ -22,7 +22,7 @@ Gem::Specification.new do |s|
22
22
  s.rdoc_options = [ "--charset=UTF-8" ]
23
23
 
24
24
  s.add_development_dependency "bundler", "~> 1.3"
25
- s.add_development_dependency "rake"
25
+ s.add_development_dependency "rake", "~> 11.1"
26
26
 
27
27
  s.add_development_dependency "elasticsearch"
28
28
  s.add_development_dependency "elasticsearch-extensions"
@@ -37,4 +37,8 @@ Gem::Specification.new do |s|
37
37
  s.add_development_dependency 'yard'
38
38
  s.add_development_dependency 'cane'
39
39
  s.add_development_dependency 'pry'
40
+
41
+ if defined?(RUBY_VERSION) && RUBY_VERSION > '2.2'
42
+ s.add_development_dependency "test-unit", '~> 2'
43
+ end
40
44
  end
@@ -39,7 +39,7 @@ module Elasticsearch
39
39
 
40
40
  def initialize(*args, &block)
41
41
  @options = Options.new *args
42
- instance_eval(&block) if block
42
+ block.arity < 1 ? self.instance_eval(&block) : block.call(self) if block
43
43
  end
44
44
 
45
45
  # DSL method for building or accessing the `query` part of a search definition
@@ -0,0 +1,36 @@
1
+ module Elasticsearch
2
+ module DSL
3
+ module Search
4
+ module Aggregations
5
+
6
+ # A single bucket aggregation that creates a bucket of all documents
7
+ # which are missing a value for the field
8
+ #
9
+ # @example Passing the options as a Hash
10
+ #
11
+ # aggregation :articles_without_tags do
12
+ # missing field: 'tags'
13
+ # end
14
+ #
15
+ # @example Passing the options as a block
16
+ #
17
+ # search do
18
+ # aggregation :articles_without_tags do
19
+ # missing do
20
+ # field 'tags'
21
+ # end
22
+ # end
23
+ # end
24
+ #
25
+ # @see https://www.elastic.co/guide/en/elasticsearch/reference/master/search-aggregations-bucket-missing-aggregation.html
26
+ #
27
+ class Missing
28
+ include BaseAggregationComponent
29
+
30
+ option_method :field
31
+ end
32
+
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,34 @@
1
+ module Elasticsearch
2
+ module DSL
3
+ module Search
4
+ module Aggregations
5
+
6
+ # A sibling pipeline aggregation which calculates the (mean) average value of a specified metric in a sibling aggregation.
7
+ #
8
+ # @example Passing the options as a Hash
9
+ #
10
+ # aggregation :avg_monthly_sales do
11
+ # avg_bucket buckets_path: 'sales_per_month>sales'
12
+ # end
13
+ #
14
+ # @example Passing the options as a block
15
+ #
16
+ # aggregation :avg_monthly_sales do
17
+ # avg_bucket do
18
+ # buckets_path 'sales_per_month>sales'
19
+ # end
20
+ # end
21
+ #
22
+ # @see https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-pipeline-avg-bucket-aggregation.html
23
+ #
24
+ class AvgBucket
25
+ include BaseAggregationComponent
26
+
27
+ option_method :buckets_path
28
+ option_method :gap_policy
29
+ option_method :format
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,36 @@
1
+ module Elasticsearch
2
+ module DSL
3
+ module Search
4
+ module Aggregations
5
+
6
+ # A parent pipeline aggregation which executes a script which can perform per bucket computations on specified metrics in the parent multi-bucket aggregation.
7
+ #
8
+ # @example Passing the options as a Hash
9
+ #
10
+ # aggregation :t-shirt-percentage do
11
+ # bucket_script buckets_path: { tShirtSales: 't-shirts>sales', totalSales: 'total_sales' }, script: 'tShirtSales / totalSales * 100'
12
+ # end
13
+ #
14
+ # @example Passing the options as a block
15
+ #
16
+ # aggregation :t-shirt-percentage do
17
+ # bucket_script do
18
+ # buckets_path tShirtSales: 't-shirts>sales', totalSales: 'total_sales'
19
+ # script 'tShirtSales / totalSales * 100'
20
+ # end
21
+ # end
22
+ #
23
+ # @see https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-pipeline-bucket-script-aggregation.html
24
+ #
25
+ class BucketScript
26
+ include BaseAggregationComponent
27
+
28
+ option_method :buckets_path
29
+ option_method :script
30
+ option_method :gap_policy
31
+ option_method :format
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,35 @@
1
+ module Elasticsearch
2
+ module DSL
3
+ module Search
4
+ module Aggregations
5
+
6
+ # A parent pipeline aggregation which executes a script which determines whether the current bucket will be retained in the parent multi-bucket aggregation.
7
+ #
8
+ # @example Passing the options as a Hash
9
+ #
10
+ # aggregation :sales_bucket_filter do
11
+ # bucket_selector buckets_path: { totalSales: 'total_sales' }, script: 'totalSales <= 50'
12
+ # end
13
+ #
14
+ # @example Passing the options as a block
15
+ #
16
+ # aggregation :sales_bucket_filter do
17
+ # bucket_selector do
18
+ # buckets_path totalSales: 'total_sales'
19
+ # script 'totalSales <= 50'
20
+ # end
21
+ # end
22
+ #
23
+ # @see https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-pipeline-bucket-selector-aggregation.html
24
+ #
25
+ class BucketSelector
26
+ include BaseAggregationComponent
27
+
28
+ option_method :buckets_path
29
+ option_method :script
30
+ option_method :gap_policy
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,33 @@
1
+ module Elasticsearch
2
+ module DSL
3
+ module Search
4
+ module Aggregations
5
+
6
+ # A parent pipeline aggregation which calculates the cumulative sum of a specified metric in a parent histogram (or date_histogram) aggregation.
7
+ #
8
+ # @example Passing the options as a Hash
9
+ #
10
+ # aggregation :cumulative_sales do
11
+ # cumulative_sum buckets_path: 'sales'
12
+ # end
13
+ #
14
+ # @example Passing the options as a block
15
+ #
16
+ # aggregation :cumulative_sales do
17
+ # cumulative_sum do
18
+ # buckets_path 'sales'
19
+ # end
20
+ # end
21
+ #
22
+ # @see https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-pipeline-cumulative-sum-aggregation.html
23
+ #
24
+ class CumulativeSum
25
+ include BaseAggregationComponent
26
+
27
+ option_method :buckets_path
28
+ option_method :format
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,34 @@
1
+ module Elasticsearch
2
+ module DSL
3
+ module Search
4
+ module Aggregations
5
+
6
+ # A parent pipeline aggregation which calculates the derivative of a specified metric in a parent histogram (or date_histogram) aggregation.
7
+ #
8
+ # @example Passing the options as a Hash
9
+ #
10
+ # aggregation :sales_deriv do
11
+ # derivative buckets_path: 'sales'
12
+ # end
13
+ #
14
+ # @example Passing the options as a block
15
+ #
16
+ # aggregation :sales_deriv do
17
+ # derivative do
18
+ # buckets_path 'sales'
19
+ # end
20
+ # end
21
+ #
22
+ # @see https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-pipeline-derivative-aggregation.html
23
+ #
24
+ class Derivative
25
+ include BaseAggregationComponent
26
+
27
+ option_method :buckets_path
28
+ option_method :gap_policy
29
+ option_method :format
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,34 @@
1
+ module Elasticsearch
2
+ module DSL
3
+ module Search
4
+ module Aggregations
5
+
6
+ # A sibling pipeline aggregation which calculates a variety of stats across all bucket of a specified metric in a sibling aggregation. The specified metric must be numeric and the sibling aggregation must be a multi-bucket aggregation.
7
+ #
8
+ # @example Passing the options as a Hash
9
+ #
10
+ # aggregation :stats_monthly_sales do
11
+ # extended_stats_bucket buckets_path: 'sales_per_month>sales'
12
+ # end
13
+ #
14
+ # @example Passing the options as a block
15
+ #
16
+ # aggregation :stats_monthly_sales do
17
+ # extended_stats_bucket do
18
+ # buckets_path 'sales_per_month>sales'
19
+ # end
20
+ # end
21
+ #
22
+ # @see https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-pipeline-extended-stats-bucket-aggregation.html
23
+ #
24
+ class ExtendedStatsBucket
25
+ include BaseAggregationComponent
26
+
27
+ option_method :buckets_path
28
+ option_method :gap_policy
29
+ option_method :format
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,34 @@
1
+ module Elasticsearch
2
+ module DSL
3
+ module Search
4
+ module Aggregations
5
+
6
+ # A sibling pipeline aggregation which identifies the bucket(s) with the maximum value of a specified metric in a sibling aggregation and outputs both the value and the key(s) of the bucket(s).
7
+ #
8
+ # @example Passing the options as a Hash
9
+ #
10
+ # aggregation :max_monthly_sales do
11
+ # max_bucket buckets_path: 'sales_per_month>sales'
12
+ # end
13
+ #
14
+ # @example Passing the options as a block
15
+ #
16
+ # aggregation :max_monthly_sales do
17
+ # max_bucket do
18
+ # buckets_path 'sales_per_month>sales'
19
+ # end
20
+ # end
21
+ #
22
+ # @see https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-pipeline-max-bucket-aggregation.html
23
+ #
24
+ class MaxBucket
25
+ include BaseAggregationComponent
26
+
27
+ option_method :buckets_path
28
+ option_method :gap_policy
29
+ option_method :format
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,34 @@
1
+ module Elasticsearch
2
+ module DSL
3
+ module Search
4
+ module Aggregations
5
+
6
+ # A sibling pipeline aggregation which identifies the bucket(s) with the minimum value of a specified metric in a sibling aggregation and outputs both the value and the key(s) of the bucket(s).
7
+ #
8
+ # @example Passing the options as a Hash
9
+ #
10
+ # aggregation :min_monthly_sales do
11
+ # min_bucket buckets_path: 'sales_per_month>sales'
12
+ # end
13
+ #
14
+ # @example Passing the options as a block
15
+ #
16
+ # aggregation :min_monthly_sales do
17
+ # min_bucket do
18
+ # buckets_path 'sales_per_month>sales'
19
+ # end
20
+ # end
21
+ #
22
+ # @see https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-pipeline-min-bucket-aggregation.html
23
+ #
24
+ class MinBucket
25
+ include BaseAggregationComponent
26
+
27
+ option_method :buckets_path
28
+ option_method :gap_policy
29
+ option_method :format
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,42 @@
1
+ module Elasticsearch
2
+ module DSL
3
+ module Search
4
+ module Aggregations
5
+
6
+ # Given an ordered series of data, the Moving Average aggregation will slide a window across the data and emit the average value of that window.
7
+ #
8
+ # @example Passing the options as a Hash
9
+ #
10
+ # aggregation :the_movavg do
11
+ # moving_avg buckets_path: 'the_sum'
12
+ # end
13
+ #
14
+ # @example Passing the options as a block
15
+ #
16
+ # aggregation :the_movavg do
17
+ # moving_avg do
18
+ # buckets_path 'the_sum'
19
+ # model 'holt'
20
+ # window 5
21
+ # gap_policy 'insert_zero'
22
+ # settings({ alpha: 0.5 })
23
+ # end
24
+ # end
25
+ #
26
+ # @see https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-pipeline-movavg-aggregation.html
27
+ #
28
+ class MovingAvg
29
+ include BaseAggregationComponent
30
+
31
+ option_method :buckets_path
32
+ option_method :model
33
+ option_method :gap_policy
34
+ option_method :window
35
+ option_method :format
36
+ option_method :minimize
37
+ option_method :settings
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,36 @@
1
+ module Elasticsearch
2
+ module DSL
3
+ module Search
4
+ module Aggregations
5
+
6
+ # A sibling pipeline aggregation which calculates percentiles across all bucket of a specified metric in a sibling aggregation.
7
+ #
8
+ # @example Passing the options as a Hash
9
+ #
10
+ # aggregation :sum_monthly_sales do
11
+ # percentiles_bucket buckets_path: 'sales_per_month>sales'
12
+ # end
13
+ #
14
+ # @example Passing the options as a block
15
+ #
16
+ # aggregation :sum_monthly_sales do
17
+ # percentiles_bucket do
18
+ # buckets_path 'sales_per_month>sales'
19
+ # percents [25.0 50.0 75.0]
20
+ # end
21
+ # end
22
+ #
23
+ # @see https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-pipeline-percentiles-bucket-aggregation.html
24
+ #
25
+ class PercentilesBucket
26
+ include BaseAggregationComponent
27
+
28
+ option_method :buckets_path
29
+ option_method :gap_policy
30
+ option_method :format
31
+ option_method :percents
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end