search_flip 2.1.0.beta2 → 2.1.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/README.md +112 -7
- data/lib/search_flip/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: cda3eb59fdf7fabf986510c923cbded7f6a1219d734be60a406265d7ec685893
|
|
4
|
+
data.tar.gz: a30be3c6195e1864b4a37899e079e096129692ec0bb5ac0f78a0cceaf15468a2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: df70d9f06aecbd84e7a5cb1ec16ffdd408a53da7a08f15fac4761a2e70b38b667ee4688abe7d81195eb6389e6decf2b591689a7002b75ca28cae16f8fa5bb88b
|
|
7
|
+
data.tar.gz: f903399ac8baa4b4a41ebcf3d378b64fbae236a553dc975b90b3c13a9b50e39bdbc6508a6098884510205ae42a55bf057a94f2fa73a4906a5d053d4f86ac7ba8
|
data/README.md
CHANGED
|
@@ -297,9 +297,116 @@ temporary, class inherting from UserIndex and overwriting `index_name`.
|
|
|
297
297
|
SearchFlip supports even more advanced usages, like e.g. post filters, filtered
|
|
298
298
|
aggregations or nested aggregations via simple to use API methods.
|
|
299
299
|
|
|
300
|
-
###
|
|
300
|
+
### Query/Filter Criteria Methods
|
|
301
301
|
|
|
302
|
-
|
|
302
|
+
SearchFlip provides powerful methods to query/filter Elasticsearch:
|
|
303
|
+
|
|
304
|
+
* `where`
|
|
305
|
+
|
|
306
|
+
Feels like ActiveRecord's `where` and performs a bool filter clause
|
|
307
|
+
to the request:
|
|
308
|
+
|
|
309
|
+
```ruby
|
|
310
|
+
CommentIndex.where(reviewed: true)
|
|
311
|
+
CommentIndex.where(likes: 0 .. 10_000)
|
|
312
|
+
CommentIndex.where(state: ["approved", "rejected"])
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
* `where_not`
|
|
316
|
+
|
|
317
|
+
Like `where`, but exluding the matching documents:
|
|
318
|
+
|
|
319
|
+
```ruby
|
|
320
|
+
CommentIndex.where_not(id: [1, 2, 3])
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
* `range`
|
|
324
|
+
|
|
325
|
+
To add a range filter query:
|
|
326
|
+
|
|
327
|
+
```ruby
|
|
328
|
+
CommentIndex.range(:created_at, gt: Date.today - 1.week, lt: Date.today)
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
* `filter`
|
|
332
|
+
|
|
333
|
+
Use `filter` to add raw filter queries:
|
|
334
|
+
|
|
335
|
+
```ruby
|
|
336
|
+
CommentIndex.filter(term: { state: "approved" })
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
* `should`
|
|
340
|
+
|
|
341
|
+
Use `should` to add raw should queries:
|
|
342
|
+
|
|
343
|
+
```ruby
|
|
344
|
+
CommentIndex.should(term: { state: "approved" })
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
* `must`
|
|
348
|
+
|
|
349
|
+
Use `must` to add raw must queries:
|
|
350
|
+
|
|
351
|
+
```ruby
|
|
352
|
+
CommentIndex.must(term: { state: "approved" })
|
|
353
|
+
|
|
354
|
+
CommentIndex.must(
|
|
355
|
+
bool: {
|
|
356
|
+
should: [
|
|
357
|
+
{ terms: { state: ["approved", "rejected"] }},
|
|
358
|
+
{ term: { username: "mrkamel" }}
|
|
359
|
+
]
|
|
360
|
+
}
|
|
361
|
+
)
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
* `must_not`
|
|
365
|
+
|
|
366
|
+
Like `must`, but excluding the matching documents:
|
|
367
|
+
|
|
368
|
+
```ruby
|
|
369
|
+
CommentIndex.must_not(term: { state: "approved" })
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
* `search`
|
|
373
|
+
|
|
374
|
+
Adds a query string query, with AND as default filter:
|
|
375
|
+
|
|
376
|
+
```ruby
|
|
377
|
+
CommentIndex.search("harry potter")
|
|
378
|
+
CommentIndex.search("state:approved")
|
|
379
|
+
CommentIndex.search("username:a*")
|
|
380
|
+
CommentIndex.search("state:approved OR state:rejected")
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
* `exists`
|
|
384
|
+
|
|
385
|
+
Use `exists` to add an `exists` query:
|
|
386
|
+
|
|
387
|
+
```ruby
|
|
388
|
+
CommentIndex.exists(:state)
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
* `exists_not`
|
|
392
|
+
|
|
393
|
+
Like `exists`, but excluding the matching documents:
|
|
394
|
+
|
|
395
|
+
```ruby
|
|
396
|
+
CommentIndex.exists_not(:state)
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
* `match_all`
|
|
400
|
+
|
|
401
|
+
Simply matches all documents:
|
|
402
|
+
|
|
403
|
+
```ruby
|
|
404
|
+
CommentIndex.match_all
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
### Post Query/Filter Criteria Methods
|
|
408
|
+
|
|
409
|
+
All query/filter criteria methods (`#where`, `#where_not`, `#range`, etc.) are available
|
|
303
410
|
in post filter mode as well, ie. filters/queries applied after aggregations
|
|
304
411
|
are calculated. Checkout the ElasticSearch docs for further info.
|
|
305
412
|
|
|
@@ -379,11 +486,10 @@ query = CommentIndex.highlight(:title).search("hello")
|
|
|
379
486
|
query.results[0]._hit.highlight.title # => "<em>hello</em> world"
|
|
380
487
|
```
|
|
381
488
|
|
|
382
|
-
###
|
|
489
|
+
### Other Criteria Methods
|
|
383
490
|
|
|
384
|
-
There are
|
|
385
|
-
|
|
386
|
-
`find_results_in_batches`, `failsafe` and `unscope` to name just a few:
|
|
491
|
+
There are so many chainable criteria methods to make your life easier.
|
|
492
|
+
For a full list, checkout the reference docs.
|
|
387
493
|
|
|
388
494
|
* `source`
|
|
389
495
|
|
|
@@ -714,4 +820,3 @@ $ rspec
|
|
|
714
820
|
```
|
|
715
821
|
|
|
716
822
|
That's it.
|
|
717
|
-
|
data/lib/search_flip/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: search_flip
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.1.0
|
|
4
|
+
version: 2.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Benjamin Vetter
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2019-05-
|
|
11
|
+
date: 2019-05-10 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activerecord
|
|
@@ -229,9 +229,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
229
229
|
version: '0'
|
|
230
230
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
231
231
|
requirements:
|
|
232
|
-
- - "
|
|
232
|
+
- - ">="
|
|
233
233
|
- !ruby/object:Gem::Version
|
|
234
|
-
version:
|
|
234
|
+
version: '0'
|
|
235
235
|
requirements: []
|
|
236
236
|
rubyforge_project:
|
|
237
237
|
rubygems_version: 2.7.3
|