diff --git a/lib/searchkick/query.rb b/lib/searchkick/query.rb index 36b0f31..7f8ac66 100644 --- a/lib/searchkick/query.rb +++ b/lib/searchkick/query.rb @@ -872,8 +872,12 @@ module Searchkick } } - if value[:missing].present? && !below50? - script_score[:field_value_factor].merge!({missing: value[:missing].to_f}) + if value[:missing].present? + if below50? + raise ArgumentError, "Option 'missing' for boost_by supported in Elasticsearch 5 or greater" + else + script_score[:field_value_factor].merge!({missing: value[:missing].to_f}) + end end { diff --git a/test/boost_test.rb b/test/boost_test.rb index 75e5e7c..de79720 100644 --- a/test/boost_test.rb +++ b/test/boost_test.rb @@ -117,8 +117,6 @@ class BoostTest < Minitest::Test end def test_boost_by_missing_field - skip if elasticsearch_below50? - store [ {name: "Tomato A"}, {name: "Tomato B", orders_count: 10}, @@ -129,7 +127,13 @@ class BoostTest < Minitest::Test assert_order "tomato", ["Tomato C", "Tomato B", "Tomato A"], boost_by: {orders_count: {factor: 5}, orders_value: {factor: 5}} end - assert_order "tomato", ["Tomato C", "Tomato B", "Tomato A"], boost_by: {orders_count: {factor: 5}, orders_value: {factor: 5, missing: 1}} + if elasticsearch_below50? + assert_raises(ArgumentError) do + assert_order "tomato", ["Tomato C", "Tomato B", "Tomato A"], boost_by: {orders_count: {factor: 5}, orders_value: {factor: 5, missing: 1}} + end + else + assert_order "tomato", ["Tomato C", "Tomato B", "Tomato A"], boost_by: {orders_count: {factor: 5}, orders_value: {factor: 5, missing: 1}} + end end def test_boost_by_boost_mode_multiply -- libgit2 0.21.0