- Fixed context for index name for inherited models
- Fixed index name for inherited models
- Prefer
mode: :asyncoverasync: truefor full reindex - Fixed instance method overriding with concerns
- Searches now use lazy loading (similar to Active Record)
- Added
unscopeoption to better support working with default scopes - Added support for
:asyncand:queuemodes forreindexon relation - Added basic protection from unfiltered parameters to
whereoption - Added
modelsoption tosimilarmethod - Changed async full reindex to fetch ids instead of using ranges for numeric primary keys with Active Record
- Changed
searchkick_index_optionsto return symbol keys (instead of mix of strings and symbols) - Changed non-anchored regular expressions to match expected results (previously warned)
- Changed record reindex to return
trueto match model and relation reindex - Updated async reindex job to call
search_importfor nested associations - Fixed removing records when
should_index?isfalsewhenreindexcalled on relation - Fixed issue with
merge_mappingsfor fields that usesearchkickoptions - Raise error when
searchcalled on relations - Raise
ArgumentError(instead of warning) for invalid regular expression modifiers - Raise
ArgumentErrorinstead ofRuntimeErrorfor unknown operators - Removed mapping of
idto_idwithorderoption (not supported in Elasticsearch 8) - Removed
wordnetoption (no longer worked) - Removed dependency on
elasticsearchgem (can useelasticsearchoropensearch-ruby) - Dropped support for Elasticsearch 6
- Dropped support for Ruby < 2.6 and Active Record < 5.2
- Dropped support for NoBrainer and Cequel
- Dropped support for
faraday_middleware-aws-signers-v4(usefaraday_middleware-aws-sigv4instead)
- Added support for reloadable synonyms for OpenSearch
- Added experimental support for
opensearch-rubygem - Removed
elasticsearch-xpackdependency for reloadable synonyms
- Added support for beginless ranges to
whereoption - Fixed
likeandilikewith+character - Fixed warning about accessing system indices when no model or index specified
- Added
ilikeoperator for Elasticsearch 7.10+ - Fixed missing methods with
multi_search
- Added support for case-insensitive regular expressions with Elasticsearch 7.10+
- Added support for
OPENSEARCH_URL - Fixed error with
debugoption
- Fixed error with reindex queue
- Fixed error with
model_namemethod with multiple models - Fixed error with
debugoption with elasticsearch-ruby 7.14
- Improved performance of reindex queue
- Added experimental support for OpenSearch
- Added support for synonyms in Japanese
- Fixed
too_long_frame_exceptionwithscrollmethod - Fixed multi-word emoji tokenization
- Added support for Hunspell
- Fixed warning about accessing system indices
- Added
missing_recordsmethod to results - Fixed issue with
likeand special characters
- Added
stem_exclusionandstemmer_overrideoptions - Added
with_scoremethod to search results - Improved error message for
reload_synonymswith non-OSS version of Elasticsearch - Improved output for reindex rake task
- Added support for reloadable, multi-word, search time synonyms
- Fixed another deprecation warning in Ruby 2.7
- Fixed error with
excludein certain cases for Elasticsearch 7.7
- Fixed
likequeries with"character - Better error when invalid parameters passed to
where
- Fixed deprecation warnings with Elasticsearch
- Fixed deprecation warnings in Ruby 2.7
- Added safety check for multiple
Model.reindex - Added
deep_pagingoption - Added request parameters to search notifications and curl representation
- Removed curl from search notifications to prevent confusion
- Added
chinese2andkorean2languages - Improved performance of async full reindex
- Fixed
searchkick:reindex:allrake task for Rails 6
- Added
likeoperator - Added
existsoperator - Added warnings for certain regular expressions
- Fixed anchored regular expressions
- Added block form of
scroll - Added
clear_scrollmethod - Fixed custom mappings
- Added support for scroll API
- Made type optional for custom mapping for Elasticsearch 6
- Fixed error when suggestions empty
- Fixed
modelsoption with inheritance
- Added support for Elasticsearch 7
- Added
modelsoption
Breaking changes
- Removed support for Elasticsearch 5
- Removed support for multi-word synonyms (they no longer work with shingles)
- Removed support for Active Record < 5
- Added support for endless ranges
- Added support for routing to
similarmethod - Added
prefixtowhere - Fixed error with elasticsearch-ruby 6.3
- Fixed error with some language stemmers and Elasticsearch 6.5
- Fixed issue with misspellings below and body block
- Improved performance of indices boost
- Fixed deletes with routing and
asynccallbacks - Fixed deletes with routing and
queuecallbacks - Fixed deprecation warnings
- Fixed field misspellings for older partial match format
- Added per-field misspellings
- Added
case_sensitiveoption - Added
stemoption - Added
total_entriesoption - Fixed
excludeoption with match all - Fixed
with_highlightsmethod
- Added
:inlineas alias fortrueforcallbacksandmodeoptions - Friendlier error message for bad mapping with partial matches
- Warn when records in search index do not exist in database
- Easier merging for
merge_mapping - Fixed
with_hitandwith_highlightswhen records in search index do not exist in database - Fixed error with highlights and match all
- Added support for pagination with
bodyoption - Added
boost_by_recencyoption - Fixed "Model Search Data" output for
debugoption - Fixed
reindex_statuserror - Fixed error with optional operators in Ruby regexp
- Fixed deprecation warnings for Elasticsearch 6.2+
- Added support for Korean and Vietnamese
- Fixed
Unsupported argument type: Symbolfor async partial reindex - Fixed infinite recursion with multi search and misspellings below
- Do not raise an error when
idis indexed
- Added
scopeoption for partial reindex - Added support for Japanese, Polish, and Ukrainian
- Added support for Chinese
- No longer requires fields to query for Elasticsearch 6
- Results can be marshaled by default (unless using
highlightoption)
Breaking changes
- Removed support for Elasticsearch 2
- Removed support for Active Record < 4.2 and Mongoid < 5
- Types are no longer used
- The
_allfield is disabled by default in Elasticsearch 5 - Conversions are not stemmed by default
- An
ArgumentErroris raised instead of a warning when options are incompatible with thebodyoption - Removed
logoption fromboost_by - Removed
Model.enable_search_callbacks,Model.disable_search_callbacks, andModel.search_callbacks? - Removed
reindex_asyncmethod, asreindexnow defaults to callbacks mode specified on the model - Removed
asyncoption fromrecord.reindex - Removed
search_hitmethod - usewith_hitinstead - Removed
each_with_hit- usewith_hit.eachinstead - Removed
with_details- usewith_highlightsinstead - Bumped default
limitto 10,000
- Try requests 3 times before raising error
- Better exception when trying to access results for failed multi-search query
- More efficient aggregations with
whereclauses - Added support for
faraday_middleware-aws-sigv4 - Added
credentialsoption toaws_credentials - Added
modifieroption toboost_by - Added
scope_resultsoption - Added
factoroption toboost_by_distance
- Fixed
similarfor Elasticsearch 6 - Added
inheritanceoption - Added
_typeoption - Fixed
Must specify fields to searcherror when searching*
- Added
_allanddefault_fieldsoptions - Added global
index_prefixoption - Added
waitoption to async reindex - Added
model_includesoption - Added
missingoption forboost_by - Raise error for
reindex_statuswhen Redis not configured - Warn when incompatible options used with
bodyoption - Fixed bug where
routingandtypeoptions were silently ignored withbodyoption - Fixed
reindex(async: true)for non-numeric primary keys in Postgres
- Added support for
reindex(async: true)for non-numeric primary keys - Added
conversions_termoption - Added support for passing fields to
suggestoption - Fixed
page_view_entriesfor Kaminari
- Fixed analyzer on dynamically mapped fields
- Fixed error with
similarmethod and_allfield - Throw error when fields are needed
- Added
queue_nameoption - No longer require synonyms to be lowercase
- Added
avg,cardinality,max,min, andsumaggregations - Added
load: {dumpable: true}option - Added
index_suffixoption - Accept string for
excludeoption
- Fixed bug with text values longer than 256 characters and
_allfield - see #850 - Fixed issue with
_allfield insearchable - Fixed
excludeoption withword_start
- Fixed duplicate notifications
- Added support for
connection_pool - Added
excludeoption
- Background reindexing and queues are officially supported
- Log updates and deletes
- Added support for queuing updates [experimental]
- Added
refresh_intervaloption toreindex - Prefer
search_indexoversearchkick_index
- Added
asyncoption toreindex[experimental] - Added
misspellings?method to results
- Added
retainoption toreindex - Added support for attributes in highlight tags
- Fixed potentially silent errors in reindex job
- Improved syntax for
boost_by_distance
- Added
search_hitandsearch_highlightsmethods to models - Improved reindex performance
- Added support for
reindexon associations
Breaking changes
- Removed support for Elasticsearch 1 as it reaches end of life
- Removed facets, legacy options, and legacy methods
- Invalid options now throw an
ArgumentError - The
queryandjsonoptions have been removed in favor ofbody - The
includeoption has been removed in favor ofincludes - The
personalizeoption has been removed in favor ofboost_where - The
partialoption has been removed in favor ofoperator - Renamed
select_v2toselect(legacyselectno longer available) - The
_allfield is disabled ifsearchableoption is used (for performance) - The
partial_reindex(:method_name)method has been replaced withreindex(:method_name) - The
unsearchableandonly_analyzedoptions have been removed in favor ofsearchableandfilterable load: falseno longer returns an array in Elasticsearch 2
- Added
client_options - Added
refreshoption toreindexmethod - Improved syntax for partial reindex
- Added support for geo shape indexing and queries
- Added
_and,_or,_nottowhereoption
- Added support for directional synonyms
- Easier AWS setup
- Fixed
total_docsmethod for ES 5+ - Fixed exception on update errors
- Added
partial_reindexmethod - Added
debugoption tosearchmethod - Added
profileoption
- Official support for Elasticsearch 5
- Boost exact matches for partial matching
- Added
searchkick_debugmethod - Added
geo_polygonfilter
- Fixed
Job adapter not founderror
- Added support for Elasticsearch 5.0 beta
- Added
request_paramsoption - Added
filterableoption
- Added
resumeoption to reindex - Added search timeout to payload
- Fix for namespaced models (broken in 1.3.2)
- Added
body_optionsoption - Added
date_histogramaggregation - Added
indices_boostoption - Added support for multiple conversions
- Fixed error with Ruby 2.0
- Fixed error with indexing large fields
- Added support for Elasticsearch 5.0 alpha
- Added support for phrase matches
- Added support for procs for
index_prefixoption
- Added
multi_searchmethod - Added support for routing for Elasticsearch 2
- Added support for
search_document_idandsearch_document_typein models - Fixed error with instrumentation for searching multiple models
- Fixed instrumentation for bulk updates
- Fixed deprecation warnings with
alias_method_chain - Added
analyzed_onlyoption for large text fields - Added
encoderoption to highlight - Fixed issue in
similarmethod withper_pageoption - Added basic support for multiple models
- Added bulk updates with
callbacksmethod - Added
bulk_deletemethod - Added
search_timeoutoption - Fixed bug with new location format for
boost_by_distance
- Added support for
{lat: lat, lon: lon}as preferred format for locations
- Added
belowoption to misspellings to improve performance - Fixed synonyms for
word_*partial matches - Added
searchableoption - Added
similarityoption - Added
matchoption - Added
wordoption - Added highlighted fields to
load: false
- Added support for Elasticsearch 2.1
- Throw
Searchkick::ImportErrorfor errors when importing records - Errors now inherit from
Searchkick::Error - Added
orderoption to aggregations - Added
mappingmethod
- Added aggregations method to get raw response
- Use
execute: falsefor lazy loading - Return nil when no aggs
- Added emoji search
- Added support for Elasticsearch 2.0
- Added support for aggregations
- Added ability to use misspellings for partial matches
- Added
fragment_sizeoption for highlight - Added
tookmethod to results
Breaking changes
- Raise
Searchkick::DangerousOperationerror when calling reindex with scope - Enabled misspellings by default for partial matches
- Enabled transpositions by default for misspellings
andnow matches&- Added
transpositionsoption to misspellings - Added
boost_modeandlogoptions toboost_by - Added
prefix_lengthoption tomisspellings - Added ability to set env
- Much better performance for where queries if no facets
- Added basic support for regex
- Added support for routing
- Made
Searchkick.disable_callbacksthread-safe
- Fixed Mongoid import
- Added support for NoBrainer
- Added
stem_conversions: falseoption - Added support for multiple
boost_wherevalues on the same field - Added support for array of values for
boost_where - Fixed suggestions with partial match boost
- Fixed redefining existing instance methods in models
- Added support for Elasticsearch 1.4
- Added
unsearchableoption - Added
select: trueoption - Added
bodyoption
- Added
boost_by_distance - More flexible highlight options
- Better
envlogic
- Added support for Active Job
- Added
timeoutsetting - Fixed import with no records
- Added
asynctocallbacksoption - Added
wordnetoption - Added
edit_distanceoption to eventually replacedistanceoption - Catch misspelling of
misspellingsoption - Improved logging
- Added
search_method_nameoption - Fixed
orderfor array of hashes - Added support for Mongoid 2
- Added support for Elasticsearch 1.2
- Added
tokensmethod - Added
jsonoption - Added exact matches
- Added
prev_pagefor Kaminari pagination - Added
importoption to reindex
- Added
boost_byandboost_whereoptions - Added ability to boost fields -
name^10 - Added
selectoption forload: false
- Added support for automatic failover
- Fixed
operatoroption (and default) for partial matches
- Added
statsoption to facets - Added
paddingoption
- Do not throw errors when index becomes out of sync with database
- Added custom exception types
- Fixed
offsetandoffset_value
- Fixed reindex with inheritance
- Fixed multi-index searches
- Fixed suggestions for partial matches
- Added
offsetandlengthfor improved pagination
- Added smart facets
- Added more fields to
load: falseresult - Fixed logging for multi-index searches
- Added
first_page?andlast_page?for improved Kaminari support
- Fixed huge issue w/ zero-downtime reindexing on 0.90
- Added support for Elasticsearch 1.1
- Dropped support for Elasticsearch below 0.90.4 (unfortunate side effect of above)
- Removed patron since no support for Windows
- Added error if
searchkickis called multiple times
- Added logging
- Fixed index_name option
- Added ability to use proc as the index name
- Fixed huge issue w/ zero-downtime reindexing on 0.90 and elasticsearch-ruby 1.0
- Restore load: false behavior
- Restore total_entries method
- Moved to elasticsearch-ruby
- Added support for modifying the query and viewing the response
- Added support for page_entries_info method
- Fixed bug w/ word_* queries
- Use after_commit hook for Active Record to prevent data inconsistencies
- Replaced stop words with common terms query
- Added language option
- Fixed bug with empty array in where clause
- Fixed bug with MongoDB integer _id
- Fixed reindex bug when callbacks disabled
- Better control over partial matches
- Added merge_mappings option
- Added batch_size option
- Fixed bug with nil where clauses
- Added
should_index?method to control which records are indexed - Added ability to temporarily disable callbacks
- Added custom mappings
- Fixed issue w/ inheritance mapping
- Added support for Mongoid 4
- Added support for multiple locations
- Added facet ranges
- Added all operator
- Added highlighting
- Added :distance option to misspellings
- Fixed issue w/ BigDecimal serialization
- Better error messages
- Added where: {field: nil} queries
- Added support for single table inheritance
- Removed Tire::Model::Search
- Added index_prefix option
- Fixed ES issue with incorrect facet counts
- Added option to turn off special characters
- Fixed reversed coordinates
- Added bounded by a box queries
- Expanded
orqueries
- Added option to disable callbacks
- Fixed bug with facets with Elasticsearch 0.90.5
- Added limit to facet
- Improved similar items
- Added option to disable misspellings
- Added geospartial searches
- Create alias before importing document if no alias exists
- Fixed exception when :per_page option is a string
- Check
RAILS_ENVifRACK_ENVis not set
- Use
to_hashinstead ofas_jsonfor defaultsearch_datamethod - Works for Mongoid 1.3
- Use one shard in test environment for consistent scores
- Setup Travis
- Clean old indices before reindex
- Search for
*returns all results - Fixed pagination
- Added
similarmethod
- Clean old indices after reindex
- More expansions for fuzzy queries
- Added Rails logger
- Only fetch ids when
load: true
- Added autocomplete
- Added “Did you mean” suggestions
- Added personalized searches
- Bug fix
- Changed edit distance to one for misspellings
- Raise errors when indexing fails
- Fixed pagination
- Fixed :include option
- Launch