ruby-on-rails - 对属性的Tire/Elasticsearch过滤

标签 ruby-on-rails elasticsearch

因此,当客户登录到应用程序时,他们只能在自己的公司内进行搜索,因此我们正在尝试过滤客户名称。尽管日志输出似乎正确,但是没有返回搜索结果。

#report.rb
def self.search_for_client(params, client)
 tire.search(load: true, page: params[:page], per_page: 20) do
  query  { string params[:q] } if params[:q].present?
  filter :term, :client => client
 end
end

#reports_controller.rb
def full_search
 @query = params[:q]
 if current_user.client.nil?
  @results = Report.search params
 else
  @results = Report.search_for_client params, current_user.client.title
 end
end

#log output
curl -X GET 'http://localhost:9200/reports/report/_search?load=true&size=20&pretty' -d '{"query":{"query_string":{"query":"thio"}},"filter":{"term":{"client":"ApplusRTD Norway"}},"size":20}'

最佳答案

实际上,主要问题是索引编制后我没有重启 Elasticsearch 服务器。我也调整了search_for_client方法。

#report.rb
def self.search_for_client(params, client)
tire.search(load: true, page: params[:page], per_page: 20) do
  query do
    boolean do
      must { string params[:q], default_operator: "AND" } if params[:q].present?
      must { string 'status:active' }
    end
  end
  filter :term, :client => [client]
end

结束
#output
curl -X GET 'http://localhost:9200/reports/report/_search?size=20&pretty' -d '{
  "query": {
    "bool": {
      "must": [
        {
          "query_string": {
            "query": "UT-12-541"
          }
        }
      ]
    }
  },
  "filter": {
    "term": {
      "client": [
        "Fabricom GDF Suez"
      ]
    }
  },
  "size": 20
}'

关于ruby-on-rails - 对属性的Tire/Elasticsearch过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23264354/

相关文章:

ruby-on-rails - Book.all 类和一系列书籍之间的区别

elasticsearch - Elasticsearch path.repo阻止服务启动

java - 添加 `stdout` 后,LogStash JDBC 插件不会执行

elasticsearch - 如何加载默认的Kibana仪表板?

ruby-on-rails - gem 使用 : cocoon + selectize-rails

mysql - 如何在文本框中限制 '♥♣'个字符

ruby-on-rails - 在 Controller 中扩展一个 Action

ruby-on-rails - Rails的错误:`method_missing':未定义的方法`active_record'

unix - 从 shell 脚本调用 Elasticsearch 以索引 pdf 文档

java - 在 Java REST 客户端 [6.5] API 上使用 ES 6.5 中的映射创建索引