esse 0.2.0 → 0.2.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.
Files changed (98) hide show
  1. checksums.yaml +4 -4
  2. data/lib/esse/cli/event_listener.rb +13 -0
  3. data/lib/esse/cli/generate.rb +53 -14
  4. data/lib/esse/cli/index/base_operation.rb +5 -13
  5. data/lib/esse/cli/index/close.rb +1 -1
  6. data/lib/esse/cli/index/create.rb +1 -1
  7. data/lib/esse/cli/index/delete.rb +1 -1
  8. data/lib/esse/cli/index/import.rb +6 -2
  9. data/lib/esse/cli/index/open.rb +1 -1
  10. data/lib/esse/cli/index/reset.rb +1 -1
  11. data/lib/esse/cli/index/update_aliases.rb +2 -2
  12. data/lib/esse/cli/index/update_mapping.rb +9 -5
  13. data/lib/esse/cli/index/update_settings.rb +1 -1
  14. data/lib/esse/cli/index.rb +11 -4
  15. data/lib/esse/cli/templates/collection.rb.erb +29 -0
  16. data/lib/esse/cli/templates/config.rb.erb +13 -3
  17. data/lib/esse/cli/templates/document.rb.erb +34 -0
  18. data/lib/esse/cli/templates/index.rb.erb +63 -114
  19. data/lib/esse/cli/templates/mappings.json +27 -0
  20. data/lib/esse/cli/templates/settings.json +62 -0
  21. data/lib/esse/cli.rb +5 -0
  22. data/lib/esse/cluster.rb +93 -12
  23. data/lib/esse/cluster_engine.rb +42 -0
  24. data/lib/esse/collection.rb +18 -0
  25. data/lib/esse/config.rb +14 -2
  26. data/lib/esse/core.rb +28 -7
  27. data/lib/esse/deprecations/cluster.rb +27 -0
  28. data/lib/esse/deprecations/deprecate.rb +29 -0
  29. data/lib/esse/deprecations/index.rb +37 -0
  30. data/lib/esse/deprecations/index_backend_delegator.rb +217 -0
  31. data/lib/esse/deprecations/repository.rb +34 -0
  32. data/lib/esse/deprecations/repository_backend_delegator.rb +110 -0
  33. data/lib/esse/deprecations/serializer.rb +14 -0
  34. data/lib/esse/deprecations.rb +7 -0
  35. data/lib/esse/document.rb +91 -0
  36. data/lib/esse/dynamic_template.rb +43 -0
  37. data/lib/esse/errors.rb +60 -2
  38. data/lib/esse/events/event.rb +4 -19
  39. data/lib/esse/events.rb +13 -2
  40. data/lib/esse/hash_document.rb +38 -0
  41. data/lib/esse/import/bulk.rb +106 -0
  42. data/lib/esse/import/request_body.rb +60 -0
  43. data/lib/esse/index/aliases.rb +50 -0
  44. data/lib/esse/index/attributes.rb +107 -0
  45. data/lib/esse/index/base.rb +17 -53
  46. data/lib/esse/index/documents.rb +236 -0
  47. data/lib/esse/index/indices.rb +171 -0
  48. data/lib/esse/index/inheritance.rb +30 -0
  49. data/lib/esse/index/mappings.rb +6 -19
  50. data/lib/esse/index/object_document_mapper.rb +36 -0
  51. data/lib/esse/index/plugins.rb +42 -0
  52. data/lib/esse/index/search.rb +27 -0
  53. data/lib/esse/index/settings.rb +2 -2
  54. data/lib/esse/index/type.rb +51 -11
  55. data/lib/esse/index.rb +14 -9
  56. data/lib/esse/index_mapping.rb +10 -2
  57. data/lib/esse/index_setting.rb +3 -1
  58. data/lib/esse/null_document.rb +35 -0
  59. data/lib/esse/plugins.rb +12 -0
  60. data/lib/esse/primitives/hstring.rb +1 -1
  61. data/lib/esse/{index_type → repository}/actions.rb +1 -1
  62. data/lib/esse/repository/documents.rb +13 -0
  63. data/lib/esse/repository/object_document_mapper.rb +157 -0
  64. data/lib/esse/repository.rb +17 -0
  65. data/lib/esse/search/query.rb +105 -0
  66. data/lib/esse/search/response.rb +46 -0
  67. data/lib/esse/template_loader.rb +1 -1
  68. data/lib/esse/transport/aliases.rb +36 -0
  69. data/lib/esse/transport/documents.rb +199 -0
  70. data/lib/esse/transport/health.rb +30 -0
  71. data/lib/esse/transport/indices.rb +192 -0
  72. data/lib/esse/transport/search.rb +48 -0
  73. data/lib/esse/transport.rb +44 -0
  74. data/lib/esse/version.rb +1 -1
  75. data/lib/esse.rb +20 -5
  76. metadata +55 -50
  77. data/lib/esse/backend/index/aliases.rb +0 -73
  78. data/lib/esse/backend/index/close.rb +0 -54
  79. data/lib/esse/backend/index/create.rb +0 -67
  80. data/lib/esse/backend/index/delete.rb +0 -39
  81. data/lib/esse/backend/index/documents.rb +0 -23
  82. data/lib/esse/backend/index/existance.rb +0 -22
  83. data/lib/esse/backend/index/open.rb +0 -54
  84. data/lib/esse/backend/index/refresh.rb +0 -43
  85. data/lib/esse/backend/index/reset.rb +0 -33
  86. data/lib/esse/backend/index/update.rb +0 -143
  87. data/lib/esse/backend/index.rb +0 -54
  88. data/lib/esse/backend/index_type/documents.rb +0 -214
  89. data/lib/esse/backend/index_type.rb +0 -37
  90. data/lib/esse/cli/templates/type_collection.rb.erb +0 -41
  91. data/lib/esse/cli/templates/type_mappings.json +0 -6
  92. data/lib/esse/cli/templates/type_serializer.rb.erb +0 -23
  93. data/lib/esse/index/backend.rb +0 -14
  94. data/lib/esse/index/naming.rb +0 -64
  95. data/lib/esse/index_type/backend.rb +0 -14
  96. data/lib/esse/index_type/mappings.rb +0 -42
  97. data/lib/esse/index_type.rb +0 -15
  98. data/lib/esse/object_document_mapper.rb +0 -110
