1
我想在基於elasticsearch +輪胎的rails中構建一個搜索功能,從而能夠通過篩選關聯對象及其值來搜索人員。一個人has_many對象,一個對象has_many值。Elasticsearch術語和使用輪胎的範圍過濾器
我設法得到對象名稱(params [:object])的過濾工作,但不是對象+值。我應該如何爲值和映射構造範圍過濾器,以便該值取決於對象?
人控制
mapping do
indexes :objects do
indexes :_id
indexes :object_values do
indexes :value
end
end
indexes :name, type: 'string', analyzer: 'snowball'
end
def self.search(params)
tire.search do
query do
boolean do
must { string params[:query]} if params[:query].present?
end
end
filter :term, {"objects._id" => params[:object]} if params[:object].present?
filter :range, 「objects.object_values.value」 => {from: params[:value] } if params[:value].present?
end
end
def to_indexed_json
{
:name => name,
:objects => objects.map { |o| {
:_type => 'object',
:_id => o.id,
:object_values => o.object_values.map {|ov| {
:_type => 'object_value',
:_id => ov.id,
:value => ov.value } },
} }
}.to_json
end
謝謝,GTE/GT的偉大工程。過濾條件嵌套的情況如何?如果我想找到value + id的object_values:filter:term,{「objects.object_values._id」=> params [:object]} if params [:object] .present? – graphmeter 2013-11-15 10:41:05