elasticsearch_record 1.5.0 → 1.5.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/README.md +12 -7
- data/docs/CHANGELOG.md +4 -0
- data/elasticsearch_record.gemspec +1 -0
- data/lib/active_record/connection_adapters/elasticsearch/schema_definitions/table_mapping_definition.rb +1 -1
- data/lib/elasticsearch_record/gem_version.rb +1 -1
- data/lib/elasticsearch_record/model_api.rb +80 -2
- metadata +21 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b6e4ca9acc6ee9abda4a3dacec4a75f9f1af77c361dbff3b53aa30648dfa5a5f
|
4
|
+
data.tar.gz: f6cf2edda611efb7daa6585764c09c2320040c8970555d64dab96ced763d2f19
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1d9327c0b6500d47ec5459ebd5e6053d8178d59b33cd690d5f9a2752ec22cc52d2728b295dd4644c5f7fa6b794c6a8d69305b372c6c138e2ae8c717500669453
|
7
|
+
data.tar.gz: 050e345874250113d23c69d4de6d3c8f35c7c6b4538fe8d1ee3dbeaf86a64dc7c745175a8301c5d78121481927bff34033a321e390fbaddf3356110951afb3c4
|
data/README.md
CHANGED
@@ -56,6 +56,7 @@ Or install it yourself as:
|
|
56
56
|
## Setup
|
57
57
|
|
58
58
|
### a) Update your **database.yml** and add a elasticsearch connection:
|
59
|
+
|
59
60
|
```yml
|
60
61
|
# config/database.yml
|
61
62
|
|
@@ -115,6 +116,7 @@ end
|
|
115
116
|
```
|
116
117
|
|
117
118
|
### c) Create a model that inherits from `ElasticsearchRecord::Base` model.
|
119
|
+
|
118
120
|
```ruby
|
119
121
|
# app/models/application_elasticsearch_record.rb
|
120
122
|
|
@@ -135,6 +137,7 @@ end
|
|
135
137
|
```
|
136
138
|
|
137
139
|
### d) have FUN with your model:
|
140
|
+
|
138
141
|
```ruby
|
139
142
|
scope = Search
|
140
143
|
.where(name: 'Custom Object Name')
|
@@ -155,12 +158,13 @@ scope.where(kind: :undefined).offset(10).update_all(name: "New Name")
|
|
155
158
|
|
156
159
|
## Active Record Query Interface
|
157
160
|
|
158
|
-
### Refactored
|
161
|
+
### Refactored `where` method:
|
159
162
|
Different to the default where-method you can now use it in different ways.
|
160
163
|
|
161
164
|
Using it by default with a Hash, the method decides itself to either add a filter, or must_not clause.
|
162
165
|
|
163
|
-
_Hint: If not provided through
|
166
|
+
_Hint: If not provided through `#kind`-method a default kind **:bool** will be used._
|
167
|
+
|
164
168
|
```ruby
|
165
169
|
# use it by default
|
166
170
|
Search.where(name: 'A nice object')
|
@@ -213,7 +217,6 @@ results_count = scope.count
|
|
213
217
|
# > 5
|
214
218
|
total = scope.total
|
215
219
|
# > 3335
|
216
|
-
|
217
220
|
```
|
218
221
|
|
219
222
|
### Available query/relation chain methods
|
@@ -322,7 +325,6 @@ Elasticsearch's default value for queries without a **size** is forced to **10**
|
|
322
325
|
To provide a similar behaviour as the (my)SQL interface,
|
323
326
|
this can be automatically set to the `max_result_window` value by calling `.limit(nil)` on the models' relation.
|
324
327
|
|
325
|
-
|
326
328
|
```ruby
|
327
329
|
SearchUser.where(name: 'Peter').limit(nil)
|
328
330
|
# returns a maximum of 10 items ...
|
@@ -350,6 +352,7 @@ SearchUser.where(name: 'Peter').limit(nil)
|
|
350
352
|
Quick access to model-related methods for easier access without creating a overcomplicated method call on the models connection...
|
351
353
|
|
352
354
|
Access these methods through the model class method `.api`.
|
355
|
+
|
353
356
|
```ruby
|
354
357
|
# returns mapping of model class
|
355
358
|
klass.api.mappings
|
@@ -523,7 +526,6 @@ class AddTests < ActiveRecord::Migration[7.0]
|
|
523
526
|
end
|
524
527
|
```
|
525
528
|
|
526
|
-
|
527
529
|
## environment-related-table-name:
|
528
530
|
Using the `_env_table_name`-method will resolve the table (index) name within the current environment,
|
529
531
|
even if the environments shares the same cluster ...
|
@@ -533,11 +535,14 @@ Within the migration the `_env_table_name`-method must be used in combination wi
|
|
533
535
|
|
534
536
|
**Example:**
|
535
537
|
Production uses a index suffix with '-pro', development uses '-dev' - they share the same cluster, but different indexes.
|
538
|
+
|
536
539
|
For the **settings** table:
|
537
|
-
|
538
|
-
|
540
|
+
|
541
|
+
* settings-pro
|
542
|
+
* settings-dev
|
539
543
|
|
540
544
|
A single migration can be created to be used within each environment:
|
545
|
+
|
541
546
|
```ruby
|
542
547
|
# Example migration
|
543
548
|
class AddSettings < ActiveRecord::Migration[7.0]
|
data/docs/CHANGELOG.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# ElasticsearchRecord - CHANGELOG
|
2
2
|
|
3
|
+
## [1.5.1] - 2023-07-11
|
4
|
+
* [fix] `ElasticsearchRecord::ModelApi` 'drop!' & 'truncate!' methods to support correct parameter 'confirm'
|
5
|
+
* [ref] improved yard documentation
|
6
|
+
|
3
7
|
## [1.5.0] - 2023-07-10
|
4
8
|
* [add] additional `ElasticsearchRecord::ModelApi` methods **drop!** & **truncate!**, which have to be called with a `confirm:true` parameter
|
5
9
|
* [add] `.ElasticsearchRecord::Base.delegate_query_nil_limit` to automatically delegate a relations `limit(nil)`-call to the **max_result_window** _(set to 10.000 as default)_
|
@@ -40,4 +40,5 @@ DESC
|
|
40
40
|
spec.add_development_dependency 'rake', "~> 13.0"
|
41
41
|
spec.add_development_dependency 'yard', '~> 0.9'
|
42
42
|
spec.add_development_dependency 'yard-activesupport-concern', '~> 0.0.1'
|
43
|
+
spec.add_development_dependency 'yard-relative_markdown_links', '>= 0.4'
|
43
44
|
end
|
@@ -33,8 +33,8 @@ module ElasticsearchRecord
|
|
33
33
|
# drop!(confirm: true)
|
34
34
|
# truncate!(confirm: true)
|
35
35
|
%w(drop truncate).each do |method|
|
36
|
-
define_method("#{method}!") do |
|
37
|
-
raise "#{method} of table '#{_index_name}' aborted!\nexecution not confirmed!\ncall with: #{klass}.api.#{method}!(
|
36
|
+
define_method("#{method}!") do |confirm: false|
|
37
|
+
raise "#{method} of table '#{_index_name}' aborted!\nexecution not confirmed!\ncall with: #{klass}.api.#{method}!(confirm: true)" unless confirm
|
38
38
|
_connection.send("#{method}_table", _index_name)
|
39
39
|
end
|
40
40
|
end
|
@@ -68,6 +68,84 @@ module ElasticsearchRecord
|
|
68
68
|
end
|
69
69
|
end
|
70
70
|
|
71
|
+
# -- DYNAMIC METHOD DOCUMENTATION FOR YARD -------------------------------------------------------------------------
|
72
|
+
|
73
|
+
# @!method open!
|
74
|
+
# Shortcut to open the closed index.
|
75
|
+
# @return [Boolean] acknowledged status
|
76
|
+
|
77
|
+
# @!method close!
|
78
|
+
# Shortcut to close the opened index.
|
79
|
+
# @return [Boolean] acknowledged status
|
80
|
+
|
81
|
+
# @!method refresh!
|
82
|
+
# Shortcut to refresh the index.
|
83
|
+
# @return [Boolean] result state (returns false if refreshing failed)
|
84
|
+
|
85
|
+
# @!method block!
|
86
|
+
# Shortcut to block write access on the index
|
87
|
+
# @return [Boolean] acknowledged status
|
88
|
+
|
89
|
+
# @!method unblock!
|
90
|
+
# Shortcut to unblock all blocked accesses on the index
|
91
|
+
# @return [Boolean] acknowledged status
|
92
|
+
|
93
|
+
# @!method drop!(confirm: false)
|
94
|
+
# Shortcut to drop the index
|
95
|
+
# @param confirm
|
96
|
+
# @return [Boolean] acknowledged status
|
97
|
+
|
98
|
+
# @!method truncate!(confirm: false)
|
99
|
+
# Shortcut to truncate the index
|
100
|
+
# @param confirm
|
101
|
+
# @return [Boolean] acknowledged status
|
102
|
+
|
103
|
+
# @!method mappings
|
104
|
+
# Shortcut for mappings
|
105
|
+
# @return [Hash]
|
106
|
+
|
107
|
+
# @!method metas
|
108
|
+
# Shortcut for metas
|
109
|
+
# @return [Hash]
|
110
|
+
|
111
|
+
# @!method settings(flat_settings=true)
|
112
|
+
# Shortcut for settings
|
113
|
+
# @param [Boolean] flat_settings (default: true)
|
114
|
+
# @return [Hash]
|
115
|
+
|
116
|
+
# @!method aliases
|
117
|
+
# Shortcut for aliases
|
118
|
+
# @return [Hash]
|
119
|
+
|
120
|
+
# @!method state
|
121
|
+
# Shortcut for state
|
122
|
+
# @return [Hash]
|
123
|
+
|
124
|
+
# @!method schema(features=[])
|
125
|
+
# Shortcut for schema
|
126
|
+
# @param [Array, Symbol] features
|
127
|
+
# @return [Hash]
|
128
|
+
|
129
|
+
# @!method exists?
|
130
|
+
# Shortcut for exists
|
131
|
+
# @return [Boolean]
|
132
|
+
|
133
|
+
# @!method alias_exists?
|
134
|
+
# Shortcut for alias_exists
|
135
|
+
# @return [Boolean]
|
136
|
+
|
137
|
+
# @!method setting_exists?
|
138
|
+
# Shortcut for setting_exists
|
139
|
+
# @return [Boolean]
|
140
|
+
|
141
|
+
# @!method mapping_exists?
|
142
|
+
# Shortcut for mapping_exists
|
143
|
+
# @return [Boolean]
|
144
|
+
|
145
|
+
# @!method meta_exists?
|
146
|
+
# Shortcut for meta_exists
|
147
|
+
# @return [Boolean]
|
148
|
+
|
71
149
|
# fast insert/update data.
|
72
150
|
#
|
73
151
|
# @example
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: elasticsearch_record
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tobias Gonsior
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-07-
|
11
|
+
date: 2023-07-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -94,10 +94,24 @@ dependencies:
|
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: 0.0.1
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: yard-relative_markdown_links
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0.4'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0.4'
|
97
111
|
description: 'ElasticsearchRecord is a ActiveRecord adapter and provides similar functionality
|
98
112
|
for Elasticsearch.
|
99
113
|
|
100
|
-
'
|
114
|
+
'
|
101
115
|
email:
|
102
116
|
- info@ruby-smart.org
|
103
117
|
executables: []
|
@@ -191,7 +205,7 @@ metadata:
|
|
191
205
|
source_code_uri: https://github.com/ruby-smart/elasticsearch_record
|
192
206
|
documentation_uri: https://rubydoc.info/gems/elasticsearch_record
|
193
207
|
changelog_uri: https://github.com/ruby-smart/elasticsearch_record/blob/main/docs/CHANGELOG.md
|
194
|
-
post_install_message:
|
208
|
+
post_install_message:
|
195
209
|
rdoc_options: []
|
196
210
|
require_paths:
|
197
211
|
- lib
|
@@ -206,8 +220,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
206
220
|
- !ruby/object:Gem::Version
|
207
221
|
version: '0'
|
208
222
|
requirements: []
|
209
|
-
rubygems_version: 3.
|
210
|
-
signing_key:
|
223
|
+
rubygems_version: 3.3.26
|
224
|
+
signing_key:
|
211
225
|
specification_version: 4
|
212
226
|
summary: ActiveRecord adapter for Elasticsearch
|
213
227
|
test_files: []
|