问题描述
我正在Rails应用程序中使用这些常见的宝石来搜索AWS上托管的Elasticsearch:
gem 'elasticsearch-model','=7.1.0'
gem 'elasticsearch-rails','=7.1.0'
gem 'faraday_middleware-aws-sigv4','= 0.3.0'
在搜索诸如Topic.search(query)
之类的单个模型时,一切工作都很好,但是在使用多模型搜索功能Elasticsearch::Model.search(query,[Topic])
时,我得到了AWS认证错误。我打开了其他日志记录和跟踪,并看到发生了错误,因为由于某些原因,多模型搜索向URL添加了额外的斜杠/
字符,这导致AWS拒绝了错误代码为403的请求:
我有一个Topic
模型,该模型可以正确索引和搜索,这就是Rails控制台中发生的情况:
以下内容可以很好地工作:
Topic.search(query).results.to_a.map(&:to_hash)
> GET https://search-abc123.us-east-1.es.amazonaws.com:443/topics/_search [status:200,request:0.415s,query:0.039s]
Elasticsearch::Model.search(query,[Topic]).results.to_a.map(&:to_hash)
> GET https://search-abc123.us-east-1.es.amazonaws.com:443/topics//_search [status:403,request:0.400s,query:N/A]
{"message":"The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details."}
除了Elasticsearch::Model.search()
以外,还可以搜索多个模型吗?或者有什么想法吗?我的AWS凭证很好,因为我可以索引,导入文档和搜索单个模型。问题是当我尝试使用多重搜索功能时会在网址中添加多余的斜杠
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)