![](/img/trans.png)
[英]Elasticsearch::Transport::Transport::Errors::BadRequest [400] while creating index
[英]Elasticsearch::Transport::Transport::Errors::BadRequest error heroku
我有一個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}):
我的Elasticsearch控制器
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
請幫忙!!
盆景支持在這里。 當前在Elasticsearch 5.x上配置了盆景集群,並且從Elasticsearch 5.0開始,已filtered
查詢已被刪除。 嘗試在5.x中使用filtered
查詢會導致您看到該錯誤消息。
從您共享的內容來看,我想說的最可能的問題是客戶端正在使用不建議使用的Query DSL版本。 那將暗示一個不兼容的gem版本。
您可以通過在命令行中運行它來檢查Elasticsearch gems的版本:
bundle show | grep elasticsearch
如果它們不是5.xx,請在您的Gemfile中更新它們:
gem "elasticsearch", "~> 5"
gem "elasticsearch-rails", "~> 5"
並運行bundle update elasticsearch elasticsearch-rails
。 將更改推送到Heroku,然后再次嘗試搜索。
如果仍然不能解決問題,請發送電子郵件至support@bonsai.io,我們將幫助您解決問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.