es_query_builder 2.0.0 → 2.0.1

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.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/lib/aggregations/buckets/date_histogram_aggregation_builder.rb +64 -0
  3. data/lib/aggregations/buckets/date_range_aggregation_builder.rb +25 -0
  4. data/lib/aggregations/buckets/filter_aggregation_builder.rb +30 -0
  5. data/lib/aggregations/buckets/filters_aggregation_builder.rb +32 -0
  6. data/lib/aggregations/buckets/geo_grid_aggregation_builder.rb +50 -0
  7. data/lib/aggregations/buckets/histogram_aggregation_builder.rb +63 -0
  8. data/lib/aggregations/buckets/nested_aggregation_builder.rb +33 -0
  9. data/lib/aggregations/buckets/range_aggregation_builder.rb +25 -0
  10. data/lib/aggregations/buckets/reverse_nested_aggregation_builder.rb +23 -0
  11. data/lib/aggregations/buckets/terms_aggregation_builder.rb +87 -0
  12. data/lib/aggregations/buckets/top_hits_aggregation_builder.rb +78 -0
  13. data/lib/aggregations/helpers/abstract_aggregation_helper.rb +37 -0
  14. data/lib/aggregations/helpers/abstract_range_helper.rb +40 -0
  15. data/lib/aggregations/helpers/aggregation_query_builder_helper.rb +61 -0
  16. data/lib/aggregations/helpers/values_source_aggregation_helper.rb +53 -0
  17. data/lib/aggregations/metrics/avg_aggregation_builder.rb +24 -0
  18. data/lib/aggregations/metrics/max_aggregation_builder.rb +24 -0
  19. data/lib/aggregations/metrics/min_aggregation_builder.rb +24 -0
  20. data/lib/enums/combine_functions.rb +54 -0
  21. data/lib/enums/distance_types.rb +36 -0
  22. data/lib/enums/distance_units.rb +71 -0
  23. data/lib/enums/fuzziness.rb +56 -0
  24. data/lib/enums/orders.rb +17 -0
  25. data/lib/enums/score_modes.rb +54 -0
  26. data/lib/enums/script_sort_types.rb +32 -0
  27. data/lib/enums/script_types.rb +19 -0
  28. data/lib/enums/shape_relations.rb +47 -0
  29. data/lib/enums/sort_modes.rb +59 -0
  30. data/lib/enums/sort_orders.rb +33 -0
  31. data/lib/enums/validation_methods.rb +44 -0
  32. data/lib/enums/zero_terms_query.rb +37 -0
  33. data/lib/function_scores/random_score_function_builder.rb +53 -0
  34. data/lib/function_scores/score_function_builder.rb +19 -0
  35. data/lib/function_scores/script_score_function_builder.rb +30 -0
  36. data/lib/function_scores/weighted_score_function_builder.rb +38 -0
  37. data/lib/misc/bucket_order.rb +33 -0
  38. data/lib/misc/geo_point.rb +64 -0
  39. data/lib/misc/range.rb +44 -0
  40. data/lib/misc/script.rb +62 -0
  41. data/lib/misc/terms_lookup.rb +45 -0
  42. data/lib/queries/abstract_query_builder.rb +31 -0
  43. data/lib/queries/base_query_builder.rb +27 -0
  44. data/lib/queries/bool_query_builder.rb +148 -0
  45. data/lib/queries/constant_score_query_builder.rb +32 -0
  46. data/lib/queries/dis_max_query_builder.rb +70 -0
  47. data/lib/queries/exists_query_builder.rb +32 -0
  48. data/lib/queries/function_score_query_builder.rb +170 -0
  49. data/lib/queries/geo_distance_query_builder.rb +126 -0
  50. data/lib/queries/match_all_query_builder.rb +16 -0
  51. data/lib/queries/match_query_builder.rb +181 -0
  52. data/lib/queries/nested_query_builder.rb +55 -0
  53. data/lib/queries/nested_sort_query_builder.rb +44 -0
  54. data/lib/queries/query_builder.rb +33 -0
  55. data/lib/queries/range_query_builder.rb +153 -0
  56. data/lib/queries/term_query_builder.rb +44 -0
  57. data/lib/queries/terms_query_builder.rb +54 -0
  58. data/lib/sort/abstract_sort_builder.rb +15 -0
  59. data/lib/sort/field_sort_builder.rb +70 -0
  60. data/lib/sort/geo_distance_sort_builder.rb +120 -0
  61. data/lib/sort/nested_sort_builder.rb +68 -0
  62. data/lib/sort/score_sort_builder.rb +16 -0
  63. data/lib/sort/script_sort_builder.rb +83 -0
  64. data/lib/sort/sort_builder.rb +28 -0
  65. metadata +64 -1
