ej 0.0.10 → 0.0.12
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/ej/commands.rb +44 -26
- data/lib/ej/core.rb +17 -9
- data/lib/ej/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3b1ec1d5f0c2e1630c9dcf7aee4e101cc3f53215
|
4
|
+
data.tar.gz: 5a4e7a17581781b171bbcba5f336442ce124bf78
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 40aa492344a215acdfac37730b50ae3f57a8212903352bf84b80b6ac9bcfebc2617ad7887cb402556c4b113ae2c60caae424ebc4f94a11bce3336039b63e96ac
|
7
|
+
data.tar.gz: 9a281585c27d17bfb97855a869a7736e014aeff119452e48754104c31553f356ec202e37fe1b6b6cc233f6dd37551fc6fe4b53a90ee8dd34bc9ff28feeaf59a0
|
data/lib/ej/commands.rb
CHANGED
@@ -13,6 +13,8 @@ module Ej
|
|
13
13
|
class_option :index, aliases: '-i', type: :string, default: '_all', desc: 'index'
|
14
14
|
class_option :host, aliases: '-h', type: :string, default: 'localhost', desc: 'host'
|
15
15
|
class_option :debug, aliases: '-d', type: :string, default: false, desc: 'debug mode'
|
16
|
+
class_option :format, type: :string, default: 'json', enum: ['json', 'yaml'], desc: 'format'
|
17
|
+
|
16
18
|
map '-s' => :search
|
17
19
|
map '-f' => :facet
|
18
20
|
map '-c' => :count
|
@@ -37,14 +39,16 @@ module Ej
|
|
37
39
|
option :fields, type: :array, aliases: '--fields', default: nil, desc: 'fields'
|
38
40
|
option :source_only, type: :boolean, aliases: '--so', default: true, desc: 'from'
|
39
41
|
option :query, type: :string, aliases: '-q', default: nil, desc: 'query'
|
42
|
+
option :sort, type: :hash, aliases: '--sort', default: nil, desc: 'ex. --sort @timestamp:desc'
|
40
43
|
def search(query = options['query'])
|
41
|
-
|
44
|
+
puts_with_format(@core.search(options['type'],
|
42
45
|
query,
|
43
46
|
options['size'],
|
44
47
|
options['from'],
|
45
48
|
options['source_only'],
|
46
|
-
|
47
|
-
options['fields']
|
49
|
+
nil,
|
50
|
+
options['fields'],
|
51
|
+
options['sort']
|
48
52
|
))
|
49
53
|
end
|
50
54
|
|
@@ -52,54 +56,56 @@ module Ej
|
|
52
56
|
option :type, type: :string, aliases: '-t', default: nil, desc: 'type'
|
53
57
|
option :query, type: :string, aliases: '-q', default: nil, desc: 'query'
|
54
58
|
def count(query = options['query'])
|
55
|
-
|
59
|
+
puts_with_format(@core.search(options['type'], query, 0, 0, false))
|
56
60
|
end
|
57
61
|
|
58
62
|
desc 'distinct [lucene query]', 'distinct'
|
59
63
|
option :type, type: :string, aliases: '-t', default: nil, desc: 'type'
|
60
64
|
option :query, type: :string, aliases: '-q', default: nil, desc: 'query'
|
61
65
|
def distinct(term)
|
62
|
-
|
66
|
+
puts_with_format(@core.distinct(term, options['type'], options['query']))
|
63
67
|
end
|
64
68
|
|
65
69
|
desc 'copy', 'copy index'
|
66
70
|
option :source, type: :string, aliases: '--source', required: true, desc: 'source host'
|
67
71
|
option :dest, type: :string, aliases: '--dest', required: true, desc: 'dest host'
|
68
72
|
option :query, type: :string, aliases: '-q', default: nil, desc: 'query'
|
73
|
+
option :per, type: :numeric, default: nil, desc: 'per'
|
69
74
|
def copy
|
70
|
-
@core.copy(options['source'], options['dest'], options['query'])
|
75
|
+
@core.copy(options['source'], options['dest'], options['query'], options['per'])
|
71
76
|
end
|
72
77
|
|
73
78
|
desc 'dump', 'dump index'
|
74
79
|
option :query, type: :string, aliases: '-q', default: nil, desc: 'query'
|
80
|
+
option :per, type: :numeric, default: nil, desc: 'per'
|
75
81
|
def dump
|
76
|
-
@core.dump(options['query'])
|
82
|
+
@core.dump(options['query'], options['per'])
|
77
83
|
end
|
78
84
|
|
79
85
|
desc '-f', 'facet'
|
80
86
|
option :query, type: :string, aliases: '-q', default: '*', desc: 'query'
|
81
87
|
option :size, type: :numeric, aliases: '-n', default: 10, desc: 'size'
|
82
88
|
def facet(term)
|
83
|
-
|
89
|
+
puts_with_format(@core.facet(term, options['size'], options['query']))
|
84
90
|
end
|
85
91
|
|
86
92
|
desc 'aggs', 'aggs'
|
87
93
|
option :query, type: :string, aliases: '-q', default: '*', desc: 'query'
|
88
94
|
option :size, type: :numeric, aliases: '-n', default: 10, desc: 'size'
|
89
95
|
def aggs(term)
|
90
|
-
|
96
|
+
puts_with_format(@core.aggs(term, options['size'], options['query']))
|
91
97
|
end
|
92
98
|
|
93
99
|
desc 'min', 'term'
|
94
100
|
option :term, type: :string, aliases: '-k', desc: 'terms'
|
95
101
|
def min
|
96
|
-
|
102
|
+
puts_with_format(@core.min(options['term']))
|
97
103
|
end
|
98
104
|
|
99
105
|
desc 'max', 'count record, group by keys'
|
100
106
|
option :term, type: :string, aliases: '-k', desc: 'terms'
|
101
107
|
def max
|
102
|
-
|
108
|
+
puts_with_format(@core.max(options['term']))
|
103
109
|
end
|
104
110
|
|
105
111
|
desc '-b', 'bulk import STDIN JSON'
|
@@ -114,39 +120,39 @@ module Ej
|
|
114
120
|
|
115
121
|
desc 'health', 'health'
|
116
122
|
def health
|
117
|
-
|
123
|
+
puts_with_format(@core.health)
|
118
124
|
end
|
119
125
|
|
120
126
|
desc '-a', 'list aliases'
|
121
127
|
def aliases
|
122
|
-
|
128
|
+
puts_with_format(@core.aliases)
|
123
129
|
end
|
124
130
|
|
125
131
|
desc 'state', 'state'
|
126
132
|
def state
|
127
|
-
|
133
|
+
puts_with_format(@core.state)
|
128
134
|
end
|
129
135
|
|
130
136
|
desc 'indices', 'show indices summary'
|
131
137
|
def indices
|
132
|
-
|
138
|
+
puts_with_format(@core.indices)
|
133
139
|
end
|
134
140
|
|
135
141
|
desc 'stats', 'index stats'
|
136
142
|
def stats
|
137
|
-
|
143
|
+
puts_with_format(@core.stats)
|
138
144
|
end
|
139
145
|
|
140
146
|
desc 'mapping', 'show mapping'
|
141
147
|
def mapping
|
142
|
-
|
148
|
+
puts_with_format(@core.mapping)
|
143
149
|
end
|
144
150
|
|
145
151
|
desc 'not_analyzed', 'not analyzed'
|
146
152
|
def not_analyzed
|
147
153
|
json = File.read(File.expand_path('../../../template/not_analyze_template.json', __FILE__))
|
148
154
|
hash = Yajl::Parser.parse(json)
|
149
|
-
|
155
|
+
puts_with_format(@core.put_template('ej_init', hash))
|
150
156
|
end
|
151
157
|
|
152
158
|
desc 'put_routing', "put routing.\nexsample. ej put_routing -i someindex -t sometype --path somecolumn"
|
@@ -155,13 +161,13 @@ module Ej
|
|
155
161
|
option :path, type: :string, default: nil, required: true, desc: 'path'
|
156
162
|
def put_routing
|
157
163
|
body = { options['type'] => {"_routing"=>{"required"=>true, "path"=>options['path']}}}
|
158
|
-
|
164
|
+
puts_with_format(@core.put_mapping(options['index'], options['type'], body))
|
159
165
|
end
|
160
166
|
|
161
167
|
desc 'put_template', 'put template'
|
162
168
|
def put_template(name)
|
163
169
|
hash = Yajl::Parser.parse(STDIN.read)
|
164
|
-
|
170
|
+
puts_with_format(@core.put_template(name, hash))
|
165
171
|
end
|
166
172
|
|
167
173
|
desc 'create_aliases', 'create aliases'
|
@@ -192,32 +198,32 @@ module Ej
|
|
192
198
|
|
193
199
|
desc 'template', 'show template'
|
194
200
|
def template
|
195
|
-
|
201
|
+
puts_with_format(@core.template)
|
196
202
|
end
|
197
203
|
|
198
204
|
desc 'settings', 'show template'
|
199
205
|
def settings
|
200
|
-
|
206
|
+
puts_with_format(@core.settings)
|
201
207
|
end
|
202
208
|
|
203
209
|
desc 'warmer', 'warmer'
|
204
210
|
def warmer
|
205
|
-
|
211
|
+
puts_with_format(@core.warmer)
|
206
212
|
end
|
207
213
|
|
208
214
|
desc 'refresh', 'refresh'
|
209
215
|
def refresh
|
210
|
-
|
216
|
+
puts_with_format(@core.refresh)
|
211
217
|
end
|
212
218
|
|
213
219
|
desc 'nodes_info', 'view nodes info'
|
214
220
|
def nodes_info
|
215
|
-
|
221
|
+
puts_with_format @core.nodes_info
|
216
222
|
end
|
217
223
|
|
218
224
|
desc 'nodes_stats', 'view nodes stats'
|
219
225
|
def nodes_stats
|
220
|
-
|
226
|
+
puts_with_format @core.nodes_stats
|
221
227
|
end
|
222
228
|
|
223
229
|
desc '--j2h', 'json to hash'
|
@@ -227,9 +233,21 @@ module Ej
|
|
227
233
|
|
228
234
|
private
|
229
235
|
|
236
|
+
def puts_with_format(object)
|
237
|
+
if options['format'] == 'json'
|
238
|
+
puts_json(object)
|
239
|
+
elsif options['format'] == 'yaml'
|
240
|
+
puts_yaml(object)
|
241
|
+
end
|
242
|
+
end
|
243
|
+
|
230
244
|
def puts_json(object)
|
231
245
|
puts Yajl::Encoder.encode(object, pretty: true)
|
232
246
|
end
|
233
247
|
|
248
|
+
def puts_yaml(object)
|
249
|
+
puts YAML.dump(object)
|
250
|
+
end
|
251
|
+
|
234
252
|
end
|
235
253
|
end
|
data/lib/ej/core.rb
CHANGED
@@ -8,16 +8,23 @@ require 'pp'
|
|
8
8
|
|
9
9
|
module Ej
|
10
10
|
class Core
|
11
|
-
DEFAULT_PER =
|
11
|
+
DEFAULT_PER = 1000
|
12
12
|
def initialize(host, index, debug)
|
13
13
|
@logger = debug ? Logger.new($stderr) : nil
|
14
14
|
@index = index
|
15
15
|
@client = Elasticsearch::Client.new hosts: host, logger: @logger, index: @index
|
16
16
|
end
|
17
17
|
|
18
|
-
def search(type, query, size, from, source_only, routing = nil, fields = nil)
|
18
|
+
def search(type, query, size, from, source_only, routing = nil, fields = nil, sort = nil)
|
19
19
|
body = { from: from }
|
20
20
|
body[:size] = size unless size.nil?
|
21
|
+
if sort
|
22
|
+
sorts = []
|
23
|
+
sort.each do |k, v|
|
24
|
+
sorts << { k => v }
|
25
|
+
end
|
26
|
+
body[:sort] = sorts
|
27
|
+
end
|
21
28
|
body[:query] = { query_string: { query: query } } unless query.nil?
|
22
29
|
search_option = { index: @index, type: type, body: body }
|
23
30
|
search_option[:routing] = routing unless routing.nil?
|
@@ -32,8 +39,8 @@ module Ej
|
|
32
39
|
@client.search index: @index, type: type, body: body
|
33
40
|
end
|
34
41
|
|
35
|
-
def copy(source, dest, query)
|
36
|
-
per = DEFAULT_PER
|
42
|
+
def copy(source, dest, query, per_size)
|
43
|
+
per = per_size || DEFAULT_PER
|
37
44
|
num = 0
|
38
45
|
logger = Logger.new($stdout)
|
39
46
|
source_client = Elasticsearch::Client.new hosts: source, index: @index
|
@@ -59,11 +66,11 @@ module Ej
|
|
59
66
|
end
|
60
67
|
end
|
61
68
|
|
62
|
-
def dump(query)
|
63
|
-
per = DEFAULT_PER
|
69
|
+
def dump(query, per_size)
|
70
|
+
per = per_size || DEFAULT_PER
|
64
71
|
num = 0
|
65
|
-
bulk_message = []
|
66
72
|
while true
|
73
|
+
bulk_message = []
|
67
74
|
from = num * per
|
68
75
|
body = { size: per, from: from }
|
69
76
|
body[:query] = { query_string: { query: query } } unless query.nil?
|
@@ -77,8 +84,8 @@ module Ej
|
|
77
84
|
bulk_message << Yajl::Encoder.encode(source)
|
78
85
|
end
|
79
86
|
num += 1
|
87
|
+
puts bulk_message.join("\n")
|
80
88
|
end
|
81
|
-
puts bulk_message.join("\n")
|
82
89
|
end
|
83
90
|
|
84
91
|
def facet(term, size, query)
|
@@ -106,7 +113,8 @@ module Ej
|
|
106
113
|
"aggs"=>
|
107
114
|
{"agg_" + term =>
|
108
115
|
{"terms"=>{"field"=>term, "size"=>size, "order"=>{"_count"=>"desc"}}}}}
|
109
|
-
@client.search index: @index, body: body
|
116
|
+
results = @client.search index: @index, body: body
|
117
|
+
results['aggregations']["agg_" + term]['buckets']
|
110
118
|
end
|
111
119
|
|
112
120
|
def min(term)
|
data/lib/ej/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ej
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- toyama0919
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-05-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -196,7 +196,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
196
196
|
version: '0'
|
197
197
|
requirements: []
|
198
198
|
rubyforge_project:
|
199
|
-
rubygems_version: 2.4.
|
199
|
+
rubygems_version: 2.4.8
|
200
200
|
signing_key:
|
201
201
|
specification_version: 4
|
202
202
|
summary: elasticsearch command line utility.
|