diff --git a/CHANGELOG.md b/CHANGELOG.md index 4539c43..2baedbd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 3.0.4 [unreleased] + +- Friendlier error message for bad mapping with partial matches + ## 3.0.3 - Added support for pagination with `body` option diff --git a/lib/searchkick/query.rb b/lib/searchkick/query.rb index 1112915..38d67b6 100644 --- a/lib/searchkick/query.rb +++ b/lib/searchkick/query.rb @@ -188,7 +188,7 @@ module Searchkick ) raise UnsupportedVersionError, "This version of Searchkick requires Elasticsearch 5 or greater" - elsif e.message.include?("[multi_match] analyzer [searchkick_search] not found") + elsif e.message =~ /analyzer \[searchkick_.+\] not found/ raise InvalidQueryError, "Bad mapping - run #{reindex_command}" else raise InvalidQueryError, e.message diff --git a/test/index_test.rb b/test/index_test.rb index 9937f54..f6de110 100644 --- a/test/index_test.rb +++ b/test/index_test.rb @@ -93,7 +93,8 @@ class IndexTest < Minitest::Test def test_bad_mapping Product.searchkick_index.delete store_names ["Product A"] - assert_raises(Searchkick::InvalidQueryError) { Product.search "test" } + error = assert_raises(Searchkick::InvalidQueryError) { Product.search "test" } + assert_equal "Bad mapping - run Product.reindex", error.message ensure Product.reindex end -- libgit2 0.21.0