co-elastic-query 1.0.2 → 1.0.3
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/co-elastic-query.rb +29 -16
- data/lib/co-elastic-query/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 29167287ed81d7deb378c47079d78638cbb981b3
|
4
|
+
data.tar.gz: 9b45192f4c28d0e875c99a9c2d11dc084e01d13c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 47c03c8bcddb3dac6e7a9752809e0ca059f5ac66db64dfeb59fd4876031eab3db3f37a164e8e89d374b7cf2c96eda71a17f5835bdae0e46af9fb5bbc4462164e
|
7
|
+
data.tar.gz: 1cee889bfd71aa06492c2ac2259aa1350fa17bf776ba8c17cd9d0be916158c8864a4efe920478b34e9b5f38381d7984611c14e91152c098580cbfdf055f99a0d
|
data/lib/co-elastic-query.rb
CHANGED
@@ -6,11 +6,11 @@ class Elastic
|
|
6
6
|
query = params ? params.permit(:q, :limit, :offset) : {}
|
7
7
|
|
8
8
|
@filters = nil
|
9
|
-
@search = query[:q]
|
9
|
+
@search = "#{query[:q]}*"
|
10
10
|
|
11
11
|
@limit = query[:limit] || 20
|
12
12
|
@limit = @limit.to_i
|
13
|
-
@limit =
|
13
|
+
@limit = 500 if @limit > 500
|
14
14
|
|
15
15
|
@offset = query[:offset] || 0
|
16
16
|
@offset = offset.to_i
|
@@ -23,7 +23,9 @@ class Elastic
|
|
23
23
|
attr_accessor :sort
|
24
24
|
|
25
25
|
def raw_filter(filter)
|
26
|
-
@raw_filter
|
26
|
+
@raw_filter ||= []
|
27
|
+
@raw_filter << filter
|
28
|
+
self
|
27
29
|
end
|
28
30
|
|
29
31
|
|
@@ -32,12 +34,14 @@ class Elastic
|
|
32
34
|
def filter(filters)
|
33
35
|
@filters ||= {}
|
34
36
|
@filters.merge!(filters)
|
37
|
+
self
|
35
38
|
end
|
36
39
|
|
37
40
|
# Like filter however all keys are OR's instead of AND's
|
38
41
|
def or_filter(filters)
|
39
42
|
@orFilter ||= {}
|
40
43
|
@orFilter.merge!(filters)
|
44
|
+
self
|
41
45
|
end
|
42
46
|
|
43
47
|
# Applys the query to child objects
|
@@ -52,6 +56,7 @@ class Elastic
|
|
52
56
|
def range(filter)
|
53
57
|
@rangeFilter ||= []
|
54
58
|
@rangeFilter << filter
|
59
|
+
self
|
55
60
|
end
|
56
61
|
|
57
62
|
# Call to add fields that should be missing
|
@@ -59,14 +64,23 @@ class Elastic
|
|
59
64
|
def missing(*fields)
|
60
65
|
@missing ||= Set.new
|
61
66
|
@missing.merge(fields)
|
67
|
+
self
|
62
68
|
end
|
63
69
|
|
64
70
|
# The opposite of filter
|
65
71
|
def not(filters)
|
66
72
|
@nots ||= {}
|
67
73
|
@nots.merge!(filters)
|
74
|
+
self
|
68
75
|
end
|
69
76
|
|
77
|
+
def exists(*fields)
|
78
|
+
@exists ||= Set.new
|
79
|
+
@exists.merge(fields)
|
80
|
+
self
|
81
|
+
end
|
82
|
+
|
83
|
+
|
70
84
|
def build
|
71
85
|
if @filters
|
72
86
|
fieldfilters = []
|
@@ -126,17 +140,24 @@ class Elastic
|
|
126
140
|
end
|
127
141
|
end
|
128
142
|
|
143
|
+
if @exists
|
144
|
+
fieldfilters ||= []
|
145
|
+
|
146
|
+
@exists.each do |field|
|
147
|
+
fieldfilters.push({
|
148
|
+
exists: { field: field }
|
149
|
+
})
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
129
153
|
if @raw_filter
|
130
|
-
fieldfilters
|
154
|
+
fieldfilters += @raw_filter
|
131
155
|
end
|
132
156
|
|
133
|
-
if @search.
|
157
|
+
if @search.length > 1
|
134
158
|
# Break the terms up purely on whitespace
|
135
159
|
query_obj = nil
|
136
160
|
|
137
|
-
# update search string
|
138
|
-
@search << '*'
|
139
|
-
|
140
161
|
if @hasChild || @hasParent
|
141
162
|
should = [{
|
142
163
|
simple_query_string: {
|
@@ -293,18 +314,10 @@ class Elastic
|
|
293
314
|
query[:body].delete(:size)
|
294
315
|
query[:body].delete(:sort)
|
295
316
|
|
296
|
-
# if a formatter block is supplied, each loaded record is passed to it
|
297
|
-
# allowing annotation/conversion of records using data from the model
|
298
|
-
# and current request (e.g groups are annotated with 'admin' if the
|
299
|
-
# currently logged in user is an admin of the group). nils are removed
|
300
|
-
# from the list.
|
301
317
|
Elastic.count(query)[COUNT]
|
302
318
|
end
|
303
319
|
|
304
320
|
|
305
|
-
protected
|
306
|
-
|
307
|
-
|
308
321
|
def generate_body(builder)
|
309
322
|
opt = builder.build
|
310
323
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: co-elastic-query
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephen von Takach
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-06-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|