elasticsearch-persistence 8.0.0.pre → 8.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 52529282eff2e19449adc41cf88e72665a81eb448335bea3422e5e1e7581eee4
4
- data.tar.gz: 28497c53094e055fced862f88d14f3e927ff36ffdccb26434dd6788a1d3dc40a
3
+ metadata.gz: 88bcaa32622770f7fe47c65cbc707b06719d51dd3f6c81e1690666e8ed224034
4
+ data.tar.gz: 60dc779f07f2fec1d368266fdba2a8f31de473e3dd53405fc0394159756fd524
5
5
  SHA512:
6
- metadata.gz: 5bad96a3f1cfd9718c5421b235d085b1b40f7ddb5086a7e4e1202388383ea6a6818e005e3521d3cac8a498cc5509e2e4ce1c3195e28763eb1dd8eef12c7899f5
7
- data.tar.gz: e97d49e8010f0f9e4bf184cb7fb4e76244247bb04893ab3cb60e164fa51527909a24eb417566ec5c561fb9665debe62b2c5cce16f8a50955355b6f4bf21b78ec
6
+ metadata.gz: 206ee66e4041b522a8ebc15d0b102068dfabcc7ad927654e45680bc9ff964f66affd581e050f73d3fc14cb2996c7cbfd2915c9c6d3acebceea73babc7f9e1e68
7
+ data.tar.gz: 4525c21fafaaae024b0e7343bbdd0c24ee0a90e251e21c1d54ecc5a83d5f07f69075fba4d537c49655bb210d189ffa7950463c8605848d5bde485e69d3882821
data/README.md CHANGED
@@ -4,18 +4,19 @@ Persistence layer for Ruby domain objects in Elasticsearch, using the Repository
4
4
 
5
5
  ## Compatibility
6
6
 
7
- This library is compatible with Ruby 2.4 and higher.
7
+ This library is compatible with Ruby 3.1 and higher.
8
8
 
9
- The version numbers follow the Elasticsearch major versions. Currently the `main` branch is compatible with version `7.x` of the Elasticsearch stack. **We haven't tested and updated the code for Elasticsearch `8.0` yet**.
9
+ The version numbers follow the Elasticsearch major versions. Currently the `main` branch is compatible with version `8.x` of the Elasticsearch stack.
10
10
 
11
- | Rubygem | | Elasticsearch |
12
- |:-------------:|:-:| :-----------: |
13
- | 0.1 | → | 1.x |
14
- | 2.x | → | 2.x |
15
- | 5.x | → | 5.x |
16
- | 6.x | → | 6.x |
17
- | 7.x | → | 7.x |
18
- | main | → | 7.x |
11
+ | Rubygem | | Elasticsearch |
12
+ |:-------:|:-:|:-------------:|
13
+ | 0.1 | → | 1.x |
14
+ | 2.x | → | 2.x |
15
+ | 5.x | → | 5.x |
16
+ | 6.x | → | 6.x |
17
+ | 7.x | → | 7.x |
18
+ | 8.x | → | 8.x |
19
+ | main | → | 8.x |
19
20
 
20
21
  ## Installation
21
22
 
@@ -78,7 +79,7 @@ note = Note.new id: 1, text: 'Test'
78
79
  repository.save(note)
79
80
  # PUT http://localhost:9200/repository/_doc/1 [status:201, request:0.210s, query:n/a]
80
81
  # > {"id":1,"text":"Test"}
81
- # < {"_index":"repository","_type":"note","_id":"1","_version":1,"created":true}
82
+ # < {"_index":"repository","_id":"1","_version":1,"created":true}
82
83
  ```
83
84
 
84
85
  ...find it...
@@ -86,7 +87,7 @@ repository.save(note)
86
87
  ```ruby
87
88
  n = repository.find(1)
88
89
  # GET http://localhost:9200/repository/_doc/1 [status:200, request:0.003s, query:n/a]
