ElasticSearch:允许无参数的查询

时间:2018-07-18 08:53:51

标签: ruby-on-rails elasticsearch

因此,在我的Rails模型中,我在ElasticSearch关注项中包含以下模块。

这是可行的,但是如何使每个布尔查询(必须,must_not,过滤器)接受nil或空参数?

说如果我传递一个空的query_string,它将得到所有文档。 然后,当我传递一个空的size参数时,它将返回所有大小。

  module ClassMethods
    def home_page_search(query_string, size, start_date, end_date)
      search({
        query: {
          bool: {
            must: [
              {
                multi_match: {
                  query: query_string,
                  fields: [:brand, :name, :notes, :size_notes]
                }
              }
            ],
            must_not: [
              range: {
                unavailable_dates: { gte: start_date, lte: end_date }
              }
            ],
            filter: [
              { term: { size: size } }
            ]
          }
        }
      })
    end
  end

1 个答案:

答案 0 :(得分:1)

我通过根据需要构造查询字符串来解决了类似的问题,因此,只有在有搜索词的情况下,我才包含一个子句。我发送给Elasticsearch的查询仅包含用户实际设置的条款。例如:

csrftoken

(假设查询的正确表示等)