metacrunch-elasticsearch 2.1.0 → 2.1.1

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: 17ba1fec96c7af64b5cdf8283dfee2fe0b4eadf1
4
- data.tar.gz: fb673a9a460c7d7f82c96dfedc6a48fd26fdc971
3
+ metadata.gz: 26718380b20c6d344d4f356604d8800711f721a4
4
+ data.tar.gz: e4e38880f4709aebb74c76332d2e18f95fd0a2ae
5
5
  SHA512:
6
- metadata.gz: 106cdda72d6b43bf2d52392b1f3d45e68bbd679427ec1ca582a265dc904d286415ce8e35a0464e867eca550661ef65232e983e72812c4bd815dbbb5c050dcf34
7
- data.tar.gz: 7d3552381f7dbf8fab91d2d1e8a2ca8cc964304bfe2105baa760eeba71cbadd12748ffe6ef03b2a425f343fa37caf51dace45d2534eec8b783f4d30516ee658a
6
+ metadata.gz: 9662ded772976b51e221caf81938795a91da1dcb0b66c939143480ebad25b2292e5ccf657a9e86e52c77b9fe2444e0910f9e2f591d62aba2927714718efd0a2c
7
+ data.tar.gz: d7007c5911b76fbc3815fdff41a4b3aa8e55efe190d114b304ce46527986b8123e936e8a34d6f37a9e4ac2b2ca4062f8a272f5c4dd801bdae796d229953ca686
data/Gemfile CHANGED
@@ -13,11 +13,10 @@ group :development do
13
13
 
14
14
  if !ENV["CI"]
15
15
  gem "hashdiff"
16
- gem "pry", "~> 0.9.12.6"
17
- gem "pry-byebug", "<= 1.3.2"
16
+ gem "pry", "~> 0.10.3"
17
+ gem "pry-byebug", "~> 3.3.0"
18
18
  gem "pry-rescue", "~> 1.4.2"
19
- gem "pry-stack_explorer", "~> 0.4.9.1"
20
- gem "pry-syntax-hacks", "~> 0.0.6"
19
+ gem "pry-state", "~> 0.1.7"
21
20
  end
22
21
  end
23
22
 
@@ -0,0 +1,84 @@
1
+ require "elasticsearch"
2
+ require_relative "../cli"
3
+
4
+ class Metacrunch::Elasticsearch::Cli::DumpMetadata < Metacrunch::Command
5
+ def call
6
+ [:mappings, :settings].each do |_element|
7
+ _filename_option = "#{_element}_filename"
8
+
9
+ if options[_filename_option].present?
10
+ options["dump_#{_element}"] = true
11
+ end
12
+
13
+ if options[_filename_option] == _filename_option
14
+ options.delete(_filename_option)
15
+ end
16
+
17
+ if options["dump_#{_element}"]
18
+ if filename = options["#{_element}_filename"]
19
+ File.write(filename, format(send(_element), format_from_filename(filename)))
20
+ else
21
+ puts send(_element)
22
+ end
23
+ end
24
+ end
25
+
26
+ if !options[:dump_mapping] && !options[:dump_settings]
27
+ puts format(settings.merge(mappings), options[:format])
28
+
29
+ if options[:format] == :yaml
30
+ $stderr.puts <<-MESSAGE.strip_heredoc
31
+
32
+ You have requested to dump settings and mapping into YAML. Please keep in mind
33
+ that if you are trying to create an index with both, settings and mapping, this
34
+ request has to be JSON formatted. Nevertheless you can create the index with YAML
35
+ settings and put a YAML formatted mapping afterwards.
36
+
37
+ https://github.com/elastic/elasticsearch/issues/1755
38
+
39
+ MESSAGE
40
+ end
41
+ end
42
+ end
43
+ alias_method :perform, :call
44
+
45
+ private
46
+
47
+ def client
48
+ @client ||= Elasticsearch::Client.new(url: options[:url])
49
+ end
50
+
51
+ def format(obj, format)
52
+ if format.to_sym == :json
53
+ JSON.pretty_generate(obj)
54
+ elsif format.to_sym == :yaml
55
+ YAML.dump(obj)
56
+ else
57
+ raise "Unknown output format!"
58
+ end
59
+ end
60
+
61
+ def format_from_filename(filename)
62
+ return nil if filename.blank?
63
+
64
+ case File.extname(filename)
65
+ when /json\Z/i then :json
66
+ when /yml\Z|yaml\Z/i then :yaml
67
+ end
68
+ end
69
+
70
+ def mappings
71
+ client.indices.get_mapping(index: @options[:index], type: @options[:type]).try(:values).try(:first)
72
+ end
73
+
74
+ def settings
75
+ client.indices.get_settings(index: @options[:index])
76
+ .try(:values)
77
+ .try(:first)
78
+ .try(:tap) do |_obj|
79
+ _obj["settings"]["index"].reject! do |_key, _|
80
+ ["creation_date", "uuid", "version"].include?(_key)
81
+ end
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,19 @@
1
+ require "elasticsearch"
2
+ require_relative "../cli"
3
+
4
+ class Metacrunch::Elasticsearch::Cli::ListIndices < Metacrunch::Command
5
+ def call
6
+ puts indices
7
+ end
8
+ alias_method :perform, :call
9
+
10
+ private
11
+
12
+ def client
13
+ @client ||= Elasticsearch::Client.new(url: @options[:url])
14
+ end
15
+
16
+ def indices
17
+ client.cat.indices(h: "index", format: :json).map { |_element| _element["index"] }
18
+ end
19
+ end
@@ -0,0 +1,59 @@
1
+ module Metacrunch
2
+ module Elasticsearch
3
+ module Cli
4
+ require_relative "./cli/dump_metadata"
5
+ require_relative "./cli/list_indices"
6
+ #require_relative "./cli/reindex_command"
7
+ end
8
+ end
9
+ end
10
+
11
+ Metacrunch::Cli.setup("elasticsearch", "Commands for Elasticsearch") do |r|
12
+ #
13
+ #
14
+ #
15
+ r.register(Metacrunch::Elasticsearch::Cli::DumpMetadata) do |c|
16
+ c.name "dump_metadata"
17
+ c.usage "dump_metadata"
18
+ c.desc "Dump index metadata"
19
+
20
+ c.option :url,
21
+ desc: "Elasticsearch url",
22
+ type: :string,
23
+ aliases: "-u",
24
+ required: true
25
+ c.option :format,
26
+ desc: "Output format",
27
+ type: :string,
28
+ aliases: "-f",
29
+ default: :yaml
30
+ c.option :mappings_filename,
31
+ desc: "Dump mappings",
32
+ aliases: "-m"
33
+ c.option :settings_filename,
34
+ desc: "Dump settings",
35
+ aliases: "-s",
36
+ default: false
37
+ c.option :index,
38
+ desc: "Index name",
39
+ aliases: "-i",
40
+ required: true
41
+ c.option :type,
42
+ desc: "Type to dump mapping for",
43
+ aliases: "-t",
44
+ default: "_default_"
45
+
46
+ end
47
+
48
+ r.register(Metacrunch::Elasticsearch::Cli::ListIndices) do |c|
49
+ c.name "list_indices"
50
+ c.usage "list_indices"
51
+ c.desc "List indices"
52
+
53
+ c.option :url,
54
+ desc: "Elasticsearch url",
55
+ type: :string,
56
+ aliases: "-u",
57
+ required: true
58
+ end
59
+ end
@@ -11,10 +11,11 @@ class Metacrunch::Elasticsearch::IndexCreator < Metacrunch::Processor
11
11
  attr_accessor :default_mapping