@@ -0,0 +1,71 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Enums
4
+ # Enumerator class for diatnce units.
5
+ class DistanceUnits
6
+ # @!visibility protected
7
+ DISTANCE_UNITS = { miles: 'mi', yards: 'yd', feet: 'ft', inches: 'in',
8
+ kilometers: 'km', meters: 'm', centimeters: 'cm',
9
+ millimeters: 'mm', nauticalmiles: 'nmi' }.freeze
10
+
11
+ # @!visibility protected
12
+ attr_reader :distance_unit
13
+
14
+ # @!visibility protected
15
+ DISTANCE_UNITS.each do |du, es_value|
16
+ define_singleton_method(du) do
17
+ new(es_value)
18
+ end
19
+ end
20
+
21
+ # @!scope class
22
+ # @!method miles
23
+ # @return [DistanceUnits] DistanceUnits object
24
+ # corresponding to elasticsearch option of 'mi'
25
+
26
+ # @!scope class
27
+ # @!method yards
28
+ # @return [DistanceUnits] DistanceUnits object
29
+ # corresponding to elasticsearch option of 'yd'
30
+
31
+ # @!scope class
32
+ # @!method feet
33
+ # @return [DistanceUnits] DistanceUnits object
34
+ # corresponding to elasticsearch option of 'ft'
35
+
36
+ # @!scope class
37
+ # @!method inches
38
+ # @return [DistanceUnits] DistanceUnits object
39
+ # corresponding to elasticsearch option of 'in'
40
+
41
+ # @!scope class
42
+ # @!method kilometers
43
+ # @return [DistanceUnits] DistanceUnits object
44
+ # corresponding to elasticsearch option of 'kme'
45
+
46
+ # @!scope class
47
+ # @!method meters
48
+ # @return [DistanceUnits] DistanceUnits object
49
+ # corresponding to elasticsearch option of 'm'
50
+
51
+ # @!scope class
52
+ # @!method centimeters
53
+ # @return [DistanceUnits] DistanceUnits object
54
+ # corresponding to elasticsearch option of 'cm'
55
+
56
+ # @!scope class
57
+ # @!method millimeters
58
+ # @return [DistanceUnits] DistanceUnits object
59
+ # corresponding to elasticsearch option of 'mm'
60
+
61
+ # @!scope class
62
+ # @!method nauticalmiles
63
+ # @return [DistanceUnits] DistanceUnits object
64
+ # corresponding to elasticsearch option of 'nmi'
65
+
66
+ # @!visibility protected
67
+ def initialize(distance_unit)
68
+ @distance_unit = distance_unit
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,56 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Enums
4
+ # A unit class that encapsulates all in-exact search parsing and
5
+ # conversion from similarities to edit distances etc.
6
+ class Fuzziness
7
+ # @!visibility protected
8
+ AUTO = 'AUTO'
9
+ # @!visibility protected
10
+ ZERO = 0
11
+ # @!visibility protected
12
+ ONE = 1
13
+ # @!visibility protected
14
+ TWO = 2
15
+ # @!visibility protected
16
+ attr_reader :fuzziness
17
+
18
+ # @return [Fuzziness] returns Fuzziness object corresponding to
19
+ # exact match
20
+ def self.zero
21
+ new(ZERO)
22
+ end
23
+
24
+ # @return [Fuzziness] returns a fuzziness object with
25
+ # maximum levenshtein distance as one.
26
+ def self.one
27
+ new(ONE)
28
+ end
29
+
30
+ # @return [Fuzziness] returns a fuzziness object with
31
+ # maximum levenshtein distance as two.
32
+ def self.two
33
+ new(TWO)
34
+ end
35
+
36
+ # Returns a fuzziness object with maximum levenshtein distance in auto mode.
37
+ # Generates an edit distance based on the length of the term.
38
+ # Low and high distance arguments may be optionally provided
39
+ # AUTO:[low],[high]. If not specified, the default values are 3 and 6,
40
+ # equivalent to AUTO:3,6 that make for lengths:
41
+ # 0..2
42
+ # Must match exactly
43
+ # 3..5
44
+ # One edit allowed
45
+ # >5
46
+ # Two edits allowed
47
+ # AUTO should generally be the preferred value for fuzziness.
48
+ def self.auto(low = nil, high = nil)
49
+ new("#{AUTO}:#{low},#{high}")
50
+ end
51
+ # @!visibility protected
52
+ def initialize(fuzziness_value)
53
+ @fuzziness = fuzziness_value
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,17 @@
1
+ class Orders
2
+
3
+ ORDERS = {desc: 'desc', asc: 'asc'}
4
+
5
+ attr_reader :order
6
+
7
+ ORDERS.keys.each do |order|
8
+ define_singleton_method(order) do
9
+ return self.new(ORDERS[order])
10
+ end
11
+ end
12
+
13
+ def initialize value
14
+ @order = value
15
+ end
16
+
17
+ end
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Enums
4
+ # Enumerator class for how results of individual
5
+ # score functions will be aggregated
6
+ class ScoreModes
7
+ # @!visibility protected
8
+ SCORE_MODES = { multiply: 'multiply', sum: 'sum', avg: 'avg',
9
+ first: 'first', max: 'max', min: 'min' }.freeze
10
+ # @!visibility protected
11
+ attr_reader :score_mode
12
+ # @!visibility protected
13
+ SCORE_MODES.each do |sc_md, es_value|
14
+ define_singleton_method(sc_md) do
15
+ return new(es_value)
16
+ end
17
+ end
18
+
19
+ # @!scope class
20
+ # @!method multiply
21
+ # @return [ScoreModes] ScoreModes object
22
+ # corresponding to elasticsearch option of 'multiply'
23
+
24
+ # @!scope class
25
+ # @!method sum
26
+ # @return [ScoreModes] ScoreModes object
27
+ # corresponding to elasticsearch option of 'sum'
28
+
29
+ # @!scope class
30
+ # @!method avg
31
+ # @return [ScoreModes] ScoreModes object
32
+ # corresponding to elasticsearch option of 'avg'
33
+
34
+ # @!scope class
35
+ # @!method first
36
+ # @return [ScoreModes] ScoreModes object
37
+ # corresponding to elasticsearch option of 'first'
38
+
39
+ # @!scope class
40
+ # @!method max
41
+ # @return [ScoreModes] ScoreModes object
42
+ # corresponding to elasticsearch option of 'max'
43
+
44
+ # @!scope class
45
+ # @!method min
46
+ # @return [ScoreModes] ScoreModes object
47
+ # corresponding to elasticsearch option of 'min'
48
+
49
+ # @!visibility protected
50
+ def initialize(score_mode)
51
+ @score_mode = score_mode
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Enums
4
+ # Enumerator class for types of scripts in sorting.
5
+ class ScriptSortTypes
6
+ # @!visibility protected
7
+ SCRIPT_SORT_TYPES = { number: 'number', string: 'string' }.freeze
8
+ # @!visibility protected
9
+ attr_reader :script_sort_type
10
+ # @!visibility protected
11
+ SCRIPT_SORT_TYPES.each do |script_type, es_value|
12
+ define_singleton_method(script_type) do
13
+ return new(es_value)
14
+ end
15
+ end
16
+
17
+ # @!scope class
18
+ # @!method number
19
+ # @return [ScriptSortTypes] ScriptSortTypes object
20
+ # corresponding to elasticsearch option of 'multiply'
21
+
22
+ # @!scope class
23
+ # @!method string
24
+ # @return [ScriptSortTypes] ScriptSortTypes object
25
+ # corresponding to elasticsearch option of 'string'
26
+
27
+ # @!visibility protected
28
+ def initialize(script_type)
29
+ @script_sort_type = script_type
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,19 @@
1
+ module Enums
2
+ class ScriptTypes
3
+
4
+ SCRIPT_TYPES = {:inline => :inline, :stored => :stored}
5
+
6
+ attr_reader :script_type
7
+
8
+ SCRIPT_TYPES.each do |type, es_value|
9
+ define_singleton_method(type) do
10
+ return self.new(es_value)
11
+ end
12
+ end
13
+
14
+ def initialize type
15
+ @script_type = type
16
+ end
17
+
18
+ end
19
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Enums
4
+ # Enum class representing the relationship
5
+ # between a Query / Filter Shape
6
+ # and indexed Shapes that will be used to determine
7
+ # if a Document should be matched or not
8
+ class ShapeRelations
9
+ # @!visibility protected
10
+ WITHIN = 'within'
11
+ # @!visibility protected
12
+ CONTAINS = 'contains'
13
+ # @!visibility protected
14
+ INTERSECTS = 'intersects'
15
+ # @!visibility protected
16
+ attr_reader :relation
17
+
18
+ # @!scope class
19
+ # @!method number
20
+ # @return [ShapeRelations] ShapeRelations object
21
+ # corresponding to elasticsearch option of 'within'
22
+ def self.within
23
+ new(WITHIN)
24
+ end
25
+
26
+ # @!scope class
27
+ # @!method number
28
+ # @return [ShapeRelations] ShapeRelations object
29
+ # corresponding to elasticsearch option of 'contains'
30
+ def self.contains
31
+ new(CONTAINS)
32
+ end
33
+
34
+ # @!scope class
35
+ # @!method number
36
+ # @return [ShapeRelations] ShapeRelations object
37
+ # corresponding to elasticsearch option of 'intersects'
38
+ def self.intersects
39
+ new(INTERSECTS)
40
+ end
41
+
42
+ # @!visibility protected
43
+ def initialize(value)
44
+ @relation = value
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,59 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Enums
4
+ # Elasticsearch supports sorting by array or multi-valued fields.
5
+ # The SortMode option controls what array value is picked for sorting
6
+ # the document it belongs to. The mode option can have the following values:
7
+ # *min* - Pick the lowest value.
8
+ # *max* - Pick the highest value.
9
+ # *sum* - Use the sum of all values as sort value.
10
+ # Only applicable for number based array fields.
11
+ # *avg* - Use the average of all values as sort value.
12
+ # Only applicable for number based array fields.
13
+ # *median* - Use the median of all values as sort value.
14
+ # Only applicable for number based array fields.
15
+ class SortModes
16
+ # @!visibility protected
17
+ SORT_MODES = { min: 'min', max: 'max',
18
+ sum: 'sum', avg: 'avg', median: 'median' }.freeze
19
+ # @!visibility protected
20
+ attr_reader :sort_mode
21
+
22
+ # @!visibility protected
23
+ SORT_MODES.each do |sort_mode, es_value|
24
+ define_singleton_method(sort_mode) do
25
+ return new(es_value)
26
+ end
27
+ end
28
+
29
+ # @!scope class
30
+ # @!method min
31
+ # @return [SortModes] SortModes object
32
+ # corresponding to elasticsearch option of 'min'
33
+
34
+ # @!scope class
35
+ # @!method max
36
+ # @return [SortModes] SortModes object
37
+ # corresponding to elasticsearch option of 'max'
38
+
39
+ # @!scope class
40
+ # @!method sum
41
+ # @return [SortModes] SortModes object
42
+ # corresponding to elasticsearch option of 'sum'
43
+
44
+ # @!scope class
45
+ # @!method avg
46
+ # @return [SortModes] SortModes object
47
+ # corresponding to elasticsearch option of 'avg'
48
+
49
+ # @!scope class
50
+ # @!method median
51
+ # @return [SortModes] SortModes object
52
+ # corresponding to elasticsearch option of 'median'
53
+
54
+ # @!visibility protected
55
+ def initialize(sort_mode)
56
+ @sort_mode = sort_mode
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Enums
4
+ # Enumerator class for sort ordering
5
+ class SortOrders
6
+ # @!visibility protected
7
+ SORT_ORDERS = { asc: 'asc', desc: 'desc' }.freeze
8
+ # @!visibility protected
9
+ attr_reader :sort_order
10
+
11
+ # @!visibility protected
12
+ SORT_ORDERS.each do |sort_order, es_value|
13
+ define_singleton_method(sort_order) do
14
+ return new(es_value)
15
+ end
16
+ end
17
+
18
+ # @!scope class
19
+ # @!method asc
20
+ # @return [SortOrders] SortOrders object
21
+ # corresponding to elasticsearch option of 'asc'
22
+
23
+ # @!scope class
24
+ # @!method desc
25
+ # @return [SortOrders] SortOrders object
26
+ # corresponding to elasticsearch option of 'desc'
27
+
28
+ # @!visibility protected
29
+ def initialize(sort_order)
30
+ @sort_order = sort_order
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Enums
4
+ # This enum is used to determine how to deal with invalid
5
+ # geo coordinates in geo related queries: On STRICT validation
6
+ # invalid coordinates cause an exception to be thrown.
7
+ # On IGNORE_MALFORMED invalid coordinates are being accepted.
8
+ # On COERCE invalid coordinates are being corrected to
9
+ # the most likely valid coordinate.
10
+ class ValidationMethods
11
+ # @!visibility protected
12
+ VALIDATION_METHODS = { coerce: 'COERCE',
13
+ ignore_malformed: 'IGNORE_MALFORMED',
14
+ strict: 'STRICT' }.freeze
15
+ # @!visibility protected
16
+ attr_reader :validation_method
17
+ # @!visibility protected
18
+ VALIDATION_METHODS.each do |validation_method, es_value|
19
+ define_singleton_method(validation_method) do
20
+ new(es_value)
21
+ end
22
+ end
23
+
24
+ # @!scope class
25
+ # @!method coerce
26
+ # @return [ValidationMethods] ValidationMethods object
27
+ # corresponding to elasticsearch option of 'COERCE'
28
+
29
+ # @!scope class
30
+ # @!method ignore_malformed
31
+ # @return [ValidationMethods] ValidationMethods object
32
+ # corresponding to elasticsearch option of 'IGNORE_MALFORMED'
33
+
34
+ # @!scope class
35
+ # @!method strict
36
+ # @return [ValidationMethods] ValidationMethods object
37
+ # corresponding to elasticsearch option of 'STRICT'
38
+
39
+ # @!visibility protected
40
+ def initialize(validation_method)
41
+ @validation_method = validation_method
42
+ end
43
+ end
44
+ end