From e0cf73d28a9683040f84b2717f9341dd5dcaa2d6 Mon Sep 17 00:00:00 2001 From: Andrew Kane Date: Sat, 10 May 2014 16:44:18 -0700 Subject: [PATCH] Added custom message for bad mapping for #199 --- lib/searchkick/query.rb | 6 +++++- test/index_test.rb | 8 ++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/searchkick/query.rb b/lib/searchkick/query.rb index 4f0d748..d77e676 100644 --- a/lib/searchkick/query.rb +++ b/lib/searchkick/query.rb @@ -338,7 +338,11 @@ module Searchkick raise UnsupportedVersionError, "This version of Searchkick requires Elasticsearch 0.90.4 or greater" elsif status_code == 400 - raise InvalidQueryError, e.message + if e.message.include?("[multi_match] analyzer [searchkick_search] not found") + raise InvalidQueryError, "Bad mapping - run #{searchkick_klass.name}.reindex" + else + raise InvalidQueryError, e.message + end else raise e end diff --git a/test/index_test.rb b/test/index_test.rb index 13d0737..3d5d737 100644 --- a/test/index_test.rb +++ b/test/index_test.rb @@ -41,6 +41,14 @@ class TestIndex < Minitest::Unit::TestCase assert_search "product", ["Product B"] end + def test_bad_mapping + Product.searchkick_index.delete + store_names ["Product A"] + assert_raises(Searchkick::InvalidQueryError){ Product.search "test" } + ensure + Product.reindex + end + def test_missing_index assert_raises(Searchkick::MissingIndexError){ Product.search "test", index_name: "not_found" } end -- libgit2 0.21.0