@@ -1,67 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Esse
4
- module Backend
5
- class Index
6
- module InstanceMethods
7
- DEFAULT_OPTIONS = {
8
- alias: true,
9
- }.freeze
10
-
11
- # Creates index and applies mappings and settings.
12
- #
13
- # UsersIndex.elasticsearch.create_index # creates index named `<prefix_>users_<suffix|index_version|timestamp>`
14
- #
15
- # @param options [Hash] Options hash
16
- # @option options [Boolean] :alias Update `index_name` alias along with the new index
17
- # @option options [String] :suffix The index suffix. Defaults to the `IndexClass#index_version` or
18
- # `Esse.timestamp`. Suffixed index names might be used for zero-downtime mapping change.
19
- # @return [Hash] the elasticsearch response, or an hash with 'errors' as true in case of failure
20
- #
21
- # @see http://www.elasticsearch.org/blog/changing-mapping-with-zero-downtime/
22
- def create_index(suffix: index_version, **options)
23
- create_index!(suffix: suffix, **options)
24
- rescue Elasticsearch::Transport::Transport::Errors::BadRequest
25
- { 'errors' => true }
26
- end
27
-
28
- # Creates index and applies mappings and settings.
29
- #
30
- # UsersIndex.elasticsearch.create_index! # creates index named `<prefix_>users_<suffix|index_version|timestamp>`
31
- #
32
- # @param options [Hash] Options hash
33
- # @option options [Boolean] :alias Update `index_name` alias along with the new index
34
- # @option options [String] :suffix The index suffix. Defaults to the `IndexClass#index_version` or
35
- # `Esse.timestamp`. Suffixed index names might be used for zero-downtime mapping change.
36
- # @option arguments [String] :wait_for_active_shards Set the number of active shards
37
- # to wait for before the operation returns.
38
- # @option arguments [Time] :timeout Explicit operation timeout
39
- # @option arguments [Time] :master_timeout Specify timeout for connection to master
40
- # @option arguments [Hash] :headers Custom HTTP headers
41
- # @option arguments [Hash] :body The configuration for the index (`settings` and `mappings`)
42
- # @raise [Elasticsearch::Transport::Transport::Errors::NotFound] when index already exists
43
- # @return [Hash] the elasticsearch response
44
- #
45
- # @see http://www.elasticsearch.org/blog/changing-mapping-with-zero-downtime/
46
- def create_index!(suffix: index_version, **options)
47
- options = DEFAULT_OPTIONS.merge(options)
48
- name = build_real_index_name(suffix)
49
- definition = [settings_hash, mappings_hash].reduce(&:merge)
50
-
51
- if options.delete(:alias) && name != index_name
52
- definition[:aliases] = { index_name => {} }
53
- end
54
-
55
- Esse::Events.instrument('elasticsearch.create_index') do |payload|
56
- payload[:request] = opts = options.merge(index: name, body: definition)
57
- payload[:response] = response = client.indices.create(**opts)
58
- cluster.wait_for_status! if response
59
- response
60
- end
61
- end
62
- end
63
-
64
- include InstanceMethods
65
- end
66
- end
67
- end
@@ -1,39 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Esse
4
- module Backend
5
- class Index
6
- module InstanceMethods
7
- # Deletes ES index
8
- #
9
- # UsersIndex.elasticsearch.delete_index! # deletes `<prefix_>users<_suffix|_index_version|_timestamp>` index
10
- #
11
- # @param suffix [String, nil] The index suffix Use nil if you want to delete the current index.
12
- # @raise [Elasticsearch::Transport::Transport::Errors::NotFound] when index does not exists
13
- # @return [Hash] elasticsearch response
14
- def delete_index!(suffix: index_version, **options)
15
- Esse::Events.instrument('elasticsearch.delete_index') do |payload|
16
- payload[:request] = opts = options.merge(index: index_name(suffix: suffix))
17
- payload[:response] = response = client.indices.delete(**opts)
18
- cluster.wait_for_status! if response
19
- response
20
- end
21
- end
22
-
23
- # Deletes ES index
24
- #
25
- # UsersIndex.elasticsearch.delete_index # deletes `<prefix_>users<_suffix|_index_version|_timestamp>` index
26
- #
27
- # @param suffix [String, nil] The index suffix Use nil if you want to delete the current index.
28
- # @return [Hash] the elasticsearch response, or an hash with 'errors' as true in case of failure
29
- def delete_index(suffix: index_version, **options)
30
- delete_index!(suffix: suffix, **options)
31
- rescue Elasticsearch::Transport::Transport::Errors::NotFound
32
- { 'errors' => true }
33
- end
34
- end
35
-
36
- include InstanceMethods
37
- end
38
- end
39
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Esse
4
- module Backend
5
- class Index
6
- module InstanceMethods
7
- def import!(**options)
8
- type_hash.each_value do |type|
9
- type.elasticsearch.import!(**options)
10
- end
11
- end
12
-
13
- def import(**options)
14
- type_hash.each_value do |type|
15
- type.elasticsearch.import(**options)
16
- end
17
- end
18
- end
19
-
20
- include InstanceMethods
21
- end
22
- end
23
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Esse
4
- module Backend
5
- class Index
6
- module InstanceMethods
7
- # Checks the index existance. Returns true or false
8
- #
9
- # UsersIndex.elasticsearch.exist? #=> true
10
- #
11
- # @param options [Hash] Options hash
12
- # @option options [String, nil] :suffix The index suffix. Defaults to the index_version.
13
- # Use nil if you want to check existence of the `index_name` index or alias.
14
- def exist?(suffix: index_version)
15
- client.indices.exists(index: index_name(suffix: suffix))
16
- end
17
- end
18
-
19
- include InstanceMethods
20
- end
21
- end
22
- end
@@ -1,54 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Esse
4
- module Backend
5
- class Index
6
- module InstanceMethods
7
- # Open a previously closed index
8
- #
9
- # @option options [String, nil] :suffix The index suffix. Defaults to the index_version.
10
- # Use nil if you want to check existence of the `index_name` index or alias.
11
- # @option options [String] :expand_wildcards Whether to expand wildcard expression to concrete indices that
12
- # are open, closed or both. (options: open, closed)
13
- # @option options [String] :ignore_indices When performed on multiple indices, allows to ignore
14
- # `missing` ones (options: none, missing) @until 1.0
15
- # @option options [Boolean] :ignore_unavailable Whether specified concrete indices should be ignored when
16
- # unavailable (missing, closed, etc)
17
- # @option options [Time] :timeout Explicit operation timeout
18
- # @raise [Elasticsearch::Transport::Transport::Errors::BadRequest, Elasticsearch::Transport::Transport::Errors::NotFound]
19
- # in case of failure
20
- # @return [Hash] the elasticsearch response
21
- #
22
- # @see https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-open.html
23
- def open!(suffix: index_version, **options)
24
- Esse::Events.instrument('elasticsearch.open') do |payload|
25
- payload[:request] = attributes = options.merge(index: index_name(suffix: suffix))
26
- payload[:response] = client.indices.open(**attributes)
27
- end
28
- end
29
-
30
- # Open a previously closed index
31
- #
32
- # @option options [String, nil] :suffix The index suffix. Defaults to the index_version.
33
- # Use nil if you want to check existence of the `index_name` index or alias.
34
- # @option options [String] :expand_wildcards Whether to expand wildcard expression to concrete indices that
35
- # are open, closed or both. (options: open, closed)
36
- # @option options [String] :ignore_indices When performed on multiple indices, allows to ignore
37
- # `missing` ones (options: none, missing) @until 1.0
38
- # @option options [Boolean] :ignore_unavailable Whether specified concrete indices should be ignored when
39
- # unavailable (missing, closed, etc)
40
- # @option options [Time] :timeout Explicit operation timeout
41
- # @return [Hash] the elasticsearch response, or an hash with 'errors' as true in case of failure
42
- #
43
- # @see https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-open.html
44
- def open(suffix: index_version, **options)
45
- open!(suffix: suffix, **options)
46
- rescue Elasticsearch::Transport::Transport::ServerError
47
- { 'errors' => true }
48
- end
49
- end
50
-
51
- include InstanceMethods
52
- end
53
- end
54
- end
@@ -1,43 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Esse
4
- module Backend
5
- class Index
6
- module InstanceMethods
7
- # Performs the refresh operation in one or more indices.
8
- #
9
- # @note The refresh operation can adversely affect indexing throughput when used too frequently.
10
- # @param :suffix [String, nil] :suffix The index suffix. Defaults to the index_version.
11
- # A uniq index name will be generated if one index already exist with the given alias.
12
- # @param options [Hash] Options hash
13
- # @raise [Elasticsearch::Transport::Transport::Errors::BadRequest, Elasticsearch::Transport::Transport::Errors::NotFound]
14
- # in case of failure
15
- # @return [Hash] the elasticsearch response
16
- #
17
- # @see https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html
18
- def refresh!(suffix: index_version, **options)
19
- client.indices.refresh(
20
- options.merge(index: index_name(suffix: suffix)),
21
- )
22
- end
23
-
24
- # Performs the refresh operation in one or more indices.
25
- #
26
- # @note The refresh operation can adversely affect indexing throughput when used too frequently.
27
- # @param :suffix [String, nil] :suffix The index suffix. Defaults to the index_version.
28
- # A uniq index name will be generated if one index already exist with the given alias.
29
- # @param options [Hash] Options hash
30
- # @return [Hash] the elasticsearch response, or an hash with 'errors' as true in case of failure
31
- #
32
- # @see https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-refresh.html
33
- def refresh(suffix: index_version, **options)
34
- refresh!(suffix: suffix, **options)
35
- rescue Elasticsearch::Transport::Transport::ServerError
36
- { 'errors' => true }
37
- end
38
- end
39
-
40
- include InstanceMethods
41
- end
42
- end
43
- end
@@ -1,33 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Esse
4
- module Backend
5
- class Index
6
- module InstanceMethods
7
- # Deletes, creates and imports data to the index. Performs zero-downtime index resetting.
8
- #
9
- # @option options [String, nil] :suffix The index suffix. Defaults to the index_version.
10
- # A uniq index name will be generated if one index already exist with the given alias.
11
- # @option options [Time] :timeout Explicit operation timeout
12
- # @raise [Elasticsearch::Transport::Transport::Errors::BadRequest, Elasticsearch::Transport::Transport::Errors::NotFound]
13
- # in case of failure
14
- # @return [Hash] the elasticsearch response
15
- #
16
- # @see https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-open-close.html
17
- def reset_index!(suffix: index_version, **options)
18
- existing = []
19
- suffix ||= Esse.timestamp
20
- suffix = Esse.timestamp while exist?(suffix: suffix).tap { |exist| existing << suffix if exist }
21
-
22
- create_index!(**options, suffix: suffix, alias: false)
23
- import!(**options, suffix: suffix)
24
- update_aliases!(suffix: suffix)
25
- existing.each { |_s| delete_index!(**options, suffix: suffix) }
26
- true
27
- end
28
- end
29
-
30
- include InstanceMethods
31
- end
32
- end
33
- end
@@ -1,143 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Esse
4
- module Backend
5
- class Index
6
- module InstanceMethods
7
- # Create or update a mapping
8
- #
9
- # @option options [String] :type The name of the document type. This field is required for some elasticsearch versions
10
- # @option options [Boolean] :ignore_conflicts Specify whether to ignore conflicts while updating the mapping
11
- # (default: false)
12
- # @option options [Boolean] :allow_no_indices Whether to ignore if a wildcard indices expression resolves into
13
- # no concrete indices. (This includes `_all` string or when no indices have been specified)
14
- # @option options [String] :expand_wildcards Whether to expand wildcard expression to concrete indices that
15
- # are open, closed or both. (options: open, closed)
16
- # @option options [String] :ignore_indices When performed on multiple indices, allows to ignore
17
- # `missing` ones (options: none, missing) @until 1.0
18
- # @option options [Boolean] :ignore_unavailable Whether specified concrete indices should be ignored when
19
- # unavailable (missing, closed, etc)
20
- # @option options [Boolean] :update_all_types Whether to update the mapping for all fields
21
- # with the same name across all types
22
- # @option options [Time] :timeout Explicit operation timeout
23
- # @option options [Boolean] :master_timeout Timeout for connection to master
24
- # @raise [Elasticsearch::Transport::Transport::Errors::BadRequest, Elasticsearch::Transport::Transport::Errors::NotFound]
25
- # in case of failure
26
- # @return [Hash] the elasticsearch response
27
- #
28
- # @see http://www.elasticsearch.org/guide/reference/api/admin-indices-put-mapping/
29
- def update_mapping!(suffix: index_version, **options)
30
- Esse::Events.instrument('elasticsearch.update_mapping') do |payload|
31
- body = mappings_hash.fetch(Esse::MAPPING_ROOT_KEY)
32
- if (type = options[:type])
33
- body = body[type.to_s] || body[type.to_sym]
34
- end
35
- payload[:request] = opts = options.merge(index: index_name(suffix: suffix), body: body)
36
- payload[:response] = client.indices.put_mapping(**opts)
37
- end
38
- end
39
-
40
- # Create or update a mapping
41
- #
42
- # @option options [String] :type The name of the document type. This field is required for some elasticsearch versions
43
- # @option options [Boolean] :ignore_conflicts Specify whether to ignore conflicts while updating the mapping
44
- # (default: false)
45
- # @option options [Boolean] :allow_no_indices Whether to ignore if a wildcard indices expression resolves into
46
- # no concrete indices. (This includes `_all` string or when no indices have been specified)
47
- # @option options [String] :expand_wildcards Whether to expand wildcard expression to concrete indices that
48
- # are open, closed or both. (options: open, closed)
49
- # @option options [String] :ignore_indices When performed on multiple indices, allows to ignore
50
- # `missing` ones (options: none, missing) @until 1.0
51
- # @option options [Boolean] :ignore_unavailable Whether specified concrete indices should be ignored when
52
- # unavailable (missing, closed, etc)
53
- # @option options [Boolean] :update_all_types Whether to update the mapping for all fields
54
- # with the same name across all types
55
- # @option options [Time] :timeout Explicit operation timeout
56
- # @option options [Boolean] :master_timeout Timeout for connection to master
57
- # @return [Hash] the elasticsearch response, or an hash with 'errors' as true in case of failure
58
- #
59
- # @see http://www.elasticsearch.org/guide/reference/api/admin-indices-put-mapping/
60
- def update_mapping(suffix: index_version, **options)
61
- update_mapping!(suffix: suffix, **options)
62
- rescue Elasticsearch::Transport::Transport::ServerError
63
- { 'errors' => true }
64
- end
65
-
66
- # Closes the index for read/write operations, updates the index settings, and open it again
67
- #
68
- # @option options [String] :expand_wildcards Whether to expand wildcard expression to concrete indices that
69
- # are open, closed or both. (options: open, closed)
70
- # @option options [String] :ignore_indices When performed on multiple indices, allows to ignore
71
- # `missing` ones (options: none, missing) @until 1.0
72
- # @option options [Boolean] :ignore_unavailable Whether specified concrete indices should be ignored when
73
- # unavailable (missing, closed, etc)
74
- # @option options [Boolean] :include_defaults Whether to return all default clusters setting
75
- # @option options [Boolean] :preserve_existing Whether to update existing settings.
76
- # If set to `true` existing settings on an index remain unchanged, the default is `false`
77
- # @option options [Time] :master_timeout Specify timeout for connection to master
78
- # @option options [Boolean] :flat_settings Return settings in flat format (default: false)
79
- # @raise [Elasticsearch::Transport::Transport::Errors::BadRequest, Elasticsearch::Transport::Transport::Errors::NotFound]
80
- # in case of failure
81
- # @return [Hash] the elasticsearch response
82
- #
83
- # @see http://www.elasticsearch.org/guide/reference/api/admin-indices-update-settings/
84
- def update_settings!(suffix: index_version, **options)
85
- response = nil
86
-
87
- settings = settings_hash.fetch(Esse::SETTING_ROOT_KEY).transform_keys(&:to_s)
88
- settings.delete('number_of_shards') # Can't change number of shards for an index
89
- analysis = settings.delete('analysis')
90
-
91
- if settings.any?
92
- # When changing the number of replicas the index needs to be open. Changing the number of replicas on a
93
- # closed index might prevent the index to be opened correctly again.
94
- Esse::Events.instrument('elasticsearch.update_settings') do |payload|
95
- payload[:request] = opts = options.merge(index: index_name(suffix: suffix), body: { index: settings })
96
- payload[:response] = response = client.indices.put_settings(**opts)
97
- end
98
- end
99
-
100
- if analysis
101
- # It is also possible to define new analyzers for the index. But it is required to close the
102
- # index first and open it after the changes are made.
103
- close!(suffix: suffix)
104
- begin
105
- Esse::Events.instrument('elasticsearch.update_settings') do |payload|
106
- payload[:request] = opts = options.merge(index: index_name(suffix: suffix), body: { analysis: analysis })
107
- payload[:response] = response = client.indices.put_settings(**opts)
108
- end
109
- ensure
110
- open!(suffix: suffix)
111
- end
112
- end
113
-
114
- response
115
- end
116
-
117
- # Closes the index for read/write operations, updates the index settings, and open it again
118
- #
119
- # @option options [String] :expand_wildcards Whether to expand wildcard expression to concrete indices that
120
- # are open, closed or both. (options: open, closed)
121
- # @option options [String] :ignore_indices When performed on multiple indices, allows to ignore
122
- # `missing` ones (options: none, missing) @until 1.0
123
- # @option options [Boolean] :ignore_unavailable Whether specified concrete indices should be ignored when
124
- # unavailable (missing, closed, etc)
125
- # @option options [Boolean] :include_defaults Whether to return all default clusters setting
126
- # @option options [Boolean] :preserve_existing Whether to update existing settings.
127
- # If set to `true` existing settings on an index remain unchanged, the default is `false`
128
- # @option options [Time] :master_timeout Specify timeout for connection to master
129
- # @option options [Boolean] :flat_settings Return settings in flat format (default: false)
130
- # @return [Hash] the elasticsearch response, or an hash with 'errors' as true in case of failure
131
- #
132
- # @see http://www.elasticsearch.org/guide/reference/api/admin-indices-update-settings/
133
- def update_settings(suffix: index_version, **options)
134
- update_settings!(suffix: suffix, **options)
135
- rescue Elasticsearch::Transport::Transport::ServerError
136
- { 'errors' => true }
137
- end
138
- end
139
-
140
- include InstanceMethods
141
- end
142
- end
143
- end
@@ -1,54 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'forwardable'
4
-
5
- module Esse
6
- module Backend
7
- class Index
8
- require_relative 'index/aliases'
9
- require_relative 'index/create'
10
- require_relative 'index/delete'
11
- require_relative 'index/existance'
12
- require_relative 'index/update'
13
- require_relative 'index/refresh'
14
- require_relative 'index/reset'
15
- require_relative 'index/documents'
16
- require_relative 'index/open'
17
- require_relative 'index/close'
18
-
19
- extend Forwardable
20
-
21
- NAMING = %i[index_version].freeze
22
- DEFINITION = %i[settings_hash mappings_hash].freeze
23
-
24
- def_delegators :@index, :type_hash, *(NAMING + DEFINITION)
25
-
26
- def initialize(index)
27
- @index = index
28
- end
29
-
30
- protected
31
-
32
- def index_name(suffix: nil)
33
- suffix = Hstring.new(suffix).underscore.presence
34
- return @index.index_name unless suffix
35
-
36
- [@index.index_name, suffix].join('_')
37
- end
38
-
39
- def build_real_index_name(suffix = nil)
40
- suffix = Hstring.new(suffix).underscore.presence || index_version || Esse.timestamp
41
-
42
- index_name(suffix: suffix)
43
- end
44
-
45
- def client
46
- cluster.client
47
- end
48
-
49
- def cluster
50
- @index.cluster
51
- end
52
- end
53
- end
54
- end