lib/ej/commands.rb in ej-0.0.10 vs lib/ej/commands.rb in ej-0.0.12

- old
+ new

@@ -11,10 +11,12 @@ module Ej class Commands < Thor class_option :index, aliases: '-i', type: :string, default: '_all', desc: 'index' class_option :host, aliases: '-h', type: :string, default: 'localhost', desc: 'host' class_option :debug, aliases: '-d', type: :string, default: false, desc: 'debug mode' + class_option :format, type: :string, default: 'json', enum: ['json', 'yaml'], desc: 'format' + map '-s' => :search map '-f' => :facet map '-c' => :count map '-b' => :bulk map '-l' => :indices @@ -35,73 +37,77 @@ option :size, type: :numeric, aliases: '-n', default: nil, desc: 'size' option :from, type: :numeric, aliases: '--from', default: 0, desc: 'from' option :fields, type: :array, aliases: '--fields', default: nil, desc: 'fields' option :source_only, type: :boolean, aliases: '--so', default: true, desc: 'from' option :query, type: :string, aliases: '-q', default: nil, desc: 'query' + option :sort, type: :hash, aliases: '--sort', default: nil, desc: 'ex. --sort @timestamp:desc' def search(query = options['query']) - puts_json(@core.search(options['type'], + puts_with_format(@core.search(options['type'], query, options['size'], options['from'], options['source_only'], - query, - options['fields'] + nil, + options['fields'], + options['sort'] )) end desc 'total [lucene query]', 'total' option :type, type: :string, aliases: '-t', default: nil, desc: 'type' option :query, type: :string, aliases: '-q', default: nil, desc: 'query' def count(query = options['query']) - puts_json(@core.search(options['type'], query, 0, 0, false)) + puts_with_format(@core.search(options['type'], query, 0, 0, false)) end desc 'distinct [lucene query]', 'distinct' option :type, type: :string, aliases: '-t', default: nil, desc: 'type' option :query, type: :string, aliases: '-q', default: nil, desc: 'query' def distinct(term) - puts_json(@core.distinct(term, options['type'], options['query'])) + puts_with_format(@core.distinct(term, options['type'], options['query'])) end desc 'copy', 'copy index' option :source, type: :string, aliases: '--source', required: true, desc: 'source host' option :dest, type: :string, aliases: '--dest', required: true, desc: 'dest host' option :query, type: :string, aliases: '-q', default: nil, desc: 'query' + option :per, type: :numeric, default: nil, desc: 'per' def copy - @core.copy(options['source'], options['dest'], options['query']) + @core.copy(options['source'], options['dest'], options['query'], options['per']) end desc 'dump', 'dump index' option :query, type: :string, aliases: '-q', default: nil, desc: 'query' + option :per, type: :numeric, default: nil, desc: 'per' def dump - @core.dump(options['query']) + @core.dump(options['query'], options['per']) end desc '-f', 'facet' option :query, type: :string, aliases: '-q', default: '*', desc: 'query' option :size, type: :numeric, aliases: '-n', default: 10, desc: 'size' def facet(term) - puts_json(@core.facet(term, options['size'], options['query'])) + puts_with_format(@core.facet(term, options['size'], options['query'])) end desc 'aggs', 'aggs' option :query, type: :string, aliases: '-q', default: '*', desc: 'query' option :size, type: :numeric, aliases: '-n', default: 10, desc: 'size' def aggs(term) - puts_json(@core.aggs(term, options['size'], options['query'])) + puts_with_format(@core.aggs(term, options['size'], options['query'])) end desc 'min', 'term' option :term, type: :string, aliases: '-k', desc: 'terms' def min - puts_json(@core.min(options['term'])) + puts_with_format(@core.min(options['term'])) end desc 'max', 'count record, group by keys' option :term, type: :string, aliases: '-k', desc: 'terms' def max - puts_json(@core.max(options['term'])) + puts_with_format(@core.max(options['term'])) end desc '-b', 'bulk import STDIN JSON' option :index, aliases: '-i', type: :string, default: "logstash-#{Time.now.strftime('%Y.%m.%d')}", required: true, desc: 'index' option :type, type: :string, aliases: '-t', default: nil, required: true, desc: 'type' @@ -112,58 +118,58 @@ @core.bulk(options['timestamp_key'], options['type'], options['add_timestamp'], options['id_keys'], options['index']) end desc 'health', 'health' def health - puts_json(@core.health) + puts_with_format(@core.health) end desc '-a', 'list aliases' def aliases - puts_json(@core.aliases) + puts_with_format(@core.aliases) end desc 'state', 'state' def state - puts_json(@core.state) + puts_with_format(@core.state) end desc 'indices', 'show indices summary' def indices - puts_json(@core.indices) + puts_with_format(@core.indices) end desc 'stats', 'index stats' def stats - puts_json(@core.stats) + puts_with_format(@core.stats) end desc 'mapping', 'show mapping' def mapping - puts_json(@core.mapping) + puts_with_format(@core.mapping) end desc 'not_analyzed', 'not analyzed' def not_analyzed json = File.read(File.expand_path('../../../template/not_analyze_template.json', __FILE__)) hash = Yajl::Parser.parse(json) - puts_json(@core.put_template('ej_init', hash)) + puts_with_format(@core.put_template('ej_init', hash)) end desc 'put_routing', "put routing.\nexsample. ej put_routing -i someindex -t sometype --path somecolumn" option :index, aliases: '-i', type: :string, default: nil, required: true, desc: 'index' option :type, aliases: '-t', type: :string, default: nil, required: true, desc: 'type' option :path, type: :string, default: nil, required: true, desc: 'path' def put_routing body = { options['type'] => {"_routing"=>{"required"=>true, "path"=>options['path']}}} - puts_json(@core.put_mapping(options['index'], options['type'], body)) + puts_with_format(@core.put_mapping(options['index'], options['type'], body)) end desc 'put_template', 'put template' def put_template(name) hash = Yajl::Parser.parse(STDIN.read) - puts_json(@core.put_template(name, hash)) + puts_with_format(@core.put_template(name, hash)) end desc 'create_aliases', 'create aliases' option :alias, type: :string, aliases: '-a', default: nil, required: true, desc: 'alias name' option :indices, type: :array, aliases: '-x', default: nil, required: true, desc: 'index array' @@ -190,46 +196,58 @@ @core.delete_template(options['name']) end desc 'template', 'show template' def template - puts_json(@core.template) + puts_with_format(@core.template) end desc 'settings', 'show template' def settings - puts_json(@core.settings) + puts_with_format(@core.settings) end desc 'warmer', 'warmer' def warmer - puts_json(@core.warmer) + puts_with_format(@core.warmer) end desc 'refresh', 'refresh' def refresh - puts_json(@core.refresh) + puts_with_format(@core.refresh) end desc 'nodes_info', 'view nodes info' def nodes_info - puts_json @core.nodes_info + puts_with_format @core.nodes_info end desc 'nodes_stats', 'view nodes stats' def nodes_stats - puts_json @core.nodes_stats + puts_with_format @core.nodes_stats end desc '--j2h', 'json to hash' def json_to_hash pp Yajl::Parser.parse(STDIN.read) end private + def puts_with_format(object) + if options['format'] == 'json' + puts_json(object) + elsif options['format'] == 'yaml' + puts_yaml(object) + end + end + def puts_json(object) puts Yajl::Encoder.encode(object, pretty: true) + end + + def puts_yaml(object) + puts YAML.dump(object) end end end