Class: Connectors::ElasticSearch

Inherits:
Object
  • Object
show all
Defined in:
lib/connectors/elastic_search.rb

Overview

ElasticSearch health checker

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.configured?Boolean

rubocop:disable Naming/PredicateMethod

Returns:

  • (Boolean)

Raises:

  • (StandardError)


30
31
32
33
34
# File 'lib/connectors/elastic_search.rb', line 30

def self.configured? # rubocop:disable Naming/PredicateMethod
  raise StandardError, 'Please make sure you have Elasticsearch installed' unless defined?(::Elasticsearch::Client)

  'configured'
end

Instance Method Details

#connectObject



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/connectors/elastic_search.rb', line 6

def connect
  url = ENV.fetch('ELASTICSEARCH_URL', 'http://localhost:9200')

  require 'net/http'
  require 'uri'
  require 'json'

  uri = URI.parse(url)
  http = Net::HTTP.new(uri.host, uri.port)
  http.read_timeout = 2
  http.open_timeout = 2

  response = http.get('/_cluster/health')
  if response.code.to_i == 200
    health_data = JSON.parse(response.body)
    health_data['status'] != 'red'
  else
    false
  end
rescue StandardError => e
  puts "ElasticSearch Connection Error: #{e.message}"
  false
end