From c55f5fbd5ef186c76beffc987064e4e4b7e578b6 Mon Sep 17 00:00:00 2001 From: Andrew Date: Sun, 4 Mar 2018 14:36:58 -0800 Subject: [PATCH] More flexibility with _not [skip ci] --- lib/searchkick/query.rb | 2 +- test/where_test.rb | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/searchkick/query.rb b/lib/searchkick/query.rb index 3600c56..06a2c2b 100644 --- a/lib/searchkick/query.rb +++ b/lib/searchkick/query.rb @@ -852,7 +852,7 @@ module Searchkick } when :regexp # support for regexp queries without using a regexp ruby object filters << {regexp: {field => {value: op_value}}} - when :not # not equal + when :not, :_not # not equal filters << {bool: {must_not: term_filters(field, op_value)}} when :all op_value.each do |val| diff --git a/test/where_test.rb b/test/where_test.rb index 1e69b55..0f195c0 100644 --- a/test/where_test.rb +++ b/test/where_test.rb @@ -31,7 +31,9 @@ class WhereTest < Minitest::Test assert_search "product", ["Product A"], where: {store_id: 1...2} assert_search "product", ["Product A", "Product B"], where: {store_id: [1, 2]} assert_search "product", ["Product B", "Product C", "Product D"], where: {store_id: {not: 1}} + assert_search "product", ["Product B", "Product C", "Product D"], where: {store_id: {_not: 1}} assert_search "product", ["Product C", "Product D"], where: {store_id: {not: [1, 2]}} + assert_search "product", ["Product C", "Product D"], where: {store_id: {_not: [1, 2]}} assert_search "product", ["Product A"], where: {user_ids: {lte: 2, gte: 2}} # or @@ -56,12 +58,15 @@ class WhereTest < Minitest::Test # any / nested terms assert_search "product", ["Product B", "Product C"], where: {user_ids: {not: [2], in: [1, 3]}} + assert_search "product", ["Product B", "Product C"], where: {user_ids: {_not: [2], in: [1, 3]}} # not / exists assert_search "product", ["Product D"], where: {user_ids: nil} assert_search "product", ["Product A", "Product B", "Product C"], where: {user_ids: {not: nil}} + assert_search "product", ["Product A", "Product B", "Product C"], where: {user_ids: {_not: nil}} assert_search "product", ["Product A", "Product C", "Product D"], where: {user_ids: [3, nil]} assert_search "product", ["Product B"], where: {user_ids: {not: [3, nil]}} + assert_search "product", ["Product B"], where: {user_ids: {_not: [3, nil]}} end def test_regexp -- libgit2 0.21.0