89
- # < {"_index":"repository","_type":"note","_id":"1","_version":2,"found":true, "_source" : {"id":1,"text":"Test"}}
90
+ # < {"_index":"repository","_id":"1","_version":2,"found":true, "_source" : {"id":1,"text":"Test"}}
90
91
  => <Note:0x007fcbfc0c4980 @attributes={"id"=>1, "text"=>"Test"}>
91
92
  ```
92
93
 
@@ -105,14 +106,14 @@ repository.search(query: { match: { text: 'test' } }).first
105
106
  ```ruby
106
107
  repository.delete(note)
107
108
  # DELETE http://localhost:9200/repository/_doc/1 [status:200, request:0.014s, query:n/a]
108
- # < {"found":true,"_index":"repository","_type":"note","_id":"1","_version":3}
109
- => {"found"=>true, "_index"=>"repository", "_type"=>"note", "_id"=>"1", "_version"=>2}
109
+ # < {"found":true,"_index":"repository","_id":"1","_version":3}
110
+ => {"found"=>true, "_index"=>"repository", "_id"=>"1", "_version"=>2}
110
111
  ```
111
112
 
112
113
  The repository module provides a number of features and facilities to configure and customize the behavior:
113
114
 
114
115
  * Configuring the Elasticsearch [client](https://github.com/elastic/elasticsearch-ruby#usage) being used
115
- * Setting the index name, document type, and object class for deserialization
116
+ * Setting the index name, and object class for deserialization
116
117
  * Composing mappings and settings for the index
117
118
  * Creating, deleting or refreshing the index
118
119
  * Finding or searching for documents
@@ -145,7 +146,7 @@ class MyRepository
145
146
  end
146
147
 
147
148
  client = Elasticsearch::Client.new(url: ENV['ELASTICSEARCH_URL'], log: true)
148
- repository = MyRepository.new(client: client, index_name: :my_notes, type: :note, klass: Note)
149
+ repository = MyRepository.new(client: client, index_name: :my_notes, klass: Note)
149
150
  repository.settings number_of_shards: 1 do
150
151
  mapping do
151
152
  indexes :text, analyzer: 'snowball'
@@ -153,8 +154,7 @@ repository.settings number_of_shards: 1 do
153
154
  end
154
155
  ```
155
156
 
156
- The custom Elasticsearch client will be used now, with a custom index and type names,
157
- as well as the custom serialization and de-serialization logic.
157
+ The custom Elasticsearch client will be used now, with a custom index, as well as the custom serialization and de-serialization logic.
158
158
 
159
159
  We can create the index with the desired settings and mappings:
160
160
 
@@ -170,7 +170,7 @@ Save the document with extra properties added by the `serialize` method:
170
170
  repository.save(note)
171
171
  # PUT http://localhost:9200/my_notes/note/1
172
172
  # > {"id":1,"text":"Test","my_special_key":"my_special_stuff"}
173
- {"_index"=>"my_notes", "_type"=>"my_note", "_id"=>"1", "_version"=>4, ... }
173
+ {"_index"=>"my_notes", "_id"=>"1", "_version"=>4, ... }
174
174
  ```
175
175
 
176
176
  And `deserialize` it:
@@ -194,7 +194,6 @@ class NoteRepository
194
194
  include Elasticsearch::Persistence::Repository::DSL
195
195
 
196
196
  index_name 'notes'
197
- document_type 'note'
198
197
  klass Note
199
198
 
200
199
  settings number_of_shards: 1 do
@@ -318,36 +317,8 @@ repository.index_name
318
317
 
319
318
  ```
320
319
 
