I want to search nodes with role "mapreduce-datanode" & "mapreduce-namenode".
So i tried following :
hadoop_nodes = search(:node, "role:mapreduce-datanode OR role:mapreduce-namenode AND chef_environment:#{node.chef_environment} AND domain:#{node['domain']}")
Is this correct way to do ?
Thanks.
If you want "mapreduce-datanode" & "mapreduce-namenode"
, as you state, then why are you using an OR?
If you really want an AND, then you want:
hadoop_nodes = search(:node, "role:mapreduce-datanode AND role:mapreduce-namenode AND chef_environment:#{node.chef_environment} AND domain:#{node['domain']}")
If you want the union of the two sets (ie you really did mean OR) then try this:
hadoop_nodes = search(:node, "(role:mapreduce-datanode OR role:mapreduce-namenode) AND chef_environment:#{node.chef_environment} AND domain:#{node['domain']}")