Improved search index backend lib, added config options.

This commit is contained in:
Martin Edenhofer 2014-01-28 10:58:49 +01:00
parent 20d120a4ef
commit c96bb1956f
2 changed files with 77 additions and 20 deletions

View file

@ -0,0 +1,47 @@
class AddSearchIndex < ActiveRecord::Migration
def up
Setting.create_or_update(
:title => 'Elastic Search Endpoint URL',
:name => 'es_url',
:area => 'SearchIndex::ElasticSearch',
:description => 'Define endpoint of Elastic Search.',
:state => '',
:frontend => false
)
Setting.create_or_update(
:title => 'Elastic Search Endpoint User',
:name => 'es_user',
:area => 'SearchIndex::ElasticSearch',
:description => 'Define http basic auth user of Elastic Search.',
:state => '',
:frontend => false
)
Setting.create_or_update(
:title => 'Elastic Search Endpoint Password',
:name => 'es_password',
:area => 'SearchIndex::ElasticSearch',
:description => 'Define http basic auth password of Elastic Search.',
:state => '',
:frontend => false
)
Setting.create_or_update(
:title => 'Elastic Search Endpoint Index',
:name => 'es_index',
:area => 'SearchIndex::ElasticSearch',
:description => 'Define Elastic Search index name.',
:state => 'zammad',
:frontend => false
)
Setting.set('es_url', 'http://217.111.80.181')
Setting.set('es_user', 'elasticsearch')
Setting.set('es_password', 'zammad')
Setting.set('es_index', Socket.gethostname + 'zammad')
Ticket.search_index_reload
User.search_index_reload
Organization.search_index_reload
end
def down
end
end

View file

@ -1,10 +1,6 @@
# Copyright (C) 2012-2013 Zammad Foundation, http://zammad-foundation.org/ # Copyright (C) 2012-2013 Zammad Foundation, http://zammad-foundation.org/
class SearchIndexBackend class SearchIndexBackend
@@index = "zammad_#{Rails.env}"
@@url = 'http://217.111.80.181'
@@user = 'elasticsearch'
@@pw = 'zammad'
=begin =begin
@ -16,15 +12,12 @@ add new object to search index
def self.add(type, data) def self.add(type, data)
url = "#{@@url}/#{@@index}/#{type}/#{data[:id]}" url = build_url( type, data['id'] )
return if !url
puts "# curl -X POST \"#{url}\" -d '#{data.to_json}'" puts "# curl -X POST \"#{url}\" -d '#{data.to_json}'"
conn = Faraday.new( :url => url ) conn = connection( url )
if @@user && @@pw
conn.basic_auth( @@user, @@pw )
end
response = conn.post do |req| response = conn.post do |req|
req.url url req.url url
req.headers['Content-Type'] = 'application/json' req.headers['Content-Type'] = 'application/json'
@ -48,19 +41,13 @@ remove whole data from index
=end =end
def self.remove( type, o_id = nil ) def self.remove( type, o_id = nil )
if o_id url = build_url( type, o_id )
url = "#{@@url}/#{@@index}/#{type}/#{o_id}" return if !url
else
url = "#{@@url}/#{@@index}/#{type}"
end
puts "# curl -X DELETE \"#{url}\"" puts "# curl -X DELETE \"#{url}\""
conn = Faraday.new( :url => url ) conn = connection( url )
if @@user && @@pw response = conn.delete( url )
conn.basic_auth( @@user, @@pw )
end
response = conn.delete url
# puts response.body.to_s # puts response.body.to_s
puts "# #{response.status.to_s}" puts "# #{response.status.to_s}"
return true if response.success? return true if response.success?
@ -79,4 +66,27 @@ return all activity entries of an user
def self.search(user,limit) def self.search(user,limit)
end end
private
def self.build_url( type, o_id = nil )
index = Setting.get('es_index') + "_#{Rails.env}"
url = Setting.get('es_url')
return if !url
if o_id
url = "#{url}/#{index}/#{type}/#{o_id}"
else
url = "#{url}/#{index}/#{type}"
end
url
end
def self.connection( url )
conn = Faraday.new( :url => url )
user = Setting.get('es_user')
pw = Setting.get('es_password')
if user && !user.empty? && pw && !pw.empty?
conn.basic_auth( user, pw )
end
conn
end
end end