elasticsearch-persistence 5.0.2 → 6.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.rspec +2 -0
- data/Gemfile +9 -0
- data/README.md +206 -338
- data/Rakefile +15 -12
- data/elasticsearch-persistence.gemspec +6 -7
- data/examples/notes/application.rb +3 -4
- data/lib/elasticsearch/persistence.rb +2 -110
- data/lib/elasticsearch/persistence/repository.rb +212 -53
- data/lib/elasticsearch/persistence/repository/dsl.rb +94 -0
- data/lib/elasticsearch/persistence/repository/find.rb +27 -10
- data/lib/elasticsearch/persistence/repository/response/results.rb +21 -8
- data/lib/elasticsearch/persistence/repository/search.rb +30 -18
- data/lib/elasticsearch/persistence/repository/serialize.rb +65 -7
- data/lib/elasticsearch/persistence/repository/store.rb +38 -44
- data/lib/elasticsearch/persistence/version.rb +1 -1
- data/spec/repository/find_spec.rb +179 -0
- data/spec/repository/response/results_spec.rb +128 -0
- data/spec/repository/search_spec.rb +181 -0
- data/spec/repository/serialize_spec.rb +53 -0
- data/spec/repository/store_spec.rb +327 -0
- data/spec/repository_spec.rb +723 -0
- data/spec/spec_helper.rb +32 -0
- metadata +26 -104
- data/examples/music/album.rb +0 -54
- data/examples/music/artist.rb +0 -70
- data/examples/music/artists/_form.html.erb +0 -8
- data/examples/music/artists/artists_controller.rb +0 -67
- data/examples/music/artists/artists_controller_test.rb +0 -53
- data/examples/music/artists/index.html.erb +0 -60
- data/examples/music/artists/show.html.erb +0 -54
- data/examples/music/assets/application.css +0 -257
- data/examples/music/assets/autocomplete.css +0 -48
- data/examples/music/assets/blank_artist.png +0 -0
- data/examples/music/assets/blank_cover.png +0 -0
- data/examples/music/assets/form.css +0 -113
- data/examples/music/index_manager.rb +0 -73
- data/examples/music/search/index.html.erb +0 -95
- data/examples/music/search/search_controller.rb +0 -41
- data/examples/music/search/search_controller_test.rb +0 -12
- data/examples/music/search/search_helper.rb +0 -15
- data/examples/music/suggester.rb +0 -69
- data/examples/music/template.rb +0 -430
- data/examples/music/vendor/assets/jquery-ui-1.10.4.custom.min.css +0 -7
- data/examples/music/vendor/assets/jquery-ui-1.10.4.custom.min.js +0 -6
- data/examples/music/vendor/assets/stylesheets/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
- data/lib/elasticsearch/persistence/client.rb +0 -51
- data/lib/elasticsearch/persistence/model.rb +0 -135
- data/lib/elasticsearch/persistence/model/base.rb +0 -87
- data/lib/elasticsearch/persistence/model/errors.rb +0 -8
- data/lib/elasticsearch/persistence/model/find.rb +0 -180
- data/lib/elasticsearch/persistence/model/rails.rb +0 -47
- data/lib/elasticsearch/persistence/model/store.rb +0 -254
- data/lib/elasticsearch/persistence/model/utils.rb +0 -0
- data/lib/elasticsearch/persistence/repository/class.rb +0 -71
- data/lib/elasticsearch/persistence/repository/naming.rb +0 -115
- data/lib/rails/generators/elasticsearch/model/model_generator.rb +0 -21
- data/lib/rails/generators/elasticsearch/model/templates/model.rb.tt +0 -9
- data/lib/rails/generators/elasticsearch_generator.rb +0 -2
- data/test/integration/model/model_basic_test.rb +0 -233
- data/test/integration/repository/custom_class_test.rb +0 -85
- data/test/integration/repository/customized_class_test.rb +0 -82
- data/test/integration/repository/default_class_test.rb +0 -116
- data/test/integration/repository/virtus_model_test.rb +0 -118
- data/test/test_helper.rb +0 -55
- data/test/unit/model_base_test.rb +0 -72
- data/test/unit/model_find_test.rb +0 -153
- data/test/unit/model_gateway_test.rb +0 -101
- data/test/unit/model_rails_test.rb +0 -112
- data/test/unit/model_store_test.rb +0 -576
- data/test/unit/persistence_test.rb +0 -32
- data/test/unit/repository_class_test.rb +0 -51
- data/test/unit/repository_client_test.rb +0 -32
- data/test/unit/repository_find_test.rb +0 -388
- data/test/unit/repository_indexing_test.rb +0 -37
- data/test/unit/repository_module_test.rb +0 -146
- data/test/unit/repository_naming_test.rb +0 -146
- data/test/unit/repository_response_results_test.rb +0 -98
- data/test/unit/repository_search_test.rb +0 -117
- data/test/unit/repository_serialize_test.rb +0 -57
- data/test/unit/repository_store_test.rb +0 -303
data/Rakefile
CHANGED
@@ -7,24 +7,27 @@ task :test => 'test:unit'
|
|
7
7
|
# ----- Test tasks ------------------------------------------------------------
|
8
8
|
|
9
9
|
require 'rake/testtask'
|
10
|
+
require 'rspec/core/rake_task'
|
11
|
+
|
10
12
|
namespace :test do
|
11
|
-
Rake::TestTask.new(:unit) do |test|
|
12
|
-
test.libs << 'lib' << 'test'
|
13
|
-
test.test_files = FileList["test/unit/**/*_test.rb"]
|
14
|
-
test.verbose = false
|
15
|
-
test.warning = false
|
16
|
-
end
|
17
13
|
|
18
|
-
|
19
|
-
|
20
|
-
|
14
|
+
RSpec::Core::RakeTask.new(:spec)
|
15
|
+
|
16
|
+
Rake::TestTask.new(:all) do |test|
|
21
17
|
test.verbose = false
|
22
18
|
test.warning = false
|
19
|
+
test.deps = [ :spec ]
|
23
20
|
end
|
21
|
+
end
|
24
22
|
|
25
|
-
|
26
|
-
|
27
|
-
|
23
|
+
namespace :bundle do
|
24
|
+
desc 'Install gem dependencies'
|
25
|
+
task :install do
|
26
|
+
puts '-'*80
|
27
|
+
Bundler.with_clean_env do
|
28
|
+
sh 'bundle install'
|
29
|
+
end
|
30
|
+
puts '-'*80
|
28
31
|
end
|
29
32
|
end
|
30
33
|
|
@@ -21,19 +21,18 @@ Gem::Specification.new do |s|
|
|
21
21
|
s.extra_rdoc_files = [ "README.md", "LICENSE.txt" ]
|
22
22
|
s.rdoc_options = [ "--charset=UTF-8" ]
|
23
23
|
|
24
|
-
s.required_ruby_version = ">=
|
24
|
+
s.required_ruby_version = ">= 2.2"
|
25
25
|
|
26
|
-
s.add_dependency "elasticsearch", '~>
|
27
|
-
s.add_dependency "elasticsearch-model", '
|
26
|
+
s.add_dependency "elasticsearch", '~> 6'
|
27
|
+
s.add_dependency "elasticsearch-model", '>= 5'
|
28
28
|
s.add_dependency "activesupport", '> 4'
|
29
29
|
s.add_dependency "activemodel", '> 4'
|
30
30
|
s.add_dependency "hashie"
|
31
|
-
s.add_dependency "virtus"
|
32
31
|
|
33
|
-
s.add_development_dependency "bundler"
|
32
|
+
s.add_development_dependency "bundler"
|
34
33
|
s.add_development_dependency "rake", "~> 11.1"
|
35
34
|
|
36
|
-
s.add_development_dependency "oj"
|
35
|
+
s.add_development_dependency "oj" unless defined?(JRUBY_VERSION)
|
37
36
|
|
38
37
|
s.add_development_dependency "rails", '> 4'
|
39
38
|
|
@@ -45,7 +44,7 @@ Gem::Specification.new do |s|
|
|
45
44
|
s.add_development_dependency "mocha"
|
46
45
|
s.add_development_dependency "turn"
|
47
46
|
s.add_development_dependency "yard"
|
48
|
-
s.add_development_dependency "ruby-prof"
|
47
|
+
s.add_development_dependency "ruby-prof" unless defined?(JRUBY_VERSION)
|
49
48
|
s.add_development_dependency "pry"
|
50
49
|
|
51
50
|
s.add_development_dependency "simplecov"
|
@@ -54,11 +54,12 @@ end
|
|
54
54
|
|
55
55
|
class NoteRepository
|
56
56
|
include Elasticsearch::Persistence::Repository
|
57
|
+
include Elasticsearch::Persistence::Repository::DSL
|
57
58
|
|
58
59
|
client Elasticsearch::Client.new url: ENV['ELASTICSEARCH_URL'], log: true
|
59
60
|
|
60
|
-
|
61
|
-
|
61
|
+
index_name :notes
|
62
|
+
document_type :note
|
62
63
|
|
63
64
|
mapping do
|
64
65
|
indexes :text, analyzer: 'snowball'
|
@@ -66,8 +67,6 @@ class NoteRepository
|
|
66
67
|
indexes :created_at, type: 'date'
|
67
68
|
end
|
68
69
|
|
69
|
-
create_index!
|
70
|
-
|
71
70
|
def deserialize(document)
|
72
71
|
Note.new document['_source'].merge('id' => document['_id'])
|
73
72
|
end
|
@@ -1,116 +1,8 @@
|
|
1
1
|
require 'hashie/mash'
|
2
2
|
|
3
3
|
require 'elasticsearch'
|
4
|
-
|
5
|
-
require 'elasticsearch/model/hash_wrapper'
|
6
|
-
require 'elasticsearch/model/indexing'
|
7
|
-
require 'elasticsearch/model/searching'
|
8
|
-
|
9
|
-
require 'active_support/inflector'
|
4
|
+
require 'elasticsearch/model'
|
10
5
|
|
11
6
|
require 'elasticsearch/persistence/version'
|
12
|
-
|
13
|
-
require 'elasticsearch/persistence/client'
|
14
|
-
require 'elasticsearch/persistence/repository/response/results'
|
15
|
-
require 'elasticsearch/persistence/repository/naming'
|
16
|
-
require 'elasticsearch/persistence/repository/serialize'
|
17
|
-
require 'elasticsearch/persistence/repository/store'
|
18
|
-
require 'elasticsearch/persistence/repository/find'
|
19
|
-
require 'elasticsearch/persistence/repository/search'
|
20
|
-
require 'elasticsearch/persistence/repository/class'
|
21
7
|
require 'elasticsearch/persistence/repository'
|
22
|
-
|
23
|
-
module Elasticsearch
|
24
|
-
|
25
|
-
# Persistence for Ruby domain objects and models in Elasticsearch
|
26
|
-
# ===============================================================
|
27
|
-
#
|
28
|
-
# `Elasticsearch::Persistence` contains modules for storing and retrieving Ruby domain objects and models
|
29
|
-
# in Elasticsearch.
|
30
|
-
#
|
31
|
-
# == Repository
|
32
|
-
#
|
33
|
-
# The repository patterns allows to store and retrieve Ruby objects in Elasticsearch.
|
34
|
-
#
|
35
|
-
# require 'elasticsearch/persistence'
|
36
|
-
#
|
37
|
-
# class Note
|
38
|
-
# def to_hash; {foo: 'bar'}; end
|
39
|
-
# end
|
40
|
-
#
|
41
|
-
# repository = Elasticsearch::Persistence::Repository.new
|
42
|
-
#
|
43
|
-
# repository.save Note.new
|
44
|
-
# # => {"_index"=>"repository", "_type"=>"note", "_id"=>"mY108X9mSHajxIy2rzH2CA", ...}
|
45
|
-
#
|
46
|
-
# Customize your repository by including the main module in a Ruby class
|
47
|
-
# class MyRepository
|
48
|
-
# include Elasticsearch::Persistence::Repository
|
49
|
-
#
|
50
|
-
# index 'my_notes'
|
51
|
-
# klass Note
|
52
|
-
#
|
53
|
-
# client Elasticsearch::Client.new log: true
|
54
|
-
# end
|
55
|
-
#
|
56
|
-
# repository = MyRepository.new
|
57
|
-
#
|
58
|
-
# repository.save Note.new
|
59
|
-
# # 2014-04-04 22:15:25 +0200: POST http://localhost:9200/my_notes/note [status:201, request:0.009s, query:n/a]
|
60
|
-
# # 2014-04-04 22:15:25 +0200: > {"foo":"bar"}
|
61
|
-
# # 2014-04-04 22:15:25 +0200: < {"_index":"my_notes","_type":"note","_id":"-d28yXLFSlusnTxb13WIZQ", ...}
|
62
|
-
#
|
63
|
-
# == Model
|
64
|
-
#
|
65
|
-
# The active record pattern allows to use the interface familiar from ActiveRecord models:
|
66
|
-
#
|
67
|
-
# require 'elasticsearch/persistence'
|
68
|
-
#
|
69
|
-
# class Article
|
70
|
-
# attribute :title, String, mapping: { analyzer: 'snowball' }
|
71
|
-
# end
|
72
|
-
#
|
73
|
-
# article = Article.new id: 1, title: 'Test'
|
74
|
-
# article.save
|
75
|
-
#
|
76
|
-
# Article.find(1)
|
77
|
-
#
|
78
|
-
# article.update_attributes title: 'Update'
|
79
|
-
#
|
80
|
-
# article.destroy
|
81
|
-
#
|
82
|
-
module Persistence
|
83
|
-
|
84
|
-
# :nodoc:
|
85
|
-
module ClassMethods
|
86
|
-
|
87
|
-
# Get or set the default client for all repositories and models
|
88
|
-
#
|
89
|
-
# @example Set and configure the default client
|
90
|
-
#
|
91
|
-
# Elasticsearch::Persistence.client Elasticsearch::Client.new host: 'http://localhost:9200', tracer: true
|
92
|
-
#
|
93
|
-
# @example Perform an API request through the client
|
94
|
-
#
|
95
|
-
# Elasticsearch::Persistence.client.cluster.health
|
96
|
-
# # => { "cluster_name" => "elasticsearch" ... }
|
97
|
-
#
|
98
|
-
def client client=nil
|
99
|
-
@client = client || @client || Elasticsearch::Client.new
|
100
|
-
end
|
101
|
-
|
102
|
-
# Set the default client for all repositories and models
|
103
|
-
#
|
104
|
-
# @example Set and configure the default client
|
105
|
-
#
|
106
|
-
# Elasticsearch::Persistence.client = Elasticsearch::Client.new host: 'http://localhost:9200', tracer: true
|
107
|
-
# => #<Elasticsearch::Transport::Client:0x007f96a6dd0d80 @transport=... >
|
108
|
-
#
|
109
|
-
def client=(client)
|
110
|
-
@client = client
|
111
|
-
end
|
112
|
-
end
|
113
|
-
|
114
|
-
extend ClassMethods
|
115
|
-
end
|
116
|
-
end
|
8
|
+
require 'elasticsearch/persistence/repository/response/results'
|
@@ -1,77 +1,236 @@
|
|
1
|
+
require 'elasticsearch/persistence/repository/dsl'
|
2
|
+
require 'elasticsearch/persistence/repository/find'
|
3
|
+
require 'elasticsearch/persistence/repository/store'
|
4
|
+
require 'elasticsearch/persistence/repository/serialize'
|
5
|
+
require 'elasticsearch/persistence/repository/search'
|
6
|
+
|
1
7
|
module Elasticsearch
|
2
8
|
module Persistence
|
3
9
|
|
4
|
-
#
|
10
|
+
# The base Repository mixin. This module should be included in classes that
|
11
|
+
# represent an Elasticsearch repository.
|
5
12
|
#
|
6
|
-
|
7
|
-
|
8
|
-
|
13
|
+
# @since 6.0.0
|
14
|
+
module Repository
|
15
|
+
include Store
|
16
|
+
include Serialize
|
17
|
+
include Find
|
18
|
+
include Search
|
19
|
+
include Elasticsearch::Model::Indexing::ClassMethods
|
20
|
+
|
21
|
+
def self.included(base)
|
22
|
+
base.send(:extend, ClassMethods)
|
9
23
|
end
|
10
24
|
|
11
|
-
|
12
|
-
|
25
|
+
module ClassMethods
|
26
|
+
|
27
|
+
# Initialize a repository instance. Optionally provide a block to define index mappings or
|
28
|
+
# settings on the repository instance.
|
29
|
+
#
|
30
|
+
# @example Create a new repository.
|
31
|
+
# MyRepository.create(index_name: 'notes', klass: Note)
|
32
|
+
#
|
33
|
+
# @example Create a new repository and evaluate a block on it.
|
34
|
+
# MyRepository.create(index_name: 'notes', klass: Note) do
|
35
|
+
# mapping dynamic: 'strict' do
|
36
|
+
# indexes :title
|
37
|
+
# end
|
38
|
+
# end
|
39
|
+
#
|
40
|
+
# @param [ Hash ] options The options to use.
|
41
|
+
# @param [ Proc ] block A block to evaluate on the new repository instance.
|
42
|
+
#
|
43
|
+
# @option options [ Symbol, String ] :index_name The name of the index.
|
44
|
+
# @option options [ Symbol, String ] :document_type The type of documents persisted in this repository.
|
45
|
+
# @option options [ Symbol, String ] :client The client used to handle requests to and from Elasticsearch.
|
46
|
+
# @option options [ Symbol, String ] :klass The class used to instantiate an object when documents are
|
47
|
+
# deserialized. The default is nil, in which case the raw document will be returned as a Hash.
|
48
|
+
# @option options [ Elasticsearch::Model::Indexing::Mappings, Hash ] :mapping The mapping for this index.
|
49
|
+
# @option options [ Elasticsearch::Model::Indexing::Settings, Hash ] :settings The settings for this index.
|
50
|
+
#
|
51
|
+
# @since 6.0.0
|
52
|
+
def create(options = {}, &block)
|
53
|
+
new(options).tap do |obj|
|
54
|
+
obj.instance_eval(&block) if block_given?
|
55
|
+
end
|
56
|
+
end
|
13
57
|
end
|
14
58
|
|
15
|
-
|
16
|
-
|
59
|
+
# The default index name.
|
60
|
+
#
|
61
|
+
# @return [ String ] The default index name.
|
62
|
+
#
|
63
|
+
# @since 6.0.0
|
64
|
+
DEFAULT_INDEX_NAME = 'repository'.freeze
|
65
|
+
|
66
|
+
# The default document type.
|
67
|
+
#
|
68
|
+
# @return [ String ] The default document type.
|
69
|
+
#
|
70
|
+
# @note the document type will no longer be configurable in future versions
|
71
|
+
# of Elasticsearch.
|
72
|
+
#
|
73
|
+
# @since 6.0.0
|
74
|
+
DEFAULT_DOC_TYPE = '_doc'.freeze
|
75
|
+
|
76
|
+
# The repository options.
|
77
|
+
#
|
78
|
+
# @return [ Hash ]
|
79
|
+
#
|
80
|
+
# @since 6.0.0
|
81
|
+
attr_reader :options
|
82
|
+
|
83
|
+
# Initialize a repository instance.
|
84
|
+
#
|
85
|
+
# @example Initialize the repository.
|
86
|
+
# MyRepository.new(index_name: 'notes', klass: Note)
|
87
|
+
#
|
88
|
+
# @param [ Hash ] options The options to use.
|
89
|
+
#
|
90
|
+
# @option options [ Symbol, String ] :index_name The name of the index.
|
91
|
+
# @option options [ Symbol, String ] :document_type The type of documents persisted in this repository.
|
92
|
+
# @option options [ Symbol, String ] :client The client used to handle requests to and from Elasticsearch.
|
93
|
+
# @option options [ Symbol, String ] :klass The class used to instantiate an object when documents are
|
94
|
+
# deserialized. The default is nil, in which case the raw document will be returned as a Hash.
|
95
|
+
# @option options [ Elasticsearch::Model::Indexing::Mappings, Hash ] :mapping The mapping for this index.
|
96
|
+
# @option options [ Elasticsearch::Model::Indexing::Settings, Hash ] :settings The settings for this index.
|
97
|
+
#
|
98
|
+
# @since 6.0.0
|
99
|
+
def initialize(options = {})
|
100
|
+
@options = options
|
17
101
|
end
|
18
|
-
end
|
19
102
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
103
|
+
# Get the client used by the repository.
|
104
|
+
#
|
105
|
+
# @example
|
106
|
+
# repository.client
|
107
|
+
#
|
108
|
+
# @return [ Elasticsearch::Client ] The repository's client.
|
109
|
+
#
|
110
|
+
# @since 6.0.0
|
111
|
+
def client
|
112
|
+
@client ||= @options[:client] ||
|
113
|
+
__get_class_value(:client) ||
|
114
|
+
Elasticsearch::Client.new
|
115
|
+
end
|
33
116
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
117
|
+
# Get the document type used by the repository object.
|
118
|
+
#
|
119
|
+
# @example
|
120
|
+
# repository.document_type
|
121
|
+
#
|
122
|
+
# @return [ String, Symbol ] The repository's document type.
|
123
|
+
#
|
124
|
+
# @since 6.0.0
|
125
|
+
def document_type
|
126
|
+
@document_type ||= @options[:document_type] ||
|
127
|
+
__get_class_value(:document_type) ||
|
128
|
+
DEFAULT_DOC_TYPE
|
129
|
+
end
|
40
130
|
|
41
|
-
|
42
|
-
|
131
|
+
# Get the index name used by the repository.
|
132
|
+
#
|
133
|
+
# @example
|
134
|
+
# repository.index_name
|
135
|
+
#
|
136
|
+
# @return [ String, Symbol ] The repository's index name.
|
137
|
+
#
|
138
|
+
# @since 6.0.0
|
139
|
+
def index_name
|
140
|
+
@index_name ||= @options[:index_name] ||
|
141
|
+
__get_class_value(:index_name) ||
|
142
|
+
DEFAULT_INDEX_NAME
|
143
|
+
end
|
43
144
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
145
|
+
# Get the class used by the repository when deserializing.
|
146
|
+
#
|
147
|
+
# @example
|
148
|
+
# repository.klass
|
149
|
+
#
|
150
|
+
# @return [ Class ] The repository's klass for deserializing.
|
151
|
+
#
|
152
|
+
# @since 6.0.0
|
153
|
+
def klass
|
154
|
+
@klass ||= @options[:klass] || __get_class_value(:klass)
|
155
|
+
end
|
156
|
+
|
157
|
+
# Get the index mapping. Optionally pass a block to define the mappings.
|
158
|
+
#
|
159
|
+
# @example
|
160
|
+
# repository.mapping
|
161
|
+
#
|
162
|
+
# @example Set the mappings with a block.
|
163
|
+
# repository.mapping dynamic: 'strict' do
|
164
|
+
# indexes :foo
|
165
|
+
# end
|
166
|
+
# end
|
167
|
+
#
|
168
|
+
# @note If mappings were set when the repository was created, a block passed to this
|
169
|
+
# method will not be evaluated.
|
170
|
+
#
|
171
|
+
# @return [ Elasticsearch::Model::Indexing::Mappings ] The index mappings.
|
172
|
+
#
|
173
|
+
# @since 6.0.0
|
174
|
+
def mapping(*args)
|
175
|
+
@memoized_mapping ||= @options[:mapping] || (begin
|
176
|
+
if _mapping = __get_class_value(:mapping)
|
177
|
+
_mapping.instance_variable_set(:@type, document_type)
|
178
|
+
_mapping
|
51
179
|
end
|
180
|
+
end) || (super && @mapping)
|
181
|
+
end
|
182
|
+
alias :mappings :mapping
|
52
183
|
|
53
|
-
|
54
|
-
|
184
|
+
# Get the index settings.
|
185
|
+
#
|
186
|
+
# @example
|
187
|
+
# repository.settings
|
188
|
+
#
|
189
|
+
# @example Set the settings with a block.
|
190
|
+
# repository.settings number_of_shards: 1, number_of_replicas: 0 do
|
191
|
+
# mapping dynamic: 'strict' do
|
192
|
+
# indexes :foo do
|
193
|
+
# indexes :bar
|
194
|
+
# end
|
195
|
+
# end
|
196
|
+
# end
|
197
|
+
#
|
198
|
+
# @return [ Elasticsearch::Model::Indexing::Settings ] The index settings.
|
199
|
+
#
|
200
|
+
# @since 6.0.0
|
201
|
+
def settings(*args)
|
202
|
+
@memoized_settings ||= @options[:settings] || __get_class_value(:settings) || (super && @settings)
|
203
|
+
end
|
55
204
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
205
|
+
# Determine whether the index with this repository's index name exists.
|
206
|
+
#
|
207
|
+
# @example
|
208
|
+
# repository.index_exists?
|
209
|
+
#
|
210
|
+
# @return [ true, false ] Whether the index exists.
|
211
|
+
#
|
212
|
+
# @since 6.0.0
|
213
|
+
def index_exists?(*args)
|
214
|
+
super
|
64
215
|
end
|
65
216
|
|
66
|
-
#
|
217
|
+
# Get the nicer formatted string for use in inspection.
|
67
218
|
#
|
68
|
-
# @example
|
219
|
+
# @example Inspect the repository.
|
220
|
+
# repository.inspect
|
69
221
|
#
|
70
|
-
#
|
222
|
+
# @return [ String ] The repository inspection.
|
71
223
|
#
|
72
|
-
|
73
|
-
|
74
|
-
|
224
|
+
# @since 6.0.0
|
225
|
+
def inspect
|
226
|
+
"#<#{self.class}:0x#{object_id} index_name=#{index_name} document_type=#{document_type} klass=#{klass}>"
|
227
|
+
end
|
228
|
+
|
229
|
+
private
|
230
|
+
|
231
|
+
def __get_class_value(_method_)
|
232
|
+
self.class.send(_method_) if self.class.respond_to?(_method_)
|
233
|
+
end
|
75
234
|
end
|
76
235
|
end
|
77
236
|
end
|