321
- The `document_type` method specifies the Elasticsearch document type to use for storage, lookup and search. The default value is
322
- '_doc'. Keep in mind that future versions of Elasticsearch will not allow you to set this yourself and will use the type,
323
- '_doc'.
324
-
325
- ```ruby
326
- repository = NoteRepository.new(document_type: 'note')
327
- repository.document_type
328
- # => 'note'
329
-
330
- ```
331
-
332
- or with the DSL mixin:
333
-
334
- ```ruby
335
- class NoteRepository
336
- include Elasticsearch::Persistence::Repository
337
- include Elasticsearch::Persistence::Repository::DSL
338
-
339
- document_type 'note'
340
- end
341
-
342
- repository = NoteRepository.new
343
- repository.document_type
344
- # => 'note'
345
-
346
- ```
347
-
348
320
  The `klass` method specifies the Ruby class name to use when initializing objects from
349
- documents retrieved from the repository. If this value is not set, a Hash representation of the document will be
350
- returned instead.
321
+ documents retrieved from the repository. If this value is not set, a Hash representation of the document will be returned instead.
351
322
 
352
323
  ```ruby
353
324
  repository = NoteRepository.new(klass: Note)
@@ -452,7 +423,7 @@ The `save` method allows you to store a domain object in the repository:
452
423
  ```ruby
453
424
  note = Note.new id: 1, title: 'Quick Brown Fox'
454
425
  repository.save(note)
455
- # => {"_index"=>"notes_development", "_type"=>"_doc", "_id"=>"1", "_version"=>1, "created"=>true}
426
+ # => {"_index"=>"notes_development", "_id"=>"1", "_version"=>1, "created"=>true}
456
427
  ```
457
428
 
458
429
  The `update` method allows you to perform a partial update of a document in the repository.
@@ -460,14 +431,14 @@ Use either a partial document:
460
431
 
461
432
  ```ruby
462
433
  repository.update id: 1, title: 'UPDATED', tags: []
463
- # => {"_index"=>"notes_development", "_type"=>"_doc", "_id"=>"1", "_version"=>2}
434
+ # => {"_index"=>"notes_development", "_id"=>"1", "_version"=>2}
464
435
  ```
465
436
 
466
437
  Or a script (optionally with parameters):
467
438
 
468
439
  ```ruby
469
440
  repository.update 1, script: 'if (!ctx._source.tags.contains(t)) { ctx._source.tags += t }', params: { t: 'foo' }
470
- # => {"_index"=>"notes_development", "_type"=>"_doc", "_id"=>"1", "_version"=>3}
441
+ # => {"_index"=>"notes_development", "_id"=>"1", "_version"=>3}
471
442
  ```
472
443
 
473
444
 
@@ -44,7 +44,7 @@ Gem::Specification.new do |s|
44
44
  s.add_dependency 'activemodel', '> 4'
45
45
  s.add_dependency 'activesupport', '> 4'
46
46
  s.add_dependency 'elasticsearch', '~> 8'
47
- s.add_dependency 'elasticsearch-model', '8.0.0.pre'
47
+ s.add_dependency 'elasticsearch-model', '8'
48
48
  s.add_dependency 'hashie'
49
49
 
50
50
  s.add_development_dependency 'bundler'
@@ -17,6 +17,6 @@
17
17
 
18
18
  module Elasticsearch
19
19
  module Persistence
20
- VERSION = '8.0.0.pre'.freeze
20
+ VERSION = '8.0.0'.freeze
21
21
  end
22
22
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elasticsearch-persistence
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.0.0.pre
4
+ version: 8.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elastic Client Library Maintainers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-04-16 00:00:00.000000000 Z
11
+ date: 2024-05-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - '='
60
60
  - !ruby/object:Gem::Version
61
- version: 8.0.0.pre
61
+ version: '8'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - '='
67
67
  - !ruby/object:Gem::Version
68
- version: 8.0.0.pre
68
+ version: '8'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: hashie
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -335,7 +335,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
335
335
  - !ruby/object:Gem::Version
336
336
  version: '0'
337
337
  requirements: []
338
- rubygems_version: 3.5.3
338
+ rubygems_version: 3.5.9
339
339
  signing_key:
340
340
  specification_version: 4
341
341
  summary: Persistence layer for Ruby models and Elasticsearch.