Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails ElasticSearch根据条件生成查询_Ruby On Rails_Ruby_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Ruby On Rails,Ruby,elasticsearch" /> elasticsearch,Ruby On Rails,Ruby,elasticsearch" />

Ruby on rails ElasticSearch根据条件生成查询

Ruby on rails ElasticSearch根据条件生成查询,ruby-on-rails,ruby,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

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

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 }}
仅当区域_id在我的方法中不是nil/存在时

在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)
#从基本搜索定义开始
查询={
查询:{
布尔:{
必须:[
{术语:{country\u id:country\u id}
]
}
}
}
#有条件地添加搜索词
如果区域_id不是nil

我认为你不能像编程那样做,但需要在查询本身中这样做。哦,我误解了你的问题:-)。这只是在你的代码中…完美的答案!我不知道我可以使用语法:
query[:query][:bool][:must]
谢谢!