【发布时间】:2018-05-14 01:14:06
【问题描述】:
您好,我在使用 rails Elascticsearch 范围聚合时遇到了这个问题,这似乎是正确的,因为没有错误输出,但同样它也没有聚合。
这是我的控制器
def results
min_price = params[:min_price] if params[:min_price].present?
max_price = params[:max_price] if params[:max_price].present?
price_ranges = [{to: max_price}, {from: min_price, to: max_price}, {from: min_price}]
@results = Item.search(params[:q], aggs: {item_final_price: {ranges: price_ranges}}, page: params[:page], per_page: 10) if params[:q].present?
end
还有我的模特
class Item < ApplicationRecord
include Elasticsearch::Model
include Elasticsearch::Model::Callbacks
# Item.import
searchkick callbacks: :async, highlight: [:item_name]
def search_data
{
item_name: item_name,
item_details: item_details,
item_final_price: item_final_price,
item_av_rating: item_av_rating
}
end
end
我的看法
<%= form_tag results_path, method: :get, enforce_utf8: false, id: "q_filter" do %>
<section class="widget widget-categories">
<%= hidden_field_tag :q, params[:q] %>
<h3 class="widget-title">Price Range</h3>
<div class="form-group">
<label>Price Between</label>
<%= number_field_tag :min_price, params[:min_price], class: "form-control form-control-sm", placeholder: "Min Price" %>
</div>
<div class="form-group">
<label>And</label>
<%= number_field_tag :max_price, params[:max_price], class: "form-control form-control-sm", placeholder: "Max Price" %>
</div>
<%= button_tag(type: "submit", name: nil, class: "btn btn-outline-primary btn-sm btn-block") do %>
Filter Search
<% end %>
</section>
<% @results.each do |item| %>
<%= item.item_name %>
<% end %>
【问题讨论】:
-
您确定参数是否正确传递?只是因为您没有收到错误并不意味着搜索返回任何结果。
-
是的,它正确通过了这里是结果prnt.sc/jh6ak7
-
但是 curl 会返回任何结果吗?
-
是的,我与视图结果相同,但正如您所看到的,不是我想要查看 2 图片的数据prnt.sc/jhbf9wprnt.sc/jhbgfc
标签: ruby-on-rails ruby elasticsearch searchkick