ruby-on-rails - ElasticSearch + Rails多个 `must`无法正常工作

标签 ruby-on-rails ruby elasticsearch elasticsearch-model

根据文档,我正在使用以下语法:

self.search(
  query: {
    bool: {
      must: { match: { type: 'user' } },
      must: { match: { status: status } },
      must: { range: { created_at: { from: date_from, to: date_to } } }
    }
  },
  size: 1000
)

我相信它应该在寻找所有3个条件,但是查询会忽略所有must,但最后一个:
<Elasticsearch::Model::Searching::SearchRequest:0x000000039b2c08 @definition= {:index=>"uusers", :type=>"user", :body=>{:query=>{:bool=>{:must=>{:range=>{:created_at=>{:from=>Mon, 25 Aug 2014, :to=>Thu, 18 May 2017}}}}}, :size=>1000}}
我究竟做错了什么?

最佳答案

当有多个语句时,必须将其添加到数组中,如下所示:

self.search(
  query: {
    bool: {
      must: [
        { match: { type: 'user' } },
        { match: { status: status } },
        { range: { created_at: { from: date_from, to: date_to } } }
      ]
    }
  },
  size: 1000
)

关于ruby-on-rails - ElasticSearch + Rails多个 `must`无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44052659/

相关文章:

javascript - Ajax、Javascript 变量和服务器端变量 - Rails

ruby-on-rails - Mongoid 5.1 中的查询日期范围

RubyMonk 高级字符串操作

ruby-on-rails - 我如何在 Ruby 中找到指数的值?

ruby - 从 int 生成伪随机数

elasticsearch - 如何集成Elasticsearch进行实时可视化?

ruby-on-rails - Rails - 是否使用多态来提高性能

ruby-on-rails - rails 命名空间服务对象

elasticsearch - 运行多个Elasticsearch实例

elasticsearch - 是否可以在 Elasticsearch 中获取 copy_to 字段的内容?