12
12
  attr_accessor :delete_existing_index
13
13
  attr_accessor :logger
14
+ attr_accessor :settings
14
15
 
15
16
  def initialize(options = {})
16
17
  (@client_args = options).deep_symbolize_keys!
17
- extract_options!(@client_args, :_client_options_, :default_mapping, :delete_existing_index, :logger, :number_of_shards, :number_of_replicas)
18
+ extract_options!(@client_args, :_client_options_, :default_mapping, :delete_existing_index, :logger, :number_of_shards, :number_of_replicas, :settings)
18
19
  raise ArgumentError.new("You have to supply an index name!") if @client_args[:index].blank?
19
20
  end
20
21
 
@@ -37,7 +38,8 @@ class Metacrunch::Elasticsearch::IndexCreator < Metacrunch::Processor
37
38
  {
38
39
  body: {
39
40
  number_of_shards: @number_of_shards,
40
- number_of_replicas: @number_of_replicas
41
+ number_of_replicas: @number_of_replicas,
42
+ settings: @settings
41
43
  }.compact
42
44
  }
43
45
  ))
@@ -1,5 +1,5 @@
1
1
  module Metacrunch
2
2
  module Elasticsearch
3
- VERSION = "2.1.0"
3
+ VERSION = "2.1.1"
4
4
  end
5
5
  end
@@ -3,6 +3,7 @@ require "elasticsearch"
3
3
 
4
4
  module Metacrunch
5
5
  module Elasticsearch
6
+ require_relative "./elasticsearch/cli"
6
7
  require_relative "./elasticsearch/index_creator"
7
8
  require_relative "./elasticsearch/indexer"
8
9
  require_relative "./elasticsearch/reader"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metacrunch-elasticsearch
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - René Sprotte
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2015-10-15 00:00:00.000000000 Z
12
+ date: 2016-01-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -69,6 +69,9 @@ files:
69
69
  - bin/console
70
70
  - bin/setup
71
71
  - lib/metacrunch/elasticsearch.rb
72
+ - lib/metacrunch/elasticsearch/cli.rb
73
+ - lib/metacrunch/elasticsearch/cli/dump_metadata.rb
74
+ - lib/metacrunch/elasticsearch/cli/list_indices.rb
72
75
  - lib/metacrunch/elasticsearch/client_factory.rb
73
76
  - lib/metacrunch/elasticsearch/index_creator.rb
74
77
  - lib/metacrunch/elasticsearch/indexer.rb
@@ -100,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
100
103
  version: '0'
101
104
  requirements: []
102
105
  rubyforge_project:
103
- rubygems_version: 2.4.8
106
+ rubygems_version: 2.5.1
104
107
  signing_key:
105
108
  specification_version: 4
106
109
  summary: Metacrunch elasticsearch package