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.
- checksums.yaml +4 -4
- data/lib/aggregations/buckets/date_histogram_aggregation_builder.rb +64 -0
- data/lib/aggregations/buckets/date_range_aggregation_builder.rb +25 -0
- data/lib/aggregations/buckets/filter_aggregation_builder.rb +30 -0
- data/lib/aggregations/buckets/filters_aggregation_builder.rb +32 -0
- data/lib/aggregations/buckets/geo_grid_aggregation_builder.rb +50 -0
- data/lib/aggregations/buckets/histogram_aggregation_builder.rb +63 -0
- data/lib/aggregations/buckets/nested_aggregation_builder.rb +33 -0
- data/lib/aggregations/buckets/range_aggregation_builder.rb +25 -0
- data/lib/aggregations/buckets/reverse_nested_aggregation_builder.rb +23 -0
- data/lib/aggregations/buckets/terms_aggregation_builder.rb +87 -0
- data/lib/aggregations/buckets/top_hits_aggregation_builder.rb +78 -0
- data/lib/aggregations/helpers/abstract_aggregation_helper.rb +37 -0
- data/lib/aggregations/helpers/abstract_range_helper.rb +40 -0
- data/lib/aggregations/helpers/aggregation_query_builder_helper.rb +61 -0
- data/lib/aggregations/helpers/values_source_aggregation_helper.rb +53 -0
- data/lib/aggregations/metrics/avg_aggregation_builder.rb +24 -0
- data/lib/aggregations/metrics/max_aggregation_builder.rb +24 -0
- data/lib/aggregations/metrics/min_aggregation_builder.rb +24 -0
- data/lib/enums/combine_functions.rb +54 -0
- data/lib/enums/distance_types.rb +36 -0
- data/lib/enums/distance_units.rb +71 -0
- data/lib/enums/fuzziness.rb +56 -0
- data/lib/enums/orders.rb +17 -0
- data/lib/enums/score_modes.rb +54 -0
- data/lib/enums/script_sort_types.rb +32 -0
- data/lib/enums/script_types.rb +19 -0
- data/lib/enums/shape_relations.rb +47 -0
- data/lib/enums/sort_modes.rb +59 -0
- data/lib/enums/sort_orders.rb +33 -0
- data/lib/enums/validation_methods.rb +44 -0
- data/lib/enums/zero_terms_query.rb +37 -0
- data/lib/function_scores/random_score_function_builder.rb +53 -0
- data/lib/function_scores/score_function_builder.rb +19 -0
- data/lib/function_scores/script_score_function_builder.rb +30 -0
- data/lib/function_scores/weighted_score_function_builder.rb +38 -0
- data/lib/misc/bucket_order.rb +33 -0
- data/lib/misc/geo_point.rb +64 -0
- data/lib/misc/range.rb +44 -0
- data/lib/misc/script.rb +62 -0
- data/lib/misc/terms_lookup.rb +45 -0
- data/lib/queries/abstract_query_builder.rb +31 -0
- data/lib/queries/base_query_builder.rb +27 -0
- data/lib/queries/bool_query_builder.rb +148 -0
- data/lib/queries/constant_score_query_builder.rb +32 -0
- data/lib/queries/dis_max_query_builder.rb +70 -0
- data/lib/queries/exists_query_builder.rb +32 -0
- data/lib/queries/function_score_query_builder.rb +170 -0
- data/lib/queries/geo_distance_query_builder.rb +126 -0
- data/lib/queries/match_all_query_builder.rb +16 -0
- data/lib/queries/match_query_builder.rb +181 -0
- data/lib/queries/nested_query_builder.rb +55 -0
- data/lib/queries/nested_sort_query_builder.rb +44 -0
- data/lib/queries/query_builder.rb +33 -0
- data/lib/queries/range_query_builder.rb +153 -0
- data/lib/queries/term_query_builder.rb +44 -0
- data/lib/queries/terms_query_builder.rb +54 -0
- data/lib/sort/abstract_sort_builder.rb +15 -0
- data/lib/sort/field_sort_builder.rb +70 -0
- data/lib/sort/geo_distance_sort_builder.rb +120 -0
- data/lib/sort/nested_sort_builder.rb +68 -0
- data/lib/sort/score_sort_builder.rb +16 -0
- data/lib/sort/script_sort_builder.rb +83 -0
- data/lib/sort/sort_builder.rb +28 -0
- 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
|
data/lib/enums/orders.rb
ADDED
@@ -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
|