Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.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 如何使用或搜索角色_Ruby On Rails_Ruby_Chef Recipe_Chef Infra - Fatal编程技术网

Ruby on rails 如何使用或搜索角色

Ruby on rails 如何使用或搜索角色,ruby-on-rails,ruby,chef-recipe,chef-infra,Ruby On Rails,Ruby,Chef Recipe,Chef Infra,我想搜索角色为“mapreduce datanode”和“mapreduce namenode”的节点 所以我试着如下: hadoop_nodes = search(:node, "role:mapreduce-datanode OR role:mapreduce-namenode AND chef_environment:#{node.chef_environment} AND domain:#{node['domain']}") 这是正确的方法吗 谢谢。如果您想要“mapreduce da

我想搜索角色为“mapreduce datanode”和“mapreduce namenode”的节点

所以我试着如下:

hadoop_nodes = search(:node, "role:mapreduce-datanode OR role:mapreduce-namenode AND chef_environment:#{node.chef_environment} AND domain:#{node['domain']}")
这是正确的方法吗

谢谢。

如果您想要
“mapreduce datanode”和“mapreduce namenode”
,那么为什么要使用OR

如果您真的需要AND,那么您需要:

hadoop_nodes = search(:node, "role:mapreduce-datanode AND role:mapreduce-namenode AND chef_environment:#{node.chef_environment} AND domain:#{node['domain']}")
如果你想要两个集合的并集(即你真正的意思是或),那么试试这个:

hadoop_nodes = search(:node, "(role:mapreduce-datanode OR role:mapreduce-namenode) AND chef_environment:#{node.chef_environment} AND domain:#{node['domain']}")
您应该使用()对OR进行分组,因为它的优先级通常较低,在这里您可以匹配
角色:mapreduce datanode
或其他条件。我将使用
(角色:mapreduce datanode或角色:mapreduce namenode)和…
(警告:未测试)