Added init version of ES search.
This commit is contained in:
parent
16003ec1c3
commit
e1b6523f5f
1 changed files with 61 additions and 7 deletions
|
@ -57,26 +57,79 @@ remove whole data from index
|
||||||
|
|
||||||
=begin
|
=begin
|
||||||
|
|
||||||
return all activity entries of an user
|
return search result
|
||||||
|
|
||||||
result = SearchIndexBackend.search( user )
|
result = SearchIndexBackend.search( 'search query', limit, 'User' )
|
||||||
|
|
||||||
=end
|
=end
|
||||||
|
|
||||||
def self.search(user,limit)
|
def self.search( query, limit = 10, index = nil )
|
||||||
|
return [] if !query
|
||||||
|
|
||||||
|
url = build_url()
|
||||||
|
return if !url
|
||||||
|
if index
|
||||||
|
url += "/#{index}/_search"
|
||||||
|
else
|
||||||
|
url += '/_search'
|
||||||
|
end
|
||||||
|
data = {}
|
||||||
|
data['from'] = 0
|
||||||
|
data['size'] = 10
|
||||||
|
data['query'] = {}
|
||||||
|
# data['query']['text_phrase'] = {}
|
||||||
|
# data['query']['text_phrase']['to'] = query
|
||||||
|
# data['query']['bool'] = {}
|
||||||
|
# data['query']['bool']['must'] = {}
|
||||||
|
# data['query']['bool']['must']['term'] = {}
|
||||||
|
# data['query']['bool']['must']['term']['title'] = '*z*'
|
||||||
|
data['query']['query_string'] = {}
|
||||||
|
data['query']['query_string']['query'] = query
|
||||||
|
|
||||||
|
# data['filtered'] = {}
|
||||||
|
# data['filtered']['query'] = {}
|
||||||
|
# data['filtered']['query']['match'] = {}
|
||||||
|
# data['filtered']['query']['match']['_all'] = query
|
||||||
|
|
||||||
|
puts "# curl -X POST \"#{url}\" -d '#{data.to_json}'"
|
||||||
|
|
||||||
|
conn = connection( url )
|
||||||
|
response = conn.get do |req|
|
||||||
|
req.headers['Content-Type'] = 'application/json'
|
||||||
|
req.body = data.to_json
|
||||||
|
end
|
||||||
|
# puts response.body.to_s
|
||||||
|
puts "# #{response.status.to_s}"
|
||||||
|
puts response.body
|
||||||
|
# return true if response.success?
|
||||||
|
data = JSON.parse( response.body )
|
||||||
|
# return { :data => data, :response => response }
|
||||||
|
ids = []
|
||||||
|
return ids if !data
|
||||||
|
return ids if !data['hits']
|
||||||
|
return ids if !data['hits']['hits']
|
||||||
|
data['hits']['hits'].each { |item|
|
||||||
|
puts "... #{item['_type'].to_s} #{item['_id'].to_s}"
|
||||||
|
ids.push item['_id']
|
||||||
|
}
|
||||||
|
return ids
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def self.build_url( type, o_id = nil )
|
def self.build_url( type = nil, o_id = nil )
|
||||||
index = Setting.get('es_index').to_s + "_#{Rails.env}"
|
index = Setting.get('es_index').to_s + "_#{Rails.env}"
|
||||||
url = Setting.get('es_url')
|
url = Setting.get('es_url')
|
||||||
return if !url
|
return if !url
|
||||||
|
if type
|
||||||
if o_id
|
if o_id
|
||||||
url = "#{url}/#{index}/#{type}/#{o_id}"
|
url = "#{url}/#{index}/#{type}/#{o_id}"
|
||||||
else
|
else
|
||||||
url = "#{url}/#{index}/#{type}"
|
url = "#{url}/#{index}/#{type}"
|
||||||
end
|
end
|
||||||
|
else
|
||||||
|
url = "#{url}/#{index}"
|
||||||
|
end
|
||||||
url
|
url
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -89,4 +142,5 @@ return all activity entries of an user
|
||||||
end
|
end
|
||||||
conn
|
conn
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
Loading…
Reference in a new issue