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]
谢谢!