From b715e9e3c0e7cb96f8d66f90f4c919f8510cba14 Mon Sep 17 00:00:00 2001 From: Andrew Date: Wed, 28 Feb 2018 18:51:45 -0800 Subject: [PATCH] Removed support for ES2 [skip ci] --- .travis.yml | 7 ------- CHANGELOG.md | 5 +++++ README.md | 4 +--- lib/searchkick/model.rb | 15 ++++----------- test/boost_test.rb | 8 +------- test/geo_shape_test.rb | 1 - test/index_test.rb | 7 ++++--- test/order_test.rb | 8 +------- test/sql_test.rb | 31 ------------------------------- test/test_helper.rb | 10 +--------- 10 files changed, 17 insertions(+), 79 deletions(-) diff --git a/.travis.yml b/.travis.yml index 6f9e096..38d867a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,13 +24,6 @@ env: jdk: oraclejdk8 matrix: include: - - gemfile: Gemfile - env: ELASTICSEARCH_VERSION=2.0.0 - jdk: oraclejdk7 - - gemfile: Gemfile - env: ELASTICSEARCH_VERSION=2.4.6 - jdk: oraclejdk7 - - gemfile: Gemfile env: ELASTICSEARCH_VERSION=5.0.1 jdk: oraclejdk8 - gemfile: Gemfile diff --git a/CHANGELOG.md b/CHANGELOG.md index b97f243..8ba464c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +## 3.0.0 [unreleased] + +- Removed support for Elasticsearch 2 +- Removed `reindex_async` method. `reindex` now defaults to mode specified by model. Use `reindex(mode: :async)` to force async reindex. + ## 2.5.1 [unreleased] - Added `unscoped_reindex_job` option diff --git a/README.md b/README.md index 0190392..b172e77 100644 --- a/README.md +++ b/README.md @@ -535,7 +535,7 @@ class Image < ApplicationRecord after_commit :reindex_product def reindex_product - product.reindex # or reindex_async + product.reindex end end ``` @@ -1531,8 +1531,6 @@ Reindex one record ```ruby product = Product.find(1) product.reindex -# or to reindex in the background -product.reindex_async ``` Reindex multiple records diff --git a/lib/searchkick/model.rb b/lib/searchkick/model.rb index 9484f36..e1ba2db 100644 --- a/lib/searchkick/model.rb +++ b/lib/searchkick/model.rb @@ -79,12 +79,11 @@ module Searchkick end end - callback_name = callbacks == :async ? :reindex_async : :reindex if respond_to?(:after_commit) - after_commit callback_name, if: proc { self.class.search_callbacks? } + after_commit :reindex, if: -> { self.class.search_callbacks? } elsif respond_to?(:after_save) - after_save callback_name, if: proc { self.class.search_callbacks? } - after_destroy callback_name, if: proc { self.class.search_callbacks? } + after_save :reindex, if: -> { self.class.search_callbacks? } + after_destroy :reindex, if: -> { self.class.search_callbacks? } end def reindex(method_name = nil, refresh: false, async: false, mode: nil) @@ -96,8 +95,7 @@ module Searchkick :async elsif Searchkick.callbacks_value Searchkick.callbacks_value - elsif klass_options.key?(:callbacks) && klass_options[:callbacks] != :async - # TODO remove 2nd condition in next major version + elsif klass_options.key?(:callbacks) klass_options[:callbacks] end end @@ -130,11 +128,6 @@ module Searchkick end end unless method_defined?(:reindex) - # TODO remove this method in next major version - def reindex_async - reindex(async: true) - end unless method_defined?(:reindex_async) - def similar(options = {}) self.class.searchkick_index.similar_record(self, options) end unless method_defined?(:similar) diff --git a/test/boost_test.rb b/test/boost_test.rb index 779c806..7a860f0 100644 --- a/test/boost_test.rb +++ b/test/boost_test.rb @@ -122,13 +122,7 @@ class BoostTest < Minitest::Test {name: "Tomato B", orders_count: 10}, ] - if elasticsearch_below50? - assert_raises(ArgumentError) do - assert_order "tomato", ["Tomato A", "Tomato B"], boost_by: {orders_count: {missing: 100}} - end - else - assert_order "tomato", ["Tomato A", "Tomato B"], boost_by: {orders_count: {missing: 100}} - end + assert_order "tomato", ["Tomato A", "Tomato B"], boost_by: {orders_count: {missing: 100}} end def test_boost_by_boost_mode_multiply diff --git a/test/geo_shape_test.rb b/test/geo_shape_test.rb index 4e8a09c..6d2e92e 100644 --- a/test/geo_shape_test.rb +++ b/test/geo_shape_test.rb @@ -145,7 +145,6 @@ class GeoShapeTest < Minitest::Test end def test_contains - skip if elasticsearch_below22? assert_search "*", ["Region C"], { where: { territory: { diff --git a/test/index_test.rb b/test/index_test.rb index d53efc7..a771ad2 100644 --- a/test/index_test.rb +++ b/test/index_test.rb @@ -131,9 +131,10 @@ class IndexTest < Minitest::Test def test_filterable # skip for 5.0 since it throws # Cannot search on field [alt_description] since it is not indexed. - skip unless elasticsearch_below50? store [{name: "Product A", alt_description: "Hello"}] - assert_search "*", [], where: {alt_description: "Hello"} + assert_raises(Searchkick::InvalidQueryError) do + assert_search "*", [], where: {alt_description: "Hello"} + end end def test_filterable_non_string @@ -155,7 +156,7 @@ class IndexTest < Minitest::Test end def test_very_large_value - skip if nobrainer? || elasticsearch_below22? + skip if nobrainer? large_value = 10000.times.map { "hello" }.join(" ") store [{name: "Product A", text: large_value}], Region assert_search "product", ["Product A"], {}, Region diff --git a/test/order_test.rb b/test/order_test.rb index 13fd94c..0a083b0 100644 --- a/test/order_test.rb +++ b/test/order_test.rb @@ -29,14 +29,8 @@ class OrderTest < Minitest::Test assert_order "product", ["Product A", "Product B", "Product C"], order: {color: :asc, store_id: :desc} end - def test_order_ignore_unmapped - skip unless elasticsearch_below50? - assert_order "product", [], order: {not_mapped: {ignore_unmapped: true}}, conversions: false - end - def test_order_unmapped_type - skip if elasticsearch_below50? - assert_order "product", [], order: {not_mapped: {unmapped_type: "long"}}, conversions: false + assert_order "product", [], order: {not_mapped: {unmapped_type: "long"}} end def test_order_array diff --git a/test/sql_test.rb b/test/sql_test.rb index c312694..fe46e0a 100644 --- a/test/sql_test.rb +++ b/test/sql_test.rb @@ -125,36 +125,7 @@ class SqlTest < Minitest::Test assert_nil hit["_source"] end - def test_select_include - skip unless elasticsearch_below50? - store [{name: "Product A", user_ids: [1, 2]}] - result = Product.search("product", load: false, select: {include: [:name]}).first - assert_equal %w(id name), result.keys.reject { |k| k.start_with?("_") }.sort - assert_equal "Product A", result.name - assert_nil result.store_id - end - - def test_select_exclude - skip unless elasticsearch_below50? - store [{name: "Product A", user_ids: [1, 2], store_id: 1}] - result = Product.search("product", load: false, select: {exclude: [:name]}).first - assert_nil result.name - assert_equal [1, 2], result.user_ids - assert_equal 1, result.store_id - end - - def test_select_include_and_exclude - skip unless elasticsearch_below50? - # let's take this to the next level - store [{name: "Product A", user_ids: [1, 2], store_id: 1}] - result = Product.search("product", load: false, select: {include: [:store_id], exclude: [:name]}).first - assert_equal 1, result.store_id - assert_nil result.name - assert_nil result.user_ids - end - def test_select_includes - skip if elasticsearch_below50? store [{name: "Product A", user_ids: [1, 2]}] result = Product.search("product", load: false, select: {includes: [:name]}).first assert_equal %w(id name), result.keys.reject { |k| k.start_with?("_") }.sort @@ -163,7 +134,6 @@ class SqlTest < Minitest::Test end def test_select_excludes - skip if elasticsearch_below50? store [{name: "Product A", user_ids: [1, 2], store_id: 1}] result = Product.search("product", load: false, select: {excludes: [:name]}).first assert_nil result.name @@ -172,7 +142,6 @@ class SqlTest < Minitest::Test end def test_select_include_and_excludes - skip if elasticsearch_below50? # let's take this to the next level store [{name: "Product A", user_ids: [1, 2], store_id: 1}] result = Product.search("product", load: false, select: {includes: [:store_id], excludes: [:name]}).first diff --git a/test/test_helper.rb b/test/test_helper.rb index b22b63b..4e7bb5c 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -38,18 +38,10 @@ end ActiveSupport::LogSubscriber.logger = ActiveSupport::Logger.new(STDOUT) if ENV["NOTIFICATIONS"] -def elasticsearch_below50? - Searchkick.server_below?("5.0.0-alpha1") -end - def elasticsearch_below60? Searchkick.server_below?("6.0.0-alpha1") end -def elasticsearch_below22? - Searchkick.server_below?("2.2.0") -end - def nobrainer? defined?(NoBrainer) end @@ -454,7 +446,7 @@ class Store mappings: { store: { properties: { - name: elasticsearch_below50? ? {type: "string", analyzer: "keyword"} : {type: "keyword"} + name: {type: "keyword"} } } } -- libgit2 0.21.0