- Added
knn
option - Added
rrf
method - Added experimental support for scripting to
where
option - Added warning for
exists
with non-true
values - Added warning for full reindex and
:queue
mode - Fixed
per_page
method when paginating beyondmax_result_window
- Dropped support for Ruby < 3.1
- Fixed error with misspellings below and failed queries
- Fixed error with
cutoff_frequency
- Dropped support for Ruby < 3 and Active Record < 6.1
- Dropped support for Mongoid < 7
- Fixed error with non-string routing and
:async
mode
- Fixed error with missing records and multiple models
- Fixed
total_docs
method - Fixed deprecation warning with Active Support 7.1
- Added support for
redis-client
gem
- Added model name to warning about missing records
- Fixed unnecessary data loading when reindexing relations with
:async
and:queue
modes
- Fixed error with missing point in time
- Added support for strings for
offset
andper_page
- Added support for fractional search timeout
- Fixed search timeout with
elasticsearch
8+ andopensearch-ruby
gems - Fixed search timeout not applying to
multi_search
- Added
model
method toSearchkick::Relation
- Fixed deprecation warning with
redis
gem - Fixed
respond_to?
method on relation loading relation - Fixed
Relation loaded
error for non-mutating methods on relation
- Added
max_result_window
option - Improved error message for unsupported versions of Elasticsearch
- Fixed context for index name for inherited models
- Fixed index name for inherited models
- Prefer
mode: :async
overasync: true
for full reindex - Fixed instance method overriding with concerns
- Searches now use lazy loading (similar to Active Record)
- Added
unscope
option to better support working with default scopes - Added support for
:async
and:queue
modes forreindex
on relation - Added basic protection from unfiltered parameters to
where
option - Added
models
option tosimilar
method - Changed async full reindex to fetch ids instead of using ranges for numeric primary keys with Active Record
- Changed
searchkick_index_options
to 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
true
to match model and relation reindex - Updated async reindex job to call
search_import
for nested associations - Fixed removing records when
should_index?
isfalse
whenreindex
called on relation - Fixed issue with
merge_mappings
for fields that usesearchkick
options - Raise error when
search
called on relations - Raise
ArgumentError
(instead of warning) for invalid regular expression modifiers - Raise
ArgumentError
instead ofRuntimeError
for unknown operators - Removed mapping of
id
to_id
withorder
option (not supported in Elasticsearch 8) - Removed
wordnet
option (no longer worked) - Removed dependency on
elasticsearch
gem (can useelasticsearch
oropensearch-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-sigv4
instead)
- Added support for reloadable synonyms for OpenSearch
- Added experimental support for
opensearch-ruby
gem - Removed
elasticsearch-xpack
dependency for reloadable synonyms
- Added support for beginless ranges to
where
option - Fixed
like
andilike
with+
character - Fixed warning about accessing system indices when no model or index specified
- Added
ilike
operator 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
debug
option
- Fixed error with reindex queue
- Fixed error with
model_name
method with multiple models - Fixed error with
debug
option 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_exception
withscroll
method - Fixed multi-word emoji tokenization
- Added support for Hunspell
- Fixed warning about accessing system indices
- Added
missing_records
method to results - Fixed issue with
like
and special characters
- Added
stem_exclusion
andstemmer_override
options - Added
with_score
method to search results - Improved error message for
reload_synonyms
with 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
exclude
in certain cases for Elasticsearch 7.7
- Fixed
like
queries 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_paging
option - Added request parameters to search notifications and curl representation
- Removed curl from search notifications to prevent confusion
- Added
chinese2
andkorean2
languages - Improved performance of async full reindex
- Fixed
searchkick:reindex:all
rake task for Rails 6
- Added
like
operator - Added
exists
operator - Added warnings for certain regular expressions
- Fixed anchored regular expressions
- Added block form of
scroll
- Added
clear_scroll
method - Fixed custom mappings
- Added support for scroll API
- Made type optional for custom mapping for Elasticsearch 6
- Fixed error when suggestions empty
- Fixed
models
option with inheritance
- Added support for Elasticsearch 7
- Added
models
option
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
similar
method - Added
prefix
towhere
- 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
async
callbacks - Fixed deletes with routing and
queue
callbacks - Fixed deprecation warnings
- Fixed field misspellings for older partial match format
- Added per-field misspellings
- Added
case_sensitive
option - Added
stem
option - Added
total_entries
option - Fixed
exclude
option with match all - Fixed
with_highlights
method
- Added
:inline
as alias fortrue
forcallbacks
andmode
options - 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_hit
andwith_highlights
when records in search index do not exist in database - Fixed error with highlights and match all
- Added support for pagination with
body
option - Added
boost_by_recency
option - Fixed "Model Search Data" output for
debug
option - Fixed
reindex_status
error - 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: Symbol
for async partial reindex - Fixed infinite recursion with multi search and misspellings below
- Do not raise an error when
id
is indexed
- Added
scope
option 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
highlight
option)
Breaking changes
- Removed support for Elasticsearch 2
- Removed support for Active Record < 4.2 and Mongoid < 5
- Types are no longer used
- The
_all
field is disabled by default in Elasticsearch 5 - Conversions are not stemmed by default
- An
ArgumentError
is raised instead of a warning when options are incompatible with thebody
option - Removed
log
option fromboost_by
- Removed
Model.enable_search_callbacks
,Model.disable_search_callbacks
, andModel.search_callbacks?
- Removed
reindex_async
method, asreindex
now defaults to callbacks mode specified on the model - Removed
async
option fromrecord.reindex
- Removed
search_hit
method - usewith_hit
instead - Removed
each_with_hit
- usewith_hit.each
instead - Removed
with_details
- usewith_highlights
instead - Bumped default
limit
to 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
where
clauses - Added support for
faraday_middleware-aws-sigv4
- Added
credentials
option toaws_credentials
- Added
modifier
option toboost_by
- Added
scope_results
option - Added
factor
option toboost_by_distance
- Fixed
similar
for Elasticsearch 6 - Added
inheritance
option - Added
_type
option - Fixed
Must specify fields to search
error when searching*
- Added
_all
anddefault_fields
options - Added global
index_prefix
option - Added
wait
option to async reindex - Added
model_includes
option - Added
missing
option forboost_by
- Raise error for
reindex_status
when Redis not configured - Warn when incompatible options used with
body
option - Fixed bug where
routing
andtype
options were silently ignored withbody
option - Fixed
reindex(async: true)
for non-numeric primary keys in Postgres
- Added support for
reindex(async: true)
for non-numeric primary keys - Added
conversions_term
option - Added support for passing fields to
suggest
option - Fixed
page_view_entries
for Kaminari
- Fixed analyzer on dynamically mapped fields
- Fixed error with
similar
method and_all
field - Throw error when fields are needed
- Added
queue_name
option - No longer require synonyms to be lowercase
- Added
avg
,cardinality
,max
,min
, andsum
aggregations - Added
load: {dumpable: true}
option - Added
index_suffix
option - Accept string for
exclude
option
- Fixed bug with text values longer than 256 characters and
_all
field - see #850 - Fixed issue with
_all
field insearchable
- Fixed
exclude
option withword_start
- Fixed duplicate notifications
- Added support for
connection_pool
- Added
exclude
option
- Background reindexing and queues are officially supported
- Log updates and deletes
- Added support for queuing updates [experimental]
- Added
refresh_interval
option toreindex
- Prefer
search_index
oversearchkick_index
- Added
async
option toreindex
[experimental] - Added
misspellings?
method to results
- Added
retain
option toreindex
- Added support for attributes in highlight tags
- Fixed potentially silent errors in reindex job
- Improved syntax for
boost_by_distance
- Added
search_hit
andsearch_highlights
methods to models - Improved reindex performance
- Added support for
reindex
on 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
query
andjson
options have been removed in favor ofbody
- The
include
option has been removed in favor ofincludes
- The
personalize
option has been removed in favor ofboost_where
- The
partial
option has been removed in favor ofoperator
- Renamed
select_v2
toselect
(legacyselect
no longer available) - The
_all
field is disabled ifsearchable
option is used (for performance) - The
partial_reindex(:method_name)
method has been replaced withreindex(:method_name)
- The
unsearchable
andonly_analyzed
options have been removed in favor ofsearchable
andfilterable
load: false
no longer returns an array in Elasticsearch 2
- Added
client_options
- Added
refresh
option toreindex
method - Improved syntax for partial reindex
- Added support for geo shape indexing and queries
- Added
_and
,_or
,_not
towhere
option
- Added support for directional synonyms
- Easier AWS setup
- Fixed
total_docs
method for ES 5+ - Fixed exception on update errors
- Added
partial_reindex
method - Added
debug
option tosearch
method - Added
profile
option
- Official support for Elasticsearch 5
- Boost exact matches for partial matching
- Added
searchkick_debug
method - Added
geo_polygon
filter
- Fixed
Job adapter not found
error
- Added support for Elasticsearch 5.0 beta
- Added
request_params
option - Added
filterable
option
- Added
resume
option to reindex - Added search timeout to payload
- Fix for namespaced models (broken in 1.3.2)
- Added
body_options
option - Added
date_histogram
aggregation - Added
indices_boost
option - 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_prefix
option
- Added
multi_search
method - Added support for routing for Elasticsearch 2
- Added support for
search_document_id
andsearch_document_type
in models - Fixed error with instrumentation for searching multiple models
- Fixed instrumentation for bulk updates
- Fixed deprecation warnings with
alias_method_chain
- Added
analyzed_only
option for large text fields - Added
encoder
option to highlight - Fixed issue in
similar
method withper_page
option - Added basic support for multiple models
- Added bulk updates with
callbacks
method - Added
bulk_delete
method - Added
search_timeout
option - Fixed bug with new location format for
boost_by_distance
- Added support for
{lat: lat, lon: lon}
as preferred format for locations
- Added
below
option to misspellings to improve performance - Fixed synonyms for
word_*
partial matches - Added
searchable
option - Added
similarity
option - Added
match
option - Added
word
option - Added highlighted fields to
load: false
- Added support for Elasticsearch 2.1
- Throw
Searchkick::ImportError
for errors when importing records - Errors now inherit from
Searchkick::Error
- Added
order
option to aggregations - Added
mapping
method
- Added aggregations method to get raw response
- Use
execute: false
for 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_size
option for highlight - Added
took
method to results
Breaking changes
- Raise
Searchkick::DangerousOperation
error when calling reindex with scope - Enabled misspellings by default for partial matches
- Enabled transpositions by default for misspellings
and
now matches&
- Added
transpositions
option to misspellings - Added
boost_mode
andlog
options toboost_by
- Added
prefix_length
option 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_callbacks
thread-safe
- Fixed Mongoid import
- Added support for NoBrainer
- Added
stem_conversions: false
option - Added support for multiple
boost_where
values 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
unsearchable
option - Added
select: true
option - Added
body
option
- Added
boost_by_distance
- More flexible highlight options
- Better
env
logic
- Added support for Active Job
- Added
timeout
setting - Fixed import with no records
- Added
async
tocallbacks
option - Added
wordnet
option - Added
edit_distance
option to eventually replacedistance
option - Catch misspelling of
misspellings
option - Improved logging
- Added
search_method_name
option - Fixed
order
for array of hashes - Added support for Mongoid 2
- Added support for Elasticsearch 1.2
- Added
tokens
method - Added
json
option - Added exact matches
- Added
prev_page
for Kaminari pagination - Added
import
option to reindex
- Added
boost_by
andboost_where
options - Added ability to boost fields -
name^10
- Added
select
option forload: false
- Added support for automatic failover
- Fixed
operator
option (and default) for partial matches
- Added
stats
option to facets - Added
padding
option
- Do not throw errors when index becomes out of sync with database
- Added custom exception types
- Fixed
offset
andoffset_value
- Fixed reindex with inheritance
- Fixed multi-index searches
- Fixed suggestions for partial matches
- Added
offset
andlength
for improved pagination
- Added smart facets
- Added more fields to
load: false
result - 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
searchkick
is 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
or
queries
- 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_ENV
ifRACK_ENV
is not set
- Use
to_hash
instead ofas_json
for defaultsearch_data
method - 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
similar
method
- 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
- Use conversions by default
- Renamed
_source
tosearch_data
- Renamed
searchkick_import
tosearch_import
- Added
_source
method - Added
index_name
option
- Added
conversions
option
- First release