gpt4 book ai didi

ruby-on-rails-3.2 - 如何使用gem将多个查询参数传递给 Elasticsearch ?

转载 作者:行者123 更新时间:2023-12-03 00:28:47 25 4
gpt4 key购买 nike

我需要在查询中将带有特殊章程的字符串附加到rails中的elasticsearch中。我尝试使用.html_saferaw(),它不会破坏任何内容,但仍会以十六进制或其他形式传递宪章。

这些都将同一件事传递给elasticsearch

<%= @esearch.search q:params[:query] + '&pretty=true' do %>

<%= @esearch.search q:params[:query] + '&pretty=true'.html_safe do %>

<%= @esearch.search q:params[:query] + raw('&pretty=true') do %>

我得到这个:
q=asa%26pretty%3Dtrue

我希望得到这个:
q=asa&pretty=true

最佳答案

您没有遇到html转义问题。 rawhtml_safe仅在不希望直接打印到用户浏览器时输出转义时有用。例如,如果您遇到html转义问题,则参数将输出q=asa&amp;pretty=true,但事实并非如此。

您所看到的是CGI.escape的结果,该结果输出url安全值。

在我看来(根据您当前对search方法的使用),哈希选项已转换为查询参数。您是否尝试过:

@esearch.search q: params[:query], pretty: true

我不确定 search在做什么,但是直接在您的 View 中使用这似乎是一种奇怪的方法。当然,我可能会错,因为我不知道它到底在做什么。

更新:

在此处查看文档: https://github.com/elasticsearch/elasticsearch-ruby/blob/master/elasticsearch-api/lib/elasticsearch/api/actions/search.rb#L15

看起来有两种发送查询参数的方法。一种是您发送的 q: 'title:text'格式的 params[:query](但看起来您的查询只是'asa',所以我不确定您在此处使用的格式正确吗?),另一种是通过 body哈希:
@esearch.search body: {
query: { match: { title: 'test' } },
facets: { tags: { terms: { field: 'tags' } } }
}

您应该浏览该文档,包括指向 flex 搜索选项文档的链接,并弄清楚需要发送什么。我在文档中没有看到 pretty: true选项,因此不确定它的用途。但是有很多文档,但我并没有真正深入地研究它们,我会把它留给您。

关于ruby-on-rails-3.2 - 如何使用gem将多个查询参数传递给 Elasticsearch ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19548246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com