我有一个rails应用程序,它的搜索系统依赖于elasticsearch,我用盆景插件把它推到heroku上,但是每当我尝试在我的应用程序上搜索什么东西时,它都会给我日志中的错误。
2017-07-16T04:04:44.083489+00:00 app[web.1]: Completed 500 Internal Server Error in 18ms (ActiveRecord: 1.9ms)
2017-07-16T04:04:44.084229+00:00 app[web.1]: app/controllers/search_controller.rb:7:in `show'
2017-07-16T04:04:44.084222+00:00 app[web.1]: Elasticsearch::Transport::Transport::Errors::BadRequest ([400] {"error":{"root_cause":[{"type":"parsing_exception","reason":"no [query] registered for [filtered]","line":1,"col":22}],"type":"parsing_exception","reason":"no [query] registered for [filtered]","line":1,"col":22},"status":400}):我的弹性搜索控制器
class SearchController < ApplicationController
before_action :beautify_url
layout "simple"
def show
@post_records = Post.search(query_term).paginate(page: params[:page]).records
@posts = @post_records.to_a.select { |post| post.published? }
@users = User.search(query_term).records.to_a
@tags = Tag.search(query_term).records
end
def users
@users = User.search(query_term).records.to_a
end
private
def beautify_url
if params[:search].present?
case params[:action]
when "show"
redirect_to search_url(q: params[:search][:q])
when "users"
redirect_to search_users_url(q: params[:search][:q])
end
end
end
def query_term
params[:q] || ''
end
end救命啊!!
发布于 2017-07-16 18:18:30
盆景支持在这里。目前正在ElasticSearch5.x上提供盆景群集,而在ElasticSearch5.0中,filtered查询已经被删除。试图在5.x中使用filtered查询会导致所看到的错误消息。
从您所分享的信息来看,我认为最有可能的问题是客户端使用的是查询DSL的不推荐版本。这意味着一个不兼容的创业板版本。
通过从命令行运行此命令行,您可以检查Elasticsearch宝石的版本:
bundle show | grep elasticsearch
如果它们不是5.x.x,请在Gemfile中更新它们:
gem "elasticsearch", "~> 5"
gem "elasticsearch-rails", "~> 5"运行bundle update elasticsearch elasticsearch-rails。将更改推到Heroku,然后再试一次搜索。
如果这没什么用,给support@bonsai.io发一封电子邮件,我们会帮你解决的。
https://stackoverflow.com/questions/45125207
复制相似问题