Releases: RediSearch/RediSearch
v2.8.8
This is a maintenance release for RediSearch 2.8
Update urgency: SECURITY
: There are security fixes in the release.
Details
Security and privacy:
- #3788 Don’t expose internal cluster commands (MOD-5706)
- #3844 Limits maximum phonetic length avoiding to be exploit (MOD 5767)
Bug fixes:
- #3771 Broken
lower()
andupper()
functions onAPPLY
stage inFT.AGGREGATE
inDIALECT 3
(MOD-5041) - #3752 Setting low
MAXIDLE
parameter value inFT.AGGREGATE
cause a crash (MOD-5608) - #3780 Wrong document length calculation causing incorrect score values (MOD-5622)
- #3808
LOAD
step after aFILTER
step could cause a crash onFT.AGGREGATE
(MOD-5267) - #3823
APPLY
orFILTER
expression causing a leak (MOD-5751) - #3837 Connection using TLS fail on Redis 7.2 (MOD-5768)
- #3856 Adding new nodes to OSS cluster causing a crash (MOD-5778)
- #3854 Vector range query could cause Out-of-Memory due to a memory corruption (MOD-5791)
Improvements:
2.8 GA (v 2.8.4)
This is the General Availability release of RediSearch 2.8
Headlines:
RedisSearch 2.8 introduces support for RESP3, new features, performance improvements, and bug fixes.
What's new in 2.8.4
This new major version introduces new and frequently asked Geo Polygon Search. Adding the GEOSHAPE
field type that supports polygons shapes using WKT notation. Besides the current GEO
(alias for GEOPOINT
) used already geo range queries, we add the support for POLYGON
and POINT
as new geo shapes formats (new GEOSHAPE
). In addition, 2.8 brings improvements on performance for SORT BY operations using FT.SEARCH
and FT.AGGREGATE
, and new FORMAT
for enhanced responses on FT.SEARCH
and FT.AGGREGATE
in RESP3 only.
Features:
-
Introduce support for Geo-polygon shapes and queries:
- Adding
GEOSHAPE
field type to map polygons in theSCHEMA
onFT.CREATE
(MOD-4798) - Support for polygons
POLYGON
andPOINT
using WKT notation, for examplePOLYGON((lon1 lat1, lon2 lat2, ...))
- #Adjust the query syntax on
FT.SEARCH
for Polygons using the predicate@geom:[OPERATOR $poly]
and defining polygon in WKT format asPARAMS 2 poly "POLYGON((10 20, ...))"
usingDIALECT 3
- Initially
WITHIN
andCONTAINS
operators withGEOSHAPES
for now - Support multiple coordinate systems: cartesian (X,Y) with the flag
FLAT
for flat earth and geographic (lon, lat) using the flagSPHERICAL
(MOD-5303). Geographic coordinate system using spherical indexing as default (SPHERICAL
) - Add memory usage per Geometry Index in the
FT.INFO
response report (MOD-5278)
- Adding
-
Introduce performance optimization for sorting operations on
FT.SEARCH
andFT.AGGREGATE
as default onDIALECT 4
. It will improve performance in 4 different scenarios, listed below:- Skip Sorter - applied when there is no sort of any kind. The query can return once it reaches the
LIMIT
requested results. - Partial Range - applied when there is a
SORTBY
a numeric field, with no filter or filter by the same numeric field, the query iterate on a range large enough to satisfy theLIMIT
requested results. - Hybrid - applied when there is a
SORTBY
a numeric field in addition to another non-numeric filter. Some results will get filtered, and the initial range may not be large enough. The iterator then is rewinded with the following ranges, and an additional iteration takes place to collectLIMIT
requested results. - No optimization - If there is a sort by score or by non-numeric field, there is no other option but to retrieve all results and compare their values.
- Skip Sorter - applied when there is no sort of any kind. The query can return once it reaches the
-
Add
WITHCOUNT
argument that allow return accurate counts for the query results with sorting. This operation processes all results in order to get accurate count, being less performant than the optimised option (default behaviour onDIALECT 4
) (MOD-5311) -
New
FORMAT
argument inFT.SEARCH
andFT.AGGREGATE
to retrieve the results as JSON strings or RESP3 hierarchical structures (RESP3 only) (MOD-5390)
Improvements (since 2.8.3):
- #3717 - Polygons shapes validation and orientation correction when clockwise (MOD-5575)
- #3534 - Vector Similarity [0.7.0]
- #3657 - Allow GC calls for all tiered indexes in the schema
- #3701 - HNSW is now using data blocks to store vectors and metadata instead of array
Changed Behavior:
- #3355, #3635 Expired keys deleted from slave's index, returning an empty array instead of
nil
(MOD-4739)
Notes:
- The version inside Redis will be 2.8.4 in semantic versioning. Since the version of a module in Redis is numeric, we could not add a GA flag.
- Minimal Redis version: 7.2
- If indexing and querying RedisJSON data structures, this version is best combined with RedisJSON 2.6 (v2.6.0 onwards)
v2.6.12
This is a maintenance release for RediSearch 2.6
Update urgency: HIGH
: There is a critical bug that may affect a subset of users. Upgrade!
Details
Bug fixes:
- #3557
TIMEOUT
configuration onFT.AGGREGATE
query being ignored (MOD-5208) - #3552
FT.CURSOR READ
onJSON
numeric queries not returning results (MOD-4830) - #3606 Update numeric inverted index
numEntries
avoiding excessive memory consumption (MOD-5181) - #3597 Duplicating alias as output name on
FT.AGGREGATE
reducer (REDUCE
argument) doesn't return results(MOD-5268) - #3654 Added check for
@
prefix onGROUPBY
fields returning an error instead of wrong results
Improvements:
2.8-RC2 (v.2.8.3)
This is the second Release Candidate of RediSearch 2.8.
Highlights
This new major version introduces new and frequently asked Geo Polygon Search. Adding the GEOSHAPE
field type that support polygons shapes using WKT notation. Beside the current GEO
(alias for GEOPOINT
) used already geo range queries, we add the support for POLYGON
as new shapes. In addition, 2.8 brings improvements on performance for SORT BY operations using FT.SEARCH
and FT.AGGREGATE
Details
Features:
-
#3553 Introduce support for Geo-polygon shapes and queries:
- #3476, #3660 Adding
GEOSHAPE
field type to map polygons in theSCHEMA
onFT.CREATE
(MOD-4798) - Support for polygons
POLYGON
using WKT notation, for example,POLYGON((x1 y1, x2 y2, ...))
- #3556 Adjust the query syntax on
FT.SEARCH
for Polygons using the predicate@geom:[OPERATOR $poly]
and defining polygon in WKT format asPARAMS 2 poly "POLYGON((10 20, ...))"
usingDIALECT 3
- Initially
WITHIN
andCONTAINS
operators withGEOSHAPES
for now - #3645 Support multiple coordinate systems cartesian (X,Y) and geographic (lon, lat) (MOD-5303). The geographic coordinate system using spherical indexing as default (
SPHERICAL
)
- #3476, #3660 Adding
-
#3046 Improved Sorting: Introduce performance optimization for sorting operations on
FT.SEARCH
andFT.AGGREGATE
as default onDIALECT 4
. It will improve performance in 4 different scenarios, listed below:- Skip Sorter - applied when there is no sort of any kind. The query can return once it reaches the
LIMIT
requested results. - Partial Range - applied when there is a
SORTBY
numeric field, with no filter or filter by the same numeric field, the query iterate on a range large enough to satisfy theLIMIT
requested results. - Hybrid - applied when there is a
SORTBY
numeric field in addition to another non-numeric filter. Some results will get filtered, and the initial range may not be large enough. The iterator then is rewinded with the following ranges, and an additional iteration takes place to collectLIMIT
requested results. - No optimization - If there is a sort by score or by non-numeric field, there is no other option but to retrieve all results and compare their values.
- #3651 Add a
WITHCOUNT
argument that allows the return of accurate counts for the query results with sorting. This operation processes all results in order to get an accurate count, being less performant than the optimised option (default behaviour onDIALECT 4
) (MOD-5311)
- Skip Sorter - applied when there is no sort of any kind. The query can return once it reaches the
Improvements (since 2.8.2):
- #3641 Indexing sanitizing trigger in heavy data updates scenario
- #3614 Several improvements in the aggregation's execution pipeline (MOD-5086)
Changed Behavior:
- #3355, #3635 Expired keys deleted from slave's index, returning an empty array instead of
nil
(MOD-4739)
Bug fixes (since 2.8.2):
- #3597 Duplicating alias as output name on
FT.AGGREGATE
reducer (REDUCE
argument) doesn't return results(MOD-5268) - #3654 Added check for
@
prefix onGROUPBY
fields returning an error instead of wrong results - #3501 Sorting by 2 or more fields follows the sort order not ignoring sort values if preceding sort values are missed
- #3582 Sorter will set a lower rank in documents expired during query time, preventing clients to freeze
Notes:
- The version inside Redis will be 2.8.3 in semantic versioning. Since the version of a module in Redis is numeric, we could not add a Release Candidate flag.
- Minimal Redis version: 7.2
- If indexing and querying RedisJSON data structures, this version is best combined with RedisJSON 2.6 (v2.6.0 onwards)
2.8-RC1 (v.2.8.2)
This is the first Release Candidate of RediSearch 2.8.
Highlights
This new major version introduces new and frequently asked Geo Polygon Search. Adding the GEOMETRY
field type that support polygons shapes using WKT notation. In addition, 2.8 brings improvements on performance for SORT BY operations using FT.SEARCH
and FT.AGGREGATE
Details
Features:
-
#3553 Introduce support for Geo-polygon shapes and queries
- #3476 Adding
GEOMETRY
field type to map polygons in theSCHEMA
onFT.CREATE
- Adding polygons using WKT notation, for example
POLYGON((x1 y1, x2 y2, ...))
- #3556 #Addnew Adjust the query syntax on
FT.SEARCH
for Polygons using the predicate@geom:[OPERATOR $poly]
and defining polygon in WKT format asPARAMS 2 poly "POLYGON((10 20, ...))"
usingDIALECT 3
- Initially
WITHIN
andCONTAINS
operators with Geometries only
- #3476 Adding
-
#3046 Introduce
OPTIMIZE
keyword toSORTBY
queries usingFT.SEARCH
andFT.AGGREGATE
that improve performance in 4 different scenarios:- Skip Sorter - applied when there is no sort of any kind. The query can return once it reaches the
LIMIT
requested results. - Partial Range - applied when there is a
SORTBY
a numeric field, with no filter or filter by the same numeric field, the query iterate on a range large enough to satisfy theLIMIT
requested results. - Hybrid - applied when there is a
SORTBY
a numeric field in addition to another non-numeric filter. Some results will get filtered, and the initial range may not be large enough. The iterator then is rewinded with the following ranges, and an additional iteration takes place to collectLIMIT
requested results. - No optimization - If there is a sort by score or by non-numeric field, there is no other option but to retrieve all results and compare their values.
- Skip Sorter - applied when there is no sort of any kind. The query can return once it reaches the
Improvements (since 2.8.1):
- #3628 Background indexing scanning performance (MOD-5259)
Changed Behavior:
- #3355 Expired keys deleted from slave's index, returning an empty array instead of
nil
(MOD-4739)
Bug fixes (since 2.8.1):
- #3562 Index definition may load several times when using
REPLICAOF
causing a failure (MOD-5215) - #3557
TIMEOUT
configuration onFT.AGGREGATE
query being ignored (MOD-5208) - #3606 Update numeric inverted index
numEntries
avoiding excessive memory consumption (MOD-5181) - #3552
FT.CURSOR READ
onJSON
numeric queries not returning results (MOD-4830)
Notes:
- The version inside Redis will be 2.8.2 in semantic versioning. Since the version of a module in Redis is numeric, we could not add a Milestone flag.
- Minimal Redis version: 7.2
- If indexing and querying RedisJSON data structures, this version is best combined with RedisJSON 2.6 (v2.6.0 onwards)
2.8-M01 (v2.8.1)
This is the first Milestone of RediSearch 2.8
Details
Features:
-
#3553 Introduce support for Geo-polygon shapes and queries
- #3476 Adding
GEOMETRY
field type to map polygons in theSCHEMA
onFT.CREATE
- Adding polygons using WKT notation, for example
POLYGON((x1 y1, x2 y2, ...))
- #3556 Adjust the query syntax on
FT.SEARCH
for polygons following'@geom:[OPERATOR POLYGON((x1 y1, x2 y2, ...))]'
usingDIALECT 3
- Initially
WITHIN
andCONTAINS
operators with Geometries only - Add information about the Geometry Index at
FT.INFO
- #3476 Adding
-
#3046 Introduce
OPTIMIZE
keyword toSORTBY
queries usingFT.SEARCH
andFT.AGGREGATE
that improve performance in 4 different scenarios:- Skip Sorter - applied when there is no sort of any kind. The query can return once it reaches the
LIMIT
requested results. - Partial Range - applied when there is a
SORTBY
a numeric field, with no filter or filter by the same numeric field, the query iterate on a range large enough to satisfy theLIMIT
requested results. - Hybrid - applied when there is a
SORTBY
a numeric field in addition to another non-numeric filter. Some results will get filtered, and the initial range may not be large enough. The iterator then is rewinded with the following ranges, and an additional iteration takes place to collectLIMIT
requested results. - No optimization - If there is a sort by score or by non-numeric field, there is no other option but to retrieve all results and compare their values.
- Skip Sorter - applied when there is no sort of any kind. The query can return once it reaches the
Improvements (since 2.6.9):
- #3259 Allow alias name beginning with
as
Changed Behavior:
- #3355 Expired keys deleted from slave's index, returning an empty array instead of
nil
(MOD-4739)
Known Issues:
- Creating 2x DBs with at least 2x Shards using
REPLICAOF
cause a failure (MOD-5215)
Bug fixes (since 2.6.9):
- #3216 Inconsistent behavior with
ON_TIMEOUT FAIL
config (MOD-4265)
Notes:
- The version inside Redis will be 2.8.1 in semantic versioning. Since the version of a module in Redis is numeric, we could not add a Milestone flag.
- Minimal Redis version: 6.2
- If indexing and querying RedisJSON data structures, this version is best combined with RedisJSON 2.6 (v2.6.0 onwards)
v2.6.9
This is a maintenance release for RediSearch 2.6
Update urgency: HIGH
: There is a critical bug that may affect a subset of users. Upgrade!
Details
Bug fixes:
- #3468 KNN searching for 0 vectors with a filter resulted in crash (MOD-5006)
- #3499
MAXSEARCHRESULTS
set to0
causingFT.SEARCH
crash (MOD-5062) - #3494 Removing
MAXSEARCHRESULTS
limit causes crash onFT.AGGREGATE
(MOD-4974) - #3504 Uninitialised vector similarity query parameter bug (MOD-5063)
Improvements:
v2.6.6
v2.6.5
This is a maintenance release for RediSearch 2.6
Update urgency: HIGH
: There is a critical bug that may affect a subset of users. Upgrade!
Details
Bug fixes:
- #3354 Library update preventing a crash during cluster failover (MOD-4560)
- #3357 Handling division by zero in expressions preventing nodes to restart (MOD-4296)
- #3332 Fix wildcards
*
queries onDIALECT 2
andDIALECT 3
Improvements:
- #3361 Enable the use of IPv6 for all cluster and module communication
v2.6.4
This is a maintenance release for RediSearch 2.6
Update urgency: MODERATE
: Program an upgrade of the server, but it's not urgent.
Details
Bug fixes:
- #3289 Potential crash when querying multiple fields (MOD-4639)
- #3279 Potential crash when querying using wildcard
*
on TAG field (MOD-4653)
Improvements: