为与该模型特别相关的轮胎索引创建一个模块,并将其包含在模型中。由于会话仅与模型相关联,因此它的引用将在将用于弹性搜索的文档中。您必须像这样在模型文档中合并会话文档,因为我们将文档的 json 传递给轮胎索引模块中的 elasticsearch
def to_model_json
self.document.merge({"sessions" => sessions.as_json}).to_json
end
此方法通过轮胎将 json 中的文档传递给 elasticsearch,这将把它们的会话合并到文档中。
在轮胎索引模块中给出一个索引名称,您可以将其传递给轮胎搜索对象以运行过滤器查询
现在创建一个轮胎搜索对象
search_object = Tire::Search::Search::new(Model.index_name, other attributes)
您可以检查可以从https://github.com/karmi/tire传递的其他属性
然后像这样运行您的搜索方法,它将给出所需的结果
search_object.filter :range, 'sessions.starts_on' => {:gte => start_date,
:lte => ends_on}