elastic_search_framework 1.4.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
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
|