elastic_search_framework 1.4.0 → 2.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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ab871a0e3beb296aaf8fbebc1c5c558c235fdbfd6a651f68ed74b7ace457da33
|
4
|
+
data.tar.gz: a19a5887d13c308852540302b805243eea991886cb72fe3384a36cc34c4f3ced
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1f18004a91a131eced9812a7bd1049315c4800ed4afbbe5098bb0848a0b49157337b65da01d201b05524fbf915beb92d3f8d3396b990fb79ad6761c20ed620bb
|
7
|
+
data.tar.gz: 699835d74cf0c4eb6331cf336ab8191e76d0cdd33243a73f9c565647b3b74fd5a7d58c1a1ae914629d700b74a42b5e748e28b62f78cd46f215faeaa2822755a8
|
@@ -1,12 +1,12 @@
|
|
1
1
|
module ElasticSearchFramework
|
2
2
|
module Index
|
3
|
-
|
3
|
+
attr_accessor :index_settings
|
4
|
+
|
5
|
+
def index(name:)
|
4
6
|
unless instance_variable_defined?(:@elastic_search_index_def)
|
5
|
-
instance_variable_set(:@elastic_search_index_def, {
|
6
|
-
name: "#{name}", shards: shards
|
7
|
-
})
|
7
|
+
instance_variable_set(:@elastic_search_index_def, name: "#{name}")
|
8
8
|
else
|
9
|
-
raise ElasticSearchFramework::Exceptions::IndexError.new("[#{self.class}] - Duplicate index description. Name: #{name}
|
9
|
+
raise ElasticSearchFramework::Exceptions::IndexError.new("[#{self.class}] - Duplicate index description. Name: #{name}.")
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
@@ -41,8 +41,7 @@ module ElasticSearchFramework
|
|
41
41
|
ElasticSearchFramework.logger.debug { "[#{self.class}] - Index already exists."}
|
42
42
|
return
|
43
43
|
end
|
44
|
-
|
45
|
-
payload = create_payload(description: description, mappings: mappings)
|
44
|
+
payload = create_payload
|
46
45
|
|
47
46
|
put(payload: payload)
|
48
47
|
end
|
@@ -101,27 +100,28 @@ module ElasticSearchFramework
|
|
101
100
|
is_valid_response?(response.code) || Integer(response.code) == 404
|
102
101
|
end
|
103
102
|
|
104
|
-
def
|
105
|
-
|
103
|
+
def settings(name:, type: nil, value:)
|
104
|
+
self.index_settings = {} if index_settings.nil?
|
105
|
+
index_settings[name] = if type
|
106
|
+
{ type => value }
|
107
|
+
else
|
108
|
+
value
|
109
|
+
end
|
110
|
+
end
|
106
111
|
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
}
|
111
|
-
end
|
112
|
+
def create_payload
|
113
|
+
payload = { }
|
114
|
+
payload[:settings] = index_settings unless index_settings.nil?
|
112
115
|
|
113
|
-
|
116
|
+
unless mappings.keys.empty?
|
114
117
|
payload[:mappings] = {}
|
115
118
|
|
116
119
|
mappings.keys.each do |name|
|
117
|
-
payload[:mappings][name] = {
|
118
|
-
properties: {}
|
119
|
-
}
|
120
|
+
payload[:mappings][name] = { properties: {} }
|
120
121
|
mappings[name].keys.each do |field|
|
121
122
|
payload[:mappings][name][:properties][field] = mappings[name][field]
|
122
123
|
end
|
123
124
|
end
|
124
|
-
|
125
125
|
end
|
126
126
|
|
127
127
|
payload
|
@@ -5,7 +5,6 @@ RSpec.describe ElasticSearchFramework::Index do
|
|
5
5
|
expect(ExampleIndex.description[:name]).to eq 'example_index'
|
6
6
|
expect(ExampleIndex.description[:id]).to eq :id
|
7
7
|
expect(ExampleIndexWithId.description[:id]).to eq :number
|
8
|
-
expect(ExampleIndexWithShard.description[:shards]).to eq 1
|
9
8
|
end
|
10
9
|
end
|
11
10
|
|
@@ -16,7 +15,7 @@ RSpec.describe ElasticSearchFramework::Index do
|
|
16
15
|
it 'raises an index error' do
|
17
16
|
expect { ExampleIndex.index(name: 'test') }.to raise_error(
|
18
17
|
ElasticSearchFramework::Exceptions::IndexError,
|
19
|
-
|
18
|
+
'[Class] - Duplicate index description. Name: test.'
|
20
19
|
)
|
21
20
|
end
|
22
21
|
end
|
@@ -64,6 +63,37 @@ RSpec.describe ElasticSearchFramework::Index do
|
|
64
63
|
end
|
65
64
|
end
|
66
65
|
|
66
|
+
describe '#analysis' do
|
67
|
+
context 'when analysis is nil' do
|
68
|
+
before { ExampleIndex.delete if ExampleIndex.exists? }
|
69
|
+
|
70
|
+
it 'does not add analysis to the index' do
|
71
|
+
ExampleIndex.create
|
72
|
+
expect(ExampleIndexWithSettings.get.dig('example_index', 'settings', 'index', 'analysis')).to be_nil
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
context 'when analysis is not nil' do
|
77
|
+
before { ExampleIndexWithSettings.delete if ExampleIndexWithSettings.exists? }
|
78
|
+
let(:expected) do
|
79
|
+
{
|
80
|
+
'normalizer' => {
|
81
|
+
'custom_normalizer' => {
|
82
|
+
'filter' => ['lowercase'],
|
83
|
+
'type' => 'custom'
|
84
|
+
}
|
85
|
+
}
|
86
|
+
}
|
87
|
+
end
|
88
|
+
|
89
|
+
it 'adds analysis to the index' do
|
90
|
+
ExampleIndexWithSettings.create
|
91
|
+
expect(ExampleIndexWithSettings.get.dig('example_index', 'settings', 'index', 'number_of_shards')).to eq('1')
|
92
|
+
expect(ExampleIndexWithSettings.get.dig('example_index', 'settings', 'index', 'analysis')).to eq(expected)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
67
97
|
describe '#valid?' do
|
68
98
|
context 'for a valid index definition' do
|
69
99
|
it 'should return true' do
|
data/spec/example_index.rb
CHANGED
@@ -4,7 +4,6 @@ class ExampleIndex
|
|
4
4
|
index name: 'example_index'
|
5
5
|
|
6
6
|
mapping name: 'default', field: :name, type: :keyword, index: true
|
7
|
-
|
8
7
|
end
|
9
8
|
|
10
9
|
class ExampleIndexWithId
|
@@ -15,16 +14,18 @@ class ExampleIndexWithId
|
|
15
14
|
id :number
|
16
15
|
|
17
16
|
mapping name: 'default', field: :name, type: :keyword, index: true
|
18
|
-
|
19
17
|
end
|
20
18
|
|
21
|
-
class
|
19
|
+
class ExampleIndexWithSettings
|
22
20
|
extend ElasticSearchFramework::Index
|
23
21
|
|
24
|
-
index name: 'example_index'
|
22
|
+
index name: 'example_index'
|
25
23
|
|
26
|
-
|
24
|
+
normalizer_value = { custom_normalizer: { type: 'custom', char_filter: [], filter: ['lowercase'] } }
|
27
25
|
|
26
|
+
settings name: :number_of_shards, value: 1
|
27
|
+
settings name: :analysis, type: :normalizer, value: normalizer_value
|
28
|
+
mapping name: 'default', field: :name, type: :keyword, index: true
|
28
29
|
end
|
29
30
|
|
30
31
|
class InvalidExampleIndex
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: elastic_search_framework
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- vaughanbrittonsage
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-05-
|
11
|
+
date: 2018-05-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|