From f395435dc08330e161f9b995bf3fd96e5bf2ccf4 Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Thu, 11 Jul 2024 15:36:23 -0700 Subject: [PATCH] Replaced _script with _raw --- CHANGELOG.md | 2 +- README.md | 3 +-- lib/searchkick/query.rb | 4 ++-- test/where_test.rb | 8 ++++---- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f051409..76bf0ee2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ ## 5.4.0 (unreleased) -- Added experimental support for scripting to `where` option +- Added experimental support for `_raw` to `where` option - Added warning for `exists` with non-`true` values - Added warning for full reindex and `:queue` mode - Dropped support for Ruby < 3.1 diff --git a/README.md b/README.md index 80273d6e..a08f38d0 100644 --- a/README.md +++ b/README.md @@ -122,8 +122,7 @@ where: { store_id: {exists: true}, # exists _not: {store_id: 1}, # negate a condition _or: [{in_stock: true}, {backordered: true}], - _and: [{in_stock: true}, {backordered: true}], - _script: Searchkick.raw("doc['a'].value > doc['b'].value") # experimental [unreleased] + _and: [{in_stock: true}, {backordered: true}] } ``` diff --git a/lib/searchkick/query.rb b/lib/searchkick/query.rb index ffdce6d9..e4d98dde 100644 --- a/lib/searchkick/query.rb +++ b/lib/searchkick/query.rb @@ -909,12 +909,12 @@ def where_filters(where) filters << {bool: {must_not: where_filters(value)}} elsif field == :_and filters << {bool: {must: value.map { |or_statement| {bool: {filter: where_filters(or_statement)}} }}} - elsif field == :_script + elsif field == :_raw unless value.is_a?(Raw) raise TypeError, "expected Searchkick::Raw" end - filters << {script: {script: value.value}} + filters << value.value else # expand ranges if value.is_a?(Range) diff --git a/test/where_test.rb b/test/where_test.rb index 068688dd..320b067c 100644 --- a/test/where_test.rb +++ b/test/where_test.rb @@ -261,14 +261,14 @@ def test_script {name: "Product A", store_id: 1}, {name: "Product B", store_id: 10} ] - assert_search "product", ["Product A"], where: {_script: Searchkick.raw("doc['store_id'].value < 10")} - assert_search "product", ["Product A"], where: {_script: Searchkick.raw({source: "doc['store_id'].value < 10", lang: "expression"})} - assert_search "product", ["Product A"], where: {_script: Searchkick.raw({source: "doc['store_id'].value < params['value']", params: {value: 10}})} + assert_search "product", ["Product A"], where: {_raw: Searchkick.raw({script: {script: "doc['store_id'].value < 10"}})} + assert_search "product", ["Product A"], where: {_raw: Searchkick.raw({script: {script: {source: "doc['store_id'].value < 10", lang: "expression"}}})} + assert_search "product", ["Product A"], where: {_raw: Searchkick.raw({script: {script: {source: "doc['store_id'].value < params['value']", params: {value: 10}}}})} end def test_script_string error = assert_raises(TypeError) do - assert_search "product", ["Product A"], where: {_script: "doc['store_id'].value < 10"} + assert_search "product", ["Product A"], where: {_raw: {script: {script: "doc['store_id'].value < 10"}}} end assert_equal "expected Searchkick::Raw", error.message end