Sha256: 336d1feed73f00ac84ebf244fe02e05723121588b8606f21e51f7204f875b77d
Contents?: true
Size: 1.33 KB
Versions: 1
Compression:
Stored size: 1.33 KB
Contents
require 'proxes/services/es' module ProxES module Services module Search class << self include ES def indices client.indices.get_mapping(index: '_all').keys end def fields(index = '_all') fields = {} client.indices.get_mapping(index: index).each do |index, index_map| index_map['mappings'].each do |type, type_map| next if type_map['properties'].nil? type_map['properties'].each do |name, details| if details['type'] != 'keyword' && details['fields'] keyword = details['fields'].find do |v| v[1]['type'] == 'keyword' end fields["#{name}.#{keyword[0]}"] ||= keyword[1]['type'] end fields[name] ||= details['type'] unless details['type'].nil? end end.to_h end fields end def values(field, index = '_all', size = 25) result = client.search index: index, body: { size: 0, aggs: { values: { terms: { field: field, size: size } } } } result['aggregations']['values']['buckets'].map { |e| e['key'] } end def search(qs, options = {}) client.search options.merge(q: qs)#, explain: true end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
proxes-0.9.7 | lib/proxes/services/search.rb |