es_query_builder 1.0.3 → 2.0.0
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/aggregation_builders.rb +59 -0
- data/lib/attributes_reader.rb +39 -0
- data/lib/es_query_builder.rb +27 -5
- data/lib/function_score_builders.rb +24 -0
- data/lib/multi_search_request.rb +22 -0
- data/lib/query_builders.rb +105 -0
- data/lib/rest_client.rb +53 -0
- data/lib/search_request.rb +33 -0
- data/lib/search_source_builder.rb +151 -0
- data/lib/sort_builders.rb +23 -0
- data/lib/test_script.rb +29 -0
- metadata +49 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 476bcc5f9cc581265e2a05f04d04762f43d022b3
|
4
|
+
data.tar.gz: 10434493e8ff90f36a1ac52cfdba78686d15d9d8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3a826034f827ffa7444d9155ddab30ebac685bd3e0bcf756a49a189b90cc6a7c7896211d5025b4cf8a9c5f8d4e90d25b5f8c5daf3b431009c952ee39f2c78ba5
|
7
|
+
data.tar.gz: 5412d2c7016367ec5af2f74e4de4e70a9846eb46e4b06138e5b326e925602c3b1f237fd5d28d17e9c466d3b31c3c09fc3cf1186733d1ca0ef298be12cd36dc93
|
@@ -0,0 +1,59 @@
|
|
1
|
+
class AggregationBuilders
|
2
|
+
|
3
|
+
def self.terms(*args)
|
4
|
+
return ::Aggregations::Buckets::TermsAggregationBuilder.new(*args)
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.filter(*args)
|
8
|
+
return ::Aggregations::Buckets::FilterAggregationBuilder.new(*args)
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.filters(*args)
|
12
|
+
return ::Aggregations::Buckets::FiltersAggregationBuilder.new(*args)
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.geohash_grid(*args)
|
16
|
+
return ::Aggregations::Buckets::GeoGridAggregationBuilder.new(*args)
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.top_hits(*args)
|
20
|
+
return ::Aggregations::Buckets::TopHitsAggregationBuilder.new(*args)
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.nested(*args)
|
24
|
+
return ::Aggregations::Buckets::NestedAggregationBuilder.new(*args)
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.reverse_nested(*args)
|
28
|
+
return ::Aggregations::Buckets::ReverseNestedAggregationBuilder.new(*args)
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.date_histogram(*args)
|
32
|
+
return ::Aggregations::Buckets::DateHistogramAggregationBuilder.new(*args)
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.histogram(*args)
|
36
|
+
return ::Aggregations::Buckets::HistogramAggregationBuilder.new(*args)
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.date_range(*args)
|
40
|
+
return ::Aggregations::Buckets::DateRangeAggregationBuilder.new(*args)
|
41
|
+
end
|
42
|
+
|
43
|
+
def self.range(*args)
|
44
|
+
return ::Aggregations::Buckets::RangeAggregationBuilder.new(*args)
|
45
|
+
end
|
46
|
+
|
47
|
+
def self.max(*args)
|
48
|
+
return ::Aggregations::Metrics::MaxAggregationBuilder.new(*args)
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.min(*args)
|
52
|
+
return ::Aggregations::Metrics::MinAggregationBuilder.new(*args)
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.avg(*args)
|
56
|
+
return ::Aggregations::Metrics::AvgAggregationBuilder.new(*args)
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module AttributesReader
|
2
|
+
|
3
|
+
class Attributes
|
4
|
+
|
5
|
+
def initialize parent_object
|
6
|
+
@parent_object = parent_object
|
7
|
+
end
|
8
|
+
|
9
|
+
def method_missing(m, *args, &block)
|
10
|
+
if @parent_object.methods.include?("#{m}_expr".intern)
|
11
|
+
@parent_object.send("#{m}_expr", *args)
|
12
|
+
else
|
13
|
+
raise MissingAttributeError.new(m, @parent_object.class)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
class MissingAttributeError < StandardError
|
20
|
+
|
21
|
+
def initialize attr_name, class_name
|
22
|
+
@attr = attr_name
|
23
|
+
@class = class_name
|
24
|
+
super(message)
|
25
|
+
end
|
26
|
+
|
27
|
+
def message
|
28
|
+
return "Missing Attribute #{@attr} for #{@class}"
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
def attributes
|
35
|
+
@attributes ||= Attributes.new(self)
|
36
|
+
return @attributes
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
data/lib/es_query_builder.rb
CHANGED
@@ -1,8 +1,30 @@
|
|
1
|
-
require 'elastic_search_query'
|
2
|
-
require 'token_query_builder'
|
3
|
-
require 'fetch_es_data'
|
4
|
-
require 'indexer'
|
5
|
-
require 'constants'
|
1
|
+
# require 'elastic_search_query'
|
2
|
+
# require 'token_query_builder'
|
3
|
+
# require 'fetch_es_data'
|
4
|
+
# require 'indexer'
|
5
|
+
# require 'constants'
|
6
|
+
require 'active_support/all'
|
7
|
+
require 'elasticsearch'
|
8
|
+
require_relative 'attributes_reader'
|
9
|
+
Dir[File.join(__dir__, 'enums', '*.rb')].each { |file| require file }
|
10
|
+
Dir[File.join(__dir__, 'common', '*.rb')].each { |file| require file }
|
11
|
+
Dir[File.join(__dir__, 'function_scores', '*.rb')].each { |file| require file }
|
12
|
+
Dir[File.join(__dir__, 'misc', '*.rb')].each { |file| require file }
|
13
|
+
Dir[File.join(__dir__, 'queries', '*.rb')].each { |file| require file }
|
14
|
+
Dir[File.join(__dir__, 'scripts', '*.rb')].each { |file| require file }
|
15
|
+
Dir[File.join(__dir__, 'sort', '*.rb')].each { |file| require file }
|
16
|
+
Dir[File.join(__dir__, 'misc', '*.rb')].each { |file| require file }
|
17
|
+
Dir[File.join(__dir__, 'aggregations', 'helpers', '*.rb')].each { |file| require file }
|
18
|
+
Dir[File.join(__dir__, 'aggregations', 'buckets', '*.rb')].each { |file| require file }
|
19
|
+
Dir[File.join(__dir__, 'aggregations', 'metrics', '*.rb')].each { |file| require file }
|
20
|
+
require_relative 'query_builders'
|
21
|
+
require_relative 'function_score_builders'
|
22
|
+
Dir[File.join(__dir__, 'aggregation_builders.rb')].each { |file| require file }
|
23
|
+
require_relative 'sort_builders'
|
24
|
+
require_relative 'search_source_builder'
|
25
|
+
require_relative 'search_request'
|
26
|
+
require_relative 'multi_search_request'
|
27
|
+
require_relative 'rest_client'
|
6
28
|
|
7
29
|
module EsQueryBuilder
|
8
30
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Factory class for function scores.
|
4
|
+
class FunctionScoreBuilders
|
5
|
+
# @return [FunctionScores::RandomScoreFunctionBuilder]
|
6
|
+
# random_score_function_builder object
|
7
|
+
def self.random_score_function
|
8
|
+
FunctionScores::RandomScoreFunctionBuilder.new
|
9
|
+
end
|
10
|
+
|
11
|
+
# @params [Scripts::Script] script object for the function
|
12
|
+
# @return [FunctionScores::ScriptScoreFunctionBuilder]
|
13
|
+
# script_score_function_builder object with the
|
14
|
+
# provided script
|
15
|
+
def self.script_score_function(*args)
|
16
|
+
FunctionScores::ScriptScoreFunctionBuilder.new(*args)
|
17
|
+
end
|
18
|
+
|
19
|
+
# @return [FunctionScores::WeightedScoreFunctionBuilder]
|
20
|
+
# weighted_score_function_builder object
|
21
|
+
def self.weighted_score_function
|
22
|
+
FunctionScores::WeightedScoreFunctionBuilder.new
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
class MultiSearchRequest
|
2
|
+
include AttributesReader
|
3
|
+
|
4
|
+
def initialize
|
5
|
+
@requests = []
|
6
|
+
end
|
7
|
+
|
8
|
+
def body
|
9
|
+
return @requests.map{|request| {index: request.index, search: request.body}}
|
10
|
+
end
|
11
|
+
|
12
|
+
# show requests
|
13
|
+
def requests_expr
|
14
|
+
return @requests
|
15
|
+
end
|
16
|
+
# add requests
|
17
|
+
def add request
|
18
|
+
@requests.add(request)
|
19
|
+
return self
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
@@ -0,0 +1,105 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Factory class for query classes
|
4
|
+
class QueryBuilders
|
5
|
+
# @return [Queries::BoolQueryBuilder]
|
6
|
+
# bool_query_builder object
|
7
|
+
def self.bool_query
|
8
|
+
Queries::BoolQueryBuilder.new
|
9
|
+
end
|
10
|
+
|
11
|
+
# @params [String] field_name
|
12
|
+
# field on which match query to be performed
|
13
|
+
# @params [String] value value to be matched
|
14
|
+
# @return [Queries::MatchQueryBuilder]
|
15
|
+
# match_query_builder object
|
16
|
+
def self.match_query(*args)
|
17
|
+
Queries::MatchQueryBuilder.new(*args)
|
18
|
+
end
|
19
|
+
|
20
|
+
# @params [String] field_name
|
21
|
+
# field on which term query to be performed
|
22
|
+
# @params [String] value value to be matched
|
23
|
+
# @return [Queries::TermQueryBuilder]
|
24
|
+
# term_query_builder object
|
25
|
+
def self.term_query(*args)
|
26
|
+
Queries::TermQueryBuilder.new(*args)
|
27
|
+
end
|
28
|
+
|
29
|
+
# @params [String] field_name
|
30
|
+
# field on which terms query to be performed
|
31
|
+
# @params [String] values values to be matched
|
32
|
+
# @return [Queries::TermsQueryBuilder]
|
33
|
+
# terms_query_builder object
|
34
|
+
def self.terms_query(*args)
|
35
|
+
Queries::TermsQueryBuilder.new(*args)
|
36
|
+
end
|
37
|
+
|
38
|
+
# @params [String] field_name
|
39
|
+
# field on which range query to be performed
|
40
|
+
# @return [Queries::RangeQueryBuilder]
|
41
|
+
# range_query_builder object
|
42
|
+
def self.range_query(*args)
|
43
|
+
Queries::RangeQueryBuilder.new(*args)
|
44
|
+
end
|
45
|
+
|
46
|
+
# @params [String] field_name
|
47
|
+
# field on which exists query to be performed
|
48
|
+
# @return [Queries::ExistsQueryBuilder]
|
49
|
+
# exists_query_builder object
|
50
|
+
def self.exists_query(*args)
|
51
|
+
Queries::ExistsQueryBuilder.new(*args)
|
52
|
+
end
|
53
|
+
|
54
|
+
# @params [Queries::QueryBuilder] inner_query
|
55
|
+
# query to be wrapped by constant score query
|
56
|
+
# @return [Queries::ConstantScoreQueryBuilder]
|
57
|
+
# constant_score_query_builder object
|
58
|
+
def self.constant_score_query(*args)
|
59
|
+
Queries::ConstantScoreQueryBuilder.new(*args)
|
60
|
+
end
|
61
|
+
|
62
|
+
# @return [Queries::DisMaxQueryBuilder]
|
63
|
+
# dis_max_query_builder object
|
64
|
+
def self.dis_max_query
|
65
|
+
Queries::DisMaxQueryBuilder.new
|
66
|
+
end
|
67
|
+
|
68
|
+
# @params [Queries::QueryBuilder] query
|
69
|
+
# query part in the function score query object
|
70
|
+
# @params [FunctionScores::ScoreFunctionBuilder] score_function
|
71
|
+
# score_function for the function score query object
|
72
|
+
# @params [Queries::FunctionScoreQueryBuilder::FilterFunctionBuilder]
|
73
|
+
# filter_functions filter functions for the function score query object
|
74
|
+
# @return [Queries::FunctionScorehQueryBuilder]
|
75
|
+
# function_score_query_builder object
|
76
|
+
def self.function_score_query(*args)
|
77
|
+
Queries::FunctionScoreQueryBuilder.new(*args)
|
78
|
+
end
|
79
|
+
|
80
|
+
# @params [String] path
|
81
|
+
# path to the nested field
|
82
|
+
# @params [Queries::QueryBuilder] inner_query
|
83
|
+
# query on the nested field
|
84
|
+
# @params [Enums::ScoreModes] score_mode
|
85
|
+
# score_mode for the matched documents
|
86
|
+
# @return [Queries::NestedQueryBuilder]
|
87
|
+
# nested_query_builder object
|
88
|
+
def self.nested_query(*args)
|
89
|
+
Queries::NestedQueryBuilder.new(*args)
|
90
|
+
end
|
91
|
+
|
92
|
+
# @params [String] field_name
|
93
|
+
# field on which exists query to be performed
|
94
|
+
# @return [Queries::GeoDistanceQueryBuilder]
|
95
|
+
# geo_distance_query_builder object
|
96
|
+
def self.geo_distance_query(*args)
|
97
|
+
Queries::GeoDistanceQueryBuilder.new(*args)
|
98
|
+
end
|
99
|
+
|
100
|
+
# @return [Queries::MAtchAllQueryBuilder]
|
101
|
+
# match_all_query_builder object
|
102
|
+
def self.match_all_query
|
103
|
+
Queries::MatchAllQueryBuilder.new
|
104
|
+
end
|
105
|
+
end
|
data/lib/rest_client.rb
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
class RestClient
|
2
|
+
|
3
|
+
def initialize host: '127.0.0.1', port: 9200
|
4
|
+
@client = Elasticsearch::Client.new(host: host, port: port)
|
5
|
+
end
|
6
|
+
|
7
|
+
def search search_request
|
8
|
+
return @client.search(index: search_request.attributes.index, body: search_request.body)
|
9
|
+
end
|
10
|
+
|
11
|
+
def msearch msearch_request
|
12
|
+
return @client.msearch(body: msearch_request.body)
|
13
|
+
end
|
14
|
+
|
15
|
+
def index *args
|
16
|
+
return @client.index(*args)
|
17
|
+
end
|
18
|
+
|
19
|
+
def bulk *args
|
20
|
+
return @client.bulk(*args)
|
21
|
+
end
|
22
|
+
|
23
|
+
def create *args
|
24
|
+
return @client.create(*args)
|
25
|
+
end
|
26
|
+
|
27
|
+
def delete *args
|
28
|
+
return @client.delete(*args)
|
29
|
+
end
|
30
|
+
|
31
|
+
def delete_by_query *args
|
32
|
+
args.first[:body] = SearchSourceBuilder.new.query(args.first[:body]).body
|
33
|
+
return @client.delete_by_query(*args)
|
34
|
+
end
|
35
|
+
|
36
|
+
def get *args
|
37
|
+
return @client.get(*args)
|
38
|
+
end
|
39
|
+
|
40
|
+
def mget *args
|
41
|
+
return @client.mget(*args)
|
42
|
+
end
|
43
|
+
|
44
|
+
def update *args
|
45
|
+
return @client.update(*args)
|
46
|
+
end
|
47
|
+
|
48
|
+
def update_by_query *args
|
49
|
+
args.first[:body] = SearchSourceBuilder.new.query(args.first[:body]).body
|
50
|
+
return @client.update_by_query(*args)
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
class SearchRequest
|
2
|
+
include AttributesReader
|
3
|
+
|
4
|
+
def initialize
|
5
|
+
@index = ''
|
6
|
+
@body = nil
|
7
|
+
end
|
8
|
+
|
9
|
+
def body
|
10
|
+
return @source.body
|
11
|
+
end
|
12
|
+
|
13
|
+
# returns index
|
14
|
+
def index_expr
|
15
|
+
return @index
|
16
|
+
end
|
17
|
+
# sets index
|
18
|
+
def index index
|
19
|
+
@index= index
|
20
|
+
return self
|
21
|
+
end
|
22
|
+
|
23
|
+
# returns source
|
24
|
+
def source_expr
|
25
|
+
return @body
|
26
|
+
end
|
27
|
+
# sets source
|
28
|
+
def source source
|
29
|
+
@source = source
|
30
|
+
return self
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
@@ -0,0 +1,151 @@
|
|
1
|
+
# A search source builder allowing to easily build search source.
|
2
|
+
class SearchSourceBuilder
|
3
|
+
include AttributesReader
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
@query = nil
|
7
|
+
@aggregations = []
|
8
|
+
@sort = []
|
9
|
+
@source = []
|
10
|
+
@size = nil
|
11
|
+
@explain = nil
|
12
|
+
@from = nil
|
13
|
+
@min_score = nil
|
14
|
+
@terminate_after = nil
|
15
|
+
@timeout = nil
|
16
|
+
@version = nil
|
17
|
+
end
|
18
|
+
|
19
|
+
def body
|
20
|
+
body = {}
|
21
|
+
body[:query] = @query.query
|
22
|
+
body[:aggregations] = @aggregations.map{|agg| agg.query}.reduce({}, :merge) if @aggregations.present?
|
23
|
+
body[:sort] = @sort.map{|sort_object| sort_object.query} if @sort.present?
|
24
|
+
body[:_source] = @source
|
25
|
+
body[:size] = @size
|
26
|
+
body[:explain] = @explain
|
27
|
+
body[:from] = @from
|
28
|
+
body[:min_score] = @min_score
|
29
|
+
body[:terminate_after] = @terminate_after
|
30
|
+
body[:timeout] = @timeout
|
31
|
+
body[:version] = @version
|
32
|
+
return body.compact
|
33
|
+
end
|
34
|
+
|
35
|
+
# returns query
|
36
|
+
def query_expr
|
37
|
+
return @query
|
38
|
+
end
|
39
|
+
# sets query
|
40
|
+
def query query
|
41
|
+
@query = query
|
42
|
+
return self
|
43
|
+
end
|
44
|
+
|
45
|
+
# returns aggregation
|
46
|
+
def aggregations_expr
|
47
|
+
return @aggregations
|
48
|
+
end
|
49
|
+
# sets aggregation
|
50
|
+
def aggregations agg_builder
|
51
|
+
if agg_builder.is_a?(Array)
|
52
|
+
@aggregations += agg_builder
|
53
|
+
else
|
54
|
+
@aggregations.append(agg_builder)
|
55
|
+
end
|
56
|
+
return self
|
57
|
+
end
|
58
|
+
|
59
|
+
# returns sort
|
60
|
+
def sort_expr
|
61
|
+
return @sort
|
62
|
+
end
|
63
|
+
# appends sort
|
64
|
+
def sort sort, reset: false
|
65
|
+
@sort = [] if reset
|
66
|
+
sort.is_a?(Array) ? @sort+= sort : @sort.append(sort)
|
67
|
+
return self
|
68
|
+
end
|
69
|
+
|
70
|
+
# returns source_fields
|
71
|
+
def source_expr
|
72
|
+
return @source
|
73
|
+
end
|
74
|
+
# sets source_fields
|
75
|
+
def source source_field, reset: false
|
76
|
+
@source = [] if reset
|
77
|
+
source_field.is_a?(Array) ? @source+= source_field : @source.append(source_field)
|
78
|
+
return self
|
79
|
+
end
|
80
|
+
|
81
|
+
# returns size
|
82
|
+
def size_expr
|
83
|
+
return @size
|
84
|
+
end
|
85
|
+
# sets size
|
86
|
+
def size size
|
87
|
+
@size = size
|
88
|
+
return self
|
89
|
+
end
|
90
|
+
|
91
|
+
# returns explain
|
92
|
+
def explain_expr
|
93
|
+
return @explain
|
94
|
+
end
|
95
|
+
# sets explain
|
96
|
+
def explain explain
|
97
|
+
@explain = explain
|
98
|
+
return self
|
99
|
+
end
|
100
|
+
|
101
|
+
# returns from
|
102
|
+
def from_expr
|
103
|
+
return @from
|
104
|
+
end
|
105
|
+
# sets from
|
106
|
+
def from from
|
107
|
+
@from = from
|
108
|
+
return self
|
109
|
+
end
|
110
|
+
|
111
|
+
# returns min_score
|
112
|
+
def min_score_expr
|
113
|
+
return @min_score
|
114
|
+
end
|
115
|
+
# sets min_score
|
116
|
+
def min_score min_score
|
117
|
+
@min_score = min_score
|
118
|
+
return self
|
119
|
+
end
|
120
|
+
|
121
|
+
# returns terminate_after
|
122
|
+
def terminate_after_expr
|
123
|
+
return @terminate_after
|
124
|
+
end
|
125
|
+
# sets terminate_after
|
126
|
+
def terminate_after terminate_after
|
127
|
+
@terminate_after = terminate_after
|
128
|
+
return self
|
129
|
+
end
|
130
|
+
|
131
|
+
# returns timeout
|
132
|
+
def timeout_expr
|
133
|
+
return @timeout
|
134
|
+
end
|
135
|
+
# sets timeout
|
136
|
+
def timeout timeout
|
137
|
+
@timeout = timeout
|
138
|
+
return self
|
139
|
+
end
|
140
|
+
|
141
|
+
# returns version
|
142
|
+
def version_expr
|
143
|
+
return @version
|
144
|
+
end
|
145
|
+
# sets version
|
146
|
+
def version version
|
147
|
+
@version = version
|
148
|
+
return self
|
149
|
+
end
|
150
|
+
|
151
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
class SortBuilders
|
2
|
+
|
3
|
+
def self.field_sort *args
|
4
|
+
return Sort::FieldSortBuilder.new(*args)
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.geo_distance_sort *args
|
8
|
+
return Sort::GeoDistanceSortBuilder.new(*args)
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.nested_sort *args
|
12
|
+
return Sort::NestedSortBuilder.new(*args)
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.score_sort
|
16
|
+
return Sort::ScoreSortBuilder.new
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.script_sort *args
|
20
|
+
return Sort::ScriptSortBuilder.new(*args)
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
data/lib/test_script.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
Dir["/root/housing/es.query.builder/lib/*_helper.rb"].each {|file| require file }
|
2
|
+
Dir["/root/housing/es.query.builder/lib/*_builder.rb"].each {|file| require file }
|
3
|
+
Dir["/root/housing/es.query.builder/lib/*_builders.rb"].each {|file| require file }
|
4
|
+
Dir["/root/housing/es.query.builder/lib/script.rb"].each {|file| require file }
|
5
|
+
require 'active_support/all'
|
6
|
+
|
7
|
+
script1 = Script.new("ctx._source.likes*modifier", {"modifier": 2}, :INLINE)
|
8
|
+
t1 = AggregationBuilders.terms('term1').field('age').include(['anu1', 'anu2', 'anu3']).add_order('anu1').add_order('anu4').script(script1)
|
9
|
+
puts t1.get_query
|
10
|
+
t2 = AggregationBuilders.filter('filter1', {:bool => {:must => [{:f1 => 'v1'}]}}).sub_aggregation(t1)
|
11
|
+
puts t2.get_query
|
12
|
+
t3 = AggregationBuilders.geohash_grid('geo1').size(10).precision(5).sub_aggregation(t1)
|
13
|
+
puts t3.get_query
|
14
|
+
t4 = AggregationBuilders.top_hits('thits1').add_sort(:f1).add_sort(:f2, :asc).source(['a1', 'a2']).sub_aggregation(t1)
|
15
|
+
puts t4.get_query
|
16
|
+
t5 = AggregationBuilders.reverse_nested('rnested1').sub_aggregation(t1)
|
17
|
+
puts t5.get_query
|
18
|
+
t6 = AggregationBuilders.nested('nested1', 'room_types').sub_aggregation(t5)
|
19
|
+
puts t6.get_query
|
20
|
+
t7 = AggregationBuilders.date_histogram('dhist1').field('age').interval('M').add_order('anu1').add_order('anu4')
|
21
|
+
puts t7.get_query
|
22
|
+
t8 = AggregationBuilders.histogram('hist1').field('age').interval('M').add_order('anu1').add_order('anu4')
|
23
|
+
puts t8.get_query
|
24
|
+
t9 = AggregationBuilders.date_range('drange1').field('start_date').add_range("2016/02/01", "2017/02/01", 'older').add_range("2017/02/01", nil)
|
25
|
+
puts t9.get_query
|
26
|
+
t10 = AggregationBuilders.range('range1').field('age').add_range(10, 100, 'older').add_range(200, nil).keyed(true)
|
27
|
+
puts t10.get_query
|
28
|
+
t11 = AggregationBuilders.max('max1').field('age').missing(10)
|
29
|
+
puts t11.get_query
|
metadata
CHANGED
@@ -1,14 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: es_query_builder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mohib Yousuf
|
8
|
+
- Anurag Agrawal
|
9
|
+
- Supantha Samanta
|
10
|
+
- Neeraj Joshi
|
8
11
|
autorequire:
|
9
12
|
bindir: bin
|
10
13
|
cert_chain: []
|
11
|
-
date:
|
14
|
+
date: 2019-10-07 00:00:00.000000000 Z
|
12
15
|
dependencies:
|
13
16
|
- !ruby/object:Gem::Dependency
|
14
17
|
name: rails
|
@@ -44,17 +47,59 @@ dependencies:
|
|
44
47
|
- - ">="
|
45
48
|
- !ruby/object:Gem::Version
|
46
49
|
version: '0'
|
50
|
+
- !ruby/object:Gem::Dependency
|
51
|
+
name: activesupport
|
52
|
+
requirement: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0'
|
57
|
+
type: :runtime
|
58
|
+
prerelease: false
|
59
|
+
version_requirements: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '0'
|
64
|
+
- !ruby/object:Gem::Dependency
|
65
|
+
name: rspec
|
66
|
+
requirement: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - '='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: 3.5.0
|
71
|
+
type: :development
|
72
|
+
prerelease: false
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - '='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 3.5.0
|
47
78
|
description:
|
48
|
-
email:
|
79
|
+
email:
|
80
|
+
- mohib.yousuf@hotmail.com
|
81
|
+
- anuragagrawal117@gmail.com
|
82
|
+
- supantha.samanta@gmail.com
|
83
|
+
- neerajjoshi00@gmail.com
|
49
84
|
executables: []
|
50
85
|
extensions: []
|
51
86
|
extra_rdoc_files: []
|
52
87
|
files:
|
88
|
+
- lib/aggregation_builders.rb
|
89
|
+
- lib/attributes_reader.rb
|
53
90
|
- lib/constants.rb
|
54
91
|
- lib/elastic_search_query.rb
|
55
92
|
- lib/es_query_builder.rb
|
56
93
|
- lib/fetch_es_data.rb
|
94
|
+
- lib/function_score_builders.rb
|
57
95
|
- lib/indexer.rb
|
96
|
+
- lib/multi_search_request.rb
|
97
|
+
- lib/query_builders.rb
|
98
|
+
- lib/rest_client.rb
|
99
|
+
- lib/search_request.rb
|
100
|
+
- lib/search_source_builder.rb
|
101
|
+
- lib/sort_builders.rb
|
102
|
+
- lib/test_script.rb
|
58
103
|
- lib/token_query_builder.rb
|
59
104
|
homepage: https://github.com/elarahq/es.query.builder
|
60
105
|
licenses:
|
@@ -76,7 +121,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
76
121
|
version: '0'
|
77
122
|
requirements: []
|
78
123
|
rubyforge_project:
|
79
|
-
rubygems_version: 2.6.
|
124
|
+
rubygems_version: 2.6.11
|
80
125
|
signing_key:
|
81
126
|
specification_version: 4
|
82
127
|
summary: For Building Elastic Search Queries
|