ruby-on-rails - ElasticSearch构建查询取决于条件

标签 ruby-on-rails ruby elasticsearch

我想知道是否有可能根据我的代码中的某些条件来构建查询。

self.search(query: {
                    bool: {
                      must: [
                        { term: { country_id: country_id }},
                        { term: { region_id: region_id }} => if region_id is not nil
]
                    }
                  }

在此示例中,我想添加以下行:
{ term: { region_id: region_id }}

仅当我的方法中不存在region_id时。

在SQL中,我可以使用多行和多条条件构建查询。
我可以对ES做同样的事情吗?

信息:在这里工作的 ruby

谢谢

最佳答案

您将要创建一个查询变量来构建查询,并有条件地添加所需的元素(术语)。试试看:

# Start with a base search definition
query = { 
  query: {
    bool: {
      must: [
        { term: { country_id: country_id }}
      ]
    }
  }
}

# Conditionally add search terms
if region_id is not nil
  query[:query][:bool][:must] << { term: { region_id: region_id }}
end

# Execute the search
self.search(query)

关于ruby-on-rails - ElasticSearch构建查询取决于条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37165976/

相关文章:

ruby - 如何在 MiniTest 中的所有测试中的每个测试用例之前运行代码?

search - 用于解决自动完成用例的多个单词的 elasticsearch 前缀查询

module - 无法下载Play框架2的依赖项Elasticsearch

ruby-on-rails - 为什么在引用类时会出现 "uninitialized constant"错误?

javascript - 编译速度 : Should I add gem or include js/css files in my rails project?

ruby-on-rails - 如何告诉 Gem 文件使用 gem 的特定本地副本

ruby - 如何在终端中创建交互式菜单?

css - 在 CSS 文件中访问 Ruby 中的语言环境

html - 使用 Ruby 删除某些 HTML 标签

elasticsearch - Elasticsearch:按字段查找重复项