fluent-plugin-output-solr 0.4.12 → 0.4.13
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +14 -99
- data/fluent-plugin-output-solr.gemspec +10 -10
- data/fluent.conf +8 -2
- data/lib/fluent/plugin/out_solr.rb +71 -103
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e7291cfc870c7f8be862adb23b42f1cf9072f697
|
4
|
+
data.tar.gz: 64a33feafa219c2798fd1a3897d9122f24bd3b08
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f99cf5bfcb8dde3440bf65183594508923a20e09670e9ab78f122b64f53fa8efad0a82befa3cf95a26bf2e9438cbf8aa1bb3c681e4888e6b42fbbc4bc8844e54
|
7
|
+
data.tar.gz: b847b79fa7cfcd2311ad515c4732971dd47065ef745c237431fe0bb1b11324480cc08b4c0648c2528e06d41114c3c03efe7653d7f80d6111fa2fff3ceb7a61f7
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Fluent::Plugin::SolrOutput
|
2
2
|
|
3
|
-
This is a [Fluentd](http://fluentd.org/) output plugin for send data to [Apache Solr](http://lucene.apache.org/solr/).
|
3
|
+
This is a [Fluentd](http://fluentd.org/) output plugin for send data to [Apache Solr](http://lucene.apache.org/solr/).
|
4
4
|
|
5
5
|
## Requirements
|
6
6
|
|
@@ -32,12 +32,12 @@ $ rake install
|
|
32
32
|
|
33
33
|
## Config parameters
|
34
34
|
|
35
|
-
###
|
35
|
+
### base_url
|
36
36
|
|
37
|
-
The Solr
|
37
|
+
The Solr base url (for example http://localhost:8983/solr).
|
38
38
|
|
39
39
|
```
|
40
|
-
|
40
|
+
base_url http://localhost:8983/solr
|
41
41
|
```
|
42
42
|
|
43
43
|
### zk_host
|
@@ -50,20 +50,12 @@ zk_host localhost:2181/solr
|
|
50
50
|
|
51
51
|
### collection
|
52
52
|
|
53
|
-
The
|
53
|
+
The Solr collection/core name (default collection1).
|
54
54
|
|
55
55
|
```
|
56
56
|
collection collection1
|
57
57
|
```
|
58
58
|
|
59
|
-
### defined_fields
|
60
|
-
|
61
|
-
The defined fields in the Solr schema.xml. If omitted, it will get fields via Solr Schema API.
|
62
|
-
|
63
|
-
```
|
64
|
-
defined_fields ["id", "title"]
|
65
|
-
```
|
66
|
-
|
67
59
|
### ignore_undefined_fields
|
68
60
|
|
69
61
|
Ignore undefined fields in the Solr schema.xml.
|
@@ -72,20 +64,12 @@ Ignore undefined fields in the Solr schema.xml.
|
|
72
64
|
ignore_undefined_fields false
|
73
65
|
```
|
74
66
|
|
75
|
-
###
|
76
|
-
|
77
|
-
A field name of unique key in the Solr schema.xml. If omitted, it will get unique key via Solr Schema API.
|
78
|
-
|
79
|
-
```
|
80
|
-
unique_key_field id
|
81
|
-
```
|
82
|
-
|
83
|
-
### string_field_value_max_length
|
67
|
+
### tag_field
|
84
68
|
|
85
|
-
A
|
69
|
+
A field name of fluentd tag in the Solr schema.xml (default tag).
|
86
70
|
|
87
71
|
```
|
88
|
-
|
72
|
+
tag_field tag
|
89
73
|
```
|
90
74
|
|
91
75
|
### time_field
|
@@ -135,8 +119,11 @@ commit_with_flush true
|
|
135
119
|
<match something.logs>
|
136
120
|
@type solr
|
137
121
|
|
138
|
-
# The Solr
|
139
|
-
|
122
|
+
# The Solr base url (for example http://localhost:8983/solr).
|
123
|
+
base_url http://localhost:8983/solr
|
124
|
+
|
125
|
+
# The Solr collection/core name (default collection1).
|
126
|
+
collection collection1
|
140
127
|
</match>
|
141
128
|
```
|
142
129
|
|
@@ -148,83 +135,11 @@ commit_with_flush true
|
|
148
135
|
# The ZooKeeper connection string that SolrCloud refers to (for example localhost:2181/solr).
|
149
136
|
zk_host localhost:2181/solr
|
150
137
|
|
151
|
-
# The
|
138
|
+
# The Solr collection/core name (default collection1).
|
152
139
|
collection collection1
|
153
140
|
</match>
|
154
141
|
```
|
155
142
|
|
156
|
-
## Solr setup examples
|
157
|
-
|
158
|
-
### How to setup Standalone Solr using data-driven schemaless mode.
|
159
|
-
|
160
|
-
1.Download and install Solr
|
161
|
-
|
162
|
-
```sh
|
163
|
-
$ mkdir $HOME/solr
|
164
|
-
$ cd $HOME/solr
|
165
|
-
$ wget https://archive.apache.org/dist/lucene/solr/5.4.0/solr-5.4.0.tgz
|
166
|
-
$ tar zxvf solr-5.4.0.tgz
|
167
|
-
$ cd solr-5.4.0
|
168
|
-
```
|
169
|
-
|
170
|
-
2.Start standalone Solr
|
171
|
-
|
172
|
-
```sh
|
173
|
-
$ ./bin/solr start -p 8983 -s server/solr
|
174
|
-
```
|
175
|
-
|
176
|
-
3.Create core
|
177
|
-
|
178
|
-
```sh
|
179
|
-
$ ./bin/solr create -c collection1 -d server/solr/configsets/data_driven_schema_configs -n collection1_configs
|
180
|
-
```
|
181
|
-
|
182
|
-
### How to setup SolrCloud using data-driven schemaless mode (shards=1 and replicationfactor=2).
|
183
|
-
|
184
|
-
1.Download and install ZooKeeper
|
185
|
-
|
186
|
-
```sh
|
187
|
-
$ mkdir $HOME/zookeeper
|
188
|
-
$ cd $HOME/zookeeper
|
189
|
-
$ wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
|
190
|
-
$ tar zxvf zookeeper-3.4.6.tar.gz
|
191
|
-
$ cd zookeeper-3.4.6
|
192
|
-
$ cp -p ./conf/zoo_sample.cfg ./conf/zoo.cfg
|
193
|
-
```
|
194
|
-
|
195
|
-
2.Start standalone ZooKeeper
|
196
|
-
|
197
|
-
```sh
|
198
|
-
$ ./bin/zkServer.sh start
|
199
|
-
```
|
200
|
-
|
201
|
-
3.Download an install Solr
|
202
|
-
|
203
|
-
```sh
|
204
|
-
$ mkdir $HOME/solr
|
205
|
-
$ cd $HOME/solr
|
206
|
-
$ wget https://archive.apache.org/dist/lucene/solr/5.4.0/solr-5.4.0.tgz
|
207
|
-
$ tar zxvf solr-5.4.0.tgz
|
208
|
-
$ cd solr-5.4.0
|
209
|
-
$ ./server/scripts/cloud-scripts/zkcli.sh -zkhost localhost:2181 -cmd clear /solr
|
210
|
-
$ ./server/scripts/cloud-scripts/zkcli.sh -zkhost localhost:2181 -cmd makepath /solr
|
211
|
-
$ cp -pr server/solr server/solr1
|
212
|
-
$ cp -pr server/solr server/solr2
|
213
|
-
```
|
214
|
-
|
215
|
-
4.Start SolrCloud
|
216
|
-
|
217
|
-
```sh
|
218
|
-
$ ./bin/solr start -h localhost -p 8983 -z localhost:2181/solr -s server/solr1
|
219
|
-
$ ./bin/solr start -h localhost -p 8985 -z localhost:2181/solr -s server/solr2
|
220
|
-
```
|
221
|
-
|
222
|
-
5.Create collection
|
223
|
-
|
224
|
-
```sh
|
225
|
-
$ ./bin/solr create -c collection1 -d server/solr1/configsets/data_driven_schema_configs -n collection1_configs -shards 1 -replicationFactor 2
|
226
|
-
```
|
227
|
-
|
228
143
|
## Development
|
229
144
|
|
230
145
|
After checking out the repo, run `bundle install` to install dependencies. Then, run `rake test` to run the tests.
|
@@ -3,21 +3,21 @@ lib = File.expand_path('../lib', __FILE__)
|
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
|
-
spec.name =
|
7
|
-
spec.version =
|
8
|
-
spec.authors = [
|
9
|
-
spec.email = [
|
6
|
+
spec.name = 'fluent-plugin-output-solr'
|
7
|
+
spec.version = '0.4.13'
|
8
|
+
spec.authors = ['Minoru Osuka']
|
9
|
+
spec.email = ['minoru.osuka@gmail.com']
|
10
10
|
|
11
|
-
spec.summary =
|
12
|
-
spec.description =
|
13
|
-
spec.homepage =
|
11
|
+
spec.summary = 'Fluent output plugin for sending data to Apache Solr.'
|
12
|
+
spec.description = 'Fluent output plugin for sending data to Apache Solr.'
|
13
|
+
spec.homepage = 'https://github.com/mosuka/fluent-plugin-output-solr'
|
14
14
|
|
15
|
-
spec.license =
|
15
|
+
spec.license = 'Apache-2.0'
|
16
16
|
|
17
17
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
18
|
-
spec.bindir =
|
18
|
+
spec.bindir = 'exe'
|
19
19
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
|
-
spec.require_paths = [
|
20
|
+
spec.require_paths = ['lib']
|
21
21
|
|
22
22
|
spec.add_runtime_dependency 'fluentd', '~> 0.12.0'
|
23
23
|
spec.add_runtime_dependency 'rsolr-cloud', '~> 1.1.0'
|
data/fluent.conf
CHANGED
@@ -15,11 +15,17 @@
|
|
15
15
|
|
16
16
|
<match messages>
|
17
17
|
@type solr
|
18
|
-
|
19
|
-
zk_host localhost:2181/solr
|
18
|
+
base_url http://localhost:8983/solr
|
19
|
+
# zk_host localhost:2181/solr
|
20
20
|
collection collection1
|
21
21
|
ignore_undefined_fields false
|
22
|
+
tag_field tag
|
23
|
+
time_field time
|
24
|
+
time_format %FT%TZ
|
25
|
+
millisecond true
|
22
26
|
flush_size 100
|
27
|
+
commit_with_flush true
|
28
|
+
|
23
29
|
buffer_type memory
|
24
30
|
buffer_queue_limit 64m
|
25
31
|
buffer_chunk_limit 8m
|
@@ -8,12 +8,15 @@ module Fluent
|
|
8
8
|
Fluent::Plugin.register_output('solr', self)
|
9
9
|
|
10
10
|
DEFAULT_COLLECTION = 'collection1'
|
11
|
-
|
12
|
-
DEFAULT_STRING_FIELD_VALUE_MAX_LENGTH = -1
|
11
|
+
|
13
12
|
DEFAULT_TAG_FIELD = 'tag'
|
13
|
+
|
14
14
|
DEFAULT_TIME_FIELD = 'time'
|
15
15
|
DEFAULT_TIME_FORMAT = '%FT%TZ'
|
16
16
|
DEFAULT_MILLISECOND = false
|
17
|
+
|
18
|
+
DEFAULT_IGNORE_UNDEFINED_FIELDS = false
|
19
|
+
|
17
20
|
DEFAULT_FLUSH_SIZE = 100
|
18
21
|
DEFAULT_COMMIT_WITH_FLUSH = true
|
19
22
|
|
@@ -26,25 +29,21 @@ module Fluent
|
|
26
29
|
include Fluent::SetTimeKeyMixin
|
27
30
|
config_set_default :include_time_key, false
|
28
31
|
|
29
|
-
config_param :
|
30
|
-
:desc => 'The Solr
|
32
|
+
config_param :base_url, :string, :default => nil,
|
33
|
+
:desc => 'The Solr base url (for example http://localhost:8983/solr).'
|
31
34
|
|
32
35
|
config_param :zk_host, :string, :default => nil,
|
33
36
|
:desc => 'The ZooKeeper connection string that SolrCloud refers to (for example localhost:2181/solr).'
|
37
|
+
|
34
38
|
config_param :collection, :string, :default => DEFAULT_COLLECTION,
|
35
|
-
:desc => 'The
|
39
|
+
:desc => 'The Solr collection/core name (default collection1).'
|
36
40
|
|
37
|
-
config_param :defined_fields, :array, :default => nil,
|
38
|
-
:desc => 'The defined fields in the Solr schema.xml. If omitted, it will get fields via Solr Schema API.'
|
39
41
|
config_param :ignore_undefined_fields, :bool, :default => DEFAULT_IGNORE_UNDEFINED_FIELDS,
|
40
42
|
:desc => 'Ignore undefined fields in the Solr schema.xml.'
|
41
|
-
config_param :string_field_value_max_length, :integer, :default => DEFAULT_STRING_FIELD_VALUE_MAX_LENGTH,
|
42
|
-
:desc => 'Field value max length.'
|
43
43
|
|
44
|
-
config_param :unique_key_field, :string, :default => nil,
|
45
|
-
:desc => 'A field name of unique key in the Solr schema.xml. If omitted, it will get unique key via Solr Schema API.'
|
46
44
|
config_param :tag_field, :string, :default => DEFAULT_TAG_FIELD,
|
47
45
|
:desc => 'A field name of fluentd tag in the Solr schema.xml (default tag).'
|
46
|
+
|
48
47
|
config_param :time_field, :string, :default => DEFAULT_TIME_FIELD,
|
49
48
|
:desc => 'A field name of event timestamp in the Solr schema.xml (default time).'
|
50
49
|
config_param :time_format, :string, :default => DEFAULT_TIME_FORMAT,
|
@@ -70,7 +69,7 @@ module Fluent
|
|
70
69
|
super
|
71
70
|
|
72
71
|
@mode = nil
|
73
|
-
if ! @
|
72
|
+
if ! @base_url.nil? then
|
74
73
|
@mode = MODE_STANDALONE
|
75
74
|
elsif ! @zk_host.nil?
|
76
75
|
@mode = MODE_SOLRCLOUD
|
@@ -80,7 +79,7 @@ module Fluent
|
|
80
79
|
@zk = nil
|
81
80
|
|
82
81
|
if @mode == MODE_STANDALONE then
|
83
|
-
@solr = RSolr.connect :url => @
|
82
|
+
@solr = RSolr.connect :url => @base_url.end_with?('/') ? @base_url + @collection : @base_url + '/' + @collection
|
84
83
|
elsif @mode == MODE_SOLRCLOUD then
|
85
84
|
@zk = ZK.new(@zk_host)
|
86
85
|
cloud_connection = RSolr::Cloud::Connection.new(@zk)
|
@@ -103,145 +102,114 @@ module Fluent
|
|
103
102
|
def write(chunk)
|
104
103
|
documents = []
|
105
104
|
|
106
|
-
|
107
|
-
|
105
|
+
# Get fields from Solr
|
106
|
+
fields = get_fields
|
107
|
+
|
108
|
+
# Get unique key field from Solr
|
109
|
+
unique_key = get_unique_key
|
108
110
|
|
109
111
|
chunk.msgpack_each do |tag, time, record|
|
110
|
-
|
111
|
-
|
112
|
+
# Set unique key and value
|
113
|
+
unless record.has_key?(unique_key) then
|
114
|
+
record.merge!({unique_key => SecureRandom.uuid})
|
112
115
|
end
|
113
116
|
|
117
|
+
# Set Fluentd tag to Solr tag field
|
114
118
|
unless record.has_key?(@tag_field) then
|
115
119
|
record.merge!({@tag_field => tag})
|
116
120
|
end
|
117
121
|
|
122
|
+
# Set time
|
123
|
+
tmp_time = Time.at(time).utc
|
118
124
|
if record.has_key?(@time_field) then
|
125
|
+
# Parsing the time field in the record by the specified format.
|
119
126
|
begin
|
120
127
|
tmp_time = Time.strptime(record[@time_field], @time_format).utc
|
121
|
-
|
122
|
-
|
123
|
-
else
|
124
|
-
record.merge!({@time_field => tmp_time.strftime('%FT%TZ')})
|
125
|
-
end
|
126
|
-
rescue
|
127
|
-
tmp_time = Time.at(time).utc
|
128
|
-
if @millisecond then
|
129
|
-
record.merge!({@time_field => '%s.%03dZ' % [tmp_time.strftime('%FT%T'), tmp_time.usec / 1000.0]})
|
130
|
-
else
|
131
|
-
record.merge!({@time_field => tmp_time.strftime('%FT%TZ')})
|
132
|
-
end
|
128
|
+
rescue Exception => e
|
129
|
+
log.warn "An error occurred in parsing the time field: #{e.message}"
|
133
130
|
end
|
131
|
+
end
|
132
|
+
if @millisecond then
|
133
|
+
record.merge!({@time_field => '%s.%03dZ' % [tmp_time.strftime('%FT%T'), tmp_time.usec / 1000.0]})
|
134
134
|
else
|
135
|
-
|
136
|
-
if @millisecond then
|
137
|
-
record.merge!({@time_field => '%s.%03dZ' % [tmp_time.strftime('%FT%T'), tmp_time.usec / 1000.0]})
|
138
|
-
else
|
139
|
-
record.merge!({@time_field => tmp_time.strftime('%FT%TZ')})
|
140
|
-
end
|
135
|
+
record.merge!({@time_field => tmp_time.strftime('%FT%TZ')})
|
141
136
|
end
|
142
137
|
|
138
|
+
# Ignore undefined fields
|
143
139
|
if @ignore_undefined_fields then
|
144
140
|
record.each_key do |key|
|
145
|
-
unless
|
141
|
+
unless fields.include?(key) then
|
146
142
|
record.delete(key)
|
147
143
|
end
|
148
144
|
end
|
149
145
|
end
|
150
146
|
|
151
|
-
|
152
|
-
record.each_key do |key|
|
153
|
-
if record[key].instance_of?(Array) then
|
154
|
-
values = []
|
155
|
-
record[key].each do |value|
|
156
|
-
if value.instance_of?(String) then
|
157
|
-
if value.length > @string_field_value_max_length then
|
158
|
-
log.warn "#{key} is too long (#{value.length}, max is #{@string_field_value_max_length})."
|
159
|
-
values.push(value.slice(0, @string_field_value_max_length))
|
160
|
-
else
|
161
|
-
values.push(value)
|
162
|
-
end
|
163
|
-
end
|
164
|
-
end
|
165
|
-
record[key] = values
|
166
|
-
elsif record[key].instance_of?(String) then
|
167
|
-
if record[key].length > @string_field_value_max_length then
|
168
|
-
log.warn "#{key} is too long (#{record[key].length}, max is #{@string_field_value_max_length})."
|
169
|
-
record[key] = record[key].slice(0, @string_field_value_max_length)
|
170
|
-
end
|
171
|
-
end
|
172
|
-
end
|
173
|
-
end
|
174
|
-
|
175
|
-
#
|
176
|
-
# delete reserved fields
|
177
|
-
# https://cwiki.apache.org/confluence/display/solr/Defining+Fields
|
178
|
-
#
|
179
|
-
record.each_key do |key|
|
180
|
-
if key[0] == '_' and key[-1] == '_' then
|
181
|
-
record.delete(key)
|
182
|
-
end
|
183
|
-
end
|
184
|
-
|
147
|
+
# Add record to documents
|
185
148
|
documents << record
|
186
149
|
|
150
|
+
# Update when flash size is reached
|
187
151
|
if documents.count >= @flush_size
|
188
152
|
update documents
|
189
153
|
documents.clear
|
190
154
|
end
|
191
155
|
end
|
192
156
|
|
157
|
+
# Update remaining documents
|
193
158
|
update documents unless documents.empty?
|
194
159
|
end
|
195
160
|
|
196
161
|
def update(documents)
|
197
|
-
|
198
|
-
@
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
162
|
+
begin
|
163
|
+
if @mode == MODE_STANDALONE then
|
164
|
+
@solr.add documents, :params => {:commit => @commit_with_flush}
|
165
|
+
elsif @mode == MODE_SOLRCLOUD then
|
166
|
+
@solr.add documents, collection: @collection, :params => {:commit => @commit_with_flush}
|
167
|
+
end
|
168
|
+
log.debug "Sent #{documents.count} document(s) to Solr"
|
169
|
+
rescue Exception
|
170
|
+
log.warn "An error occurred while sending #{documents.count} document(s) to Solr"
|
203
171
|
end
|
204
|
-
rescue Exception => e
|
205
|
-
log.warn "An error occurred while indexing"
|
206
172
|
end
|
207
173
|
|
208
174
|
def get_unique_key
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
response =
|
213
|
-
|
214
|
-
|
175
|
+
unique_key = 'id'
|
176
|
+
|
177
|
+
begin
|
178
|
+
response = nil
|
179
|
+
if @mode == MODE_STANDALONE then
|
180
|
+
response = @solr.get 'schema/uniquekey'
|
181
|
+
elsif @mode == MODE_SOLRCLOUD then
|
182
|
+
response = @solr.get 'schema/uniquekey', collection: @collection
|
183
|
+
end
|
184
|
+
unique_key = response['uniqueKey']
|
185
|
+
log.debug "Unique key: #{unique_key}"
|
186
|
+
rescue Exception
|
187
|
+
log.warn 'An error occurred while getting unique key'
|
215
188
|
end
|
216
189
|
|
217
|
-
unique_key = response['uniqueKey']
|
218
|
-
log.debug "Unique key: #{unique_key}"
|
219
|
-
|
220
190
|
return unique_key
|
221
|
-
|
222
|
-
rescue Exception => e
|
223
|
-
log.warn "An error occurred while getting unique key"
|
224
191
|
end
|
225
192
|
|
226
193
|
def get_fields
|
227
|
-
|
194
|
+
fields = []
|
228
195
|
|
229
|
-
|
230
|
-
response =
|
231
|
-
elsif @mode == MODE_SOLRCLOUD then
|
232
|
-
response = @solr.get 'schema/fields', collection: @collection
|
233
|
-
end
|
196
|
+
begin
|
197
|
+
response = nil
|
234
198
|
|
235
|
-
|
236
|
-
|
237
|
-
|
199
|
+
if @mode == MODE_STANDALONE then
|
200
|
+
response = @solr.get 'schema/fields'
|
201
|
+
elsif @mode == MODE_SOLRCLOUD then
|
202
|
+
response = @solr.get 'schema/fields', collection: @collection
|
203
|
+
end
|
204
|
+
response['fields'].each do |field|
|
205
|
+
fields.push(field['name'])
|
206
|
+
end
|
207
|
+
log.debug "Fields: #{fields}"
|
208
|
+
rescue Exception
|
209
|
+
log.warn 'An error occurred while getting fields'
|
238
210
|
end
|
239
|
-
log.debug "Fields: #{fields}"
|
240
211
|
|
241
212
|
return fields
|
242
|
-
|
243
|
-
rescue Exception => e
|
244
|
-
log.warn "An error occurred while getting fields"
|
245
213
|
end
|
246
214
|
end
|
247
215
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-output-solr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Minoru Osuka
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-10-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fluentd
|
@@ -150,8 +150,7 @@ dependencies:
|
|
150
150
|
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: 1.1.8
|
153
|
-
description: Fluent output plugin for sending data to Apache Solr.
|
154
|
-
not only Standalone Solr.
|
153
|
+
description: Fluent output plugin for sending data to Apache Solr.
|
155
154
|
email:
|
156
155
|
- minoru.osuka@gmail.com
|
157
156
|
executables: []
|