diff --git a/lib/liudesk_cmdb/model.rb b/lib/liudesk_cmdb/model.rb
index 6f6e41296d6667ab9f55edf877199657edafbc0c..b4e0c3d3db417a1781dba78c57d5c5d5d42da994 100644
--- a/lib/liudesk_cmdb/model.rb
+++ b/lib/liudesk_cmdb/model.rb
@@ -87,8 +87,16 @@ module LiudeskCMDB
         if query.is_a? Hash
           op = query.delete(:op) { :and }
           op = { or: ",", and: ";" }.fetch(op, ";")
+
           query = query.transform_keys { |k| fields.key?(k) ? fields.dig(k, :name) : k }
-          query = query.map { |k, v| "#{k}==#{v}" }.join(op)
+          query = query.map do |k, v|
+            if v.is_a? Array
+              v.map { |val| "#{k}==#{val}" }.join(op)
+            else
+              "#{k}==#{v}"
+            end
+          end
+          query = query.reject { |v| v.nil? || v.empty? }.join(op)
         end
 
         data = JSON.parse(client.get([api_url, "search"].join("/"), model_version, query: { query: query }))