ej 0.0.7 → 0.0.8

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
  SHA1:
3
- metadata.gz: b0063005854bb2ad94ce28e13961b24585ba9e57
4
- data.tar.gz: 2daf05f3e58689c358bccc6d3b7eb823ff50f17a
3
+ metadata.gz: c59e2d9ef69659e78965bdf47966eb4dbc290d1b
4
+ data.tar.gz: 5c38f14f40b51b17b2aadb74764a4e5b385a9d97
5
5
  SHA512:
6
- metadata.gz: 532189d20341f8c92157aa0918f4cdac32aad56ee51cd69e1114f35cff24c5f72cade7216cb1de5b4c8dc7343390c7cc1fa51442774fd86c15c3d20c73f3b423
7
- data.tar.gz: c02c791cadded15a269ac2cdf59558a147215f23ba8b85efc7190c8c34208258f42814fd37b57c6cbd855773b0b2247bd123915731f472d65276c617a1d048ff
6
+ metadata.gz: a574e5a65c979ab40fabe18b5c3ec74f37d00a7982e1987e916379319b8b87b4901e01c2d2b34875e5a8782a7bda475091b7b4cc9d8a759c5bb3627582a14fc8
7
+ data.tar.gz: 773b7994f96c5f98ae1782d6189b1816be4f3148317d6ded743bfb77822e5e81044f0186e1c54b32cb78c479687be6690fbc4bd3636aff4510b6499e352d1851
@@ -73,6 +73,13 @@ module Ej
73
73
  puts_json(@core.facet(term, options['size'], options['query']))
74
74
  end
75
75
 
76
+ desc 'aggs', 'aggs'
77
+ option :query, type: :string, aliases: '-q', default: '*', desc: 'query'
78
+ option :size, type: :numeric, aliases: '-n', default: 10, desc: 'size'
79
+ def aggs(term)
80
+ puts_json(@core.aggs(term, options['size'], options['query']))
81
+ end
82
+
76
83
  desc 'min', 'term'
77
84
  option :term, type: :string, aliases: '-k', desc: 'terms'
78
85
  def min
@@ -8,9 +8,9 @@ require 'pp'
8
8
 
9
9
  module Ej
10
10
  class Core
11
+ DEFAULT_PER = 30000
11
12
  def initialize(host, index, debug)
12
- @logger = Logger.new($stderr)
13
- @logger.level = debug ? Logger::DEBUG : Logger::INFO
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
@@ -32,30 +32,34 @@ module Ej
32
32
  end
33
33
 
34
34
  def move(source, dest, query)
35
- per = 30000
36
- source_client = Elasticsearch::Client.new hosts: source, index: @index, logger: @logger
37
- dest_client = Elasticsearch::Client.new hosts: dest, logger: @logger
35
+ per = DEFAULT_PER
38
36
  num = 0
37
+ logger = Logger.new($stdout)
38
+ source_client = Elasticsearch::Client.new hosts: source, index: @index
39
+ dest_client = Elasticsearch::Client.new hosts: dest
39
40
  while true
40
41
  from = num * per
41
42
  body = { size: per, from: from }
42
43
  body[:query] = { query_string: { query: query } } unless query.nil?
43
44
  data = Hashie::Mash.new(source_client.search index: @index, body: body)
44
- break if data.hits.hits.empty?
45
+ docs = data.hits.hits
46
+ total = data.hits.total
47
+ break if docs.empty?
45
48
  bulk_message = []
46
- data.hits.hits.each do |doc|
49
+ docs.each do |doc|
47
50
  source = doc.delete('_source')
48
51
  doc.delete('_score')
49
52
  bulk_message << { index: doc.to_h }
50
53
  bulk_message << source
51
54
  end
52
55
  dest_client.bulk body: bulk_message unless bulk_message.empty?
56
+ logger.info("move complete #{from + docs.size}/#{total}")
53
57
  num += 1
54
58
  end
55
59
  end
56
60
 
57
61
  def dump(query)
58
- per = 30000
62
+ per = DEFAULT_PER
59
63
  num = 0
60
64
  bulk_message = []
61
65
  while true
@@ -63,8 +67,9 @@ module Ej
63
67
  body = { size: per, from: from }
64
68
  body[:query] = { query_string: { query: query } } unless query.nil?
65
69
  data = Hashie::Mash.new(@client.search index: @index, body: body)
66
- break if data.hits.hits.empty?
67
- data.hits.hits.each do |doc|
70
+ docs = data.hits.hits
71
+ break if docs.empty?
72
+ docs.each do |doc|
68
73
  source = doc.delete('_source')
69
74
  doc.delete('_score')
70
75
  bulk_message << Yajl::Encoder.encode({ 'index' => doc.to_h })
@@ -91,6 +96,18 @@ module Ej
91
96
  @client.search index: @index, body: body
92
97
  end
93
98
 
99
+ def aggs(term, size, query)
100
+ body = {"size"=>0,
101
+ "query"=>
102
+ {"filtered"=>
103
+ {"query"=>{"query_string"=>{"query"=> query}},
104
+ "filter"=>{"bool"=>{"must"=>[], "must_not"=>[]}}}},
105
+ "aggs"=>
106
+ {"agg_" + term =>
107
+ {"terms"=>{"field"=>term, "size"=>size, "order"=>{"_count"=>"desc"}}}}}
108
+ @client.search index: @index, body: body
109
+ end
110
+
94
111
  def min(term)
95
112
  body = {
96
113
  aggs: {
@@ -1,3 +1,3 @@
1
1
  module Ej
2
- VERSION = '0.0.7'
2
+ VERSION = '0.0.8'
3
3
  end
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.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - toyama0919
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-06 00:00:00.000000000 Z
11
+ date: 2014-11-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler