Version 27.1.5
Released: June 19th 2026
This release brings built-in authentication and authorization, sharded tables, conversational search, faster vector search, better faceting and aggregations, and a long list of fixes across KNN, replication, protocol compatibility and other areas.
New Features and Improvements
- 🆕 v27.1.1 Issue #4617 PR #4647 Added dict=keywords_32k, an opt-in word dictionary for tokens up to 32 KiB, making it possible to index and search long machine-generated values such as hashes, message IDs, and long email-like tokens without silent truncation.
- 🆕 v27.0.0 Issue #2833 PR #3648 Added authentication and authorization for MySQL, HTTP/HTTPS, distributed remote agents, and replication-related operations, including users, bearer tokens, fine-grained permissions, bootstrap commands, and auth-aware cluster user handling.
- 🆕 v26.2.0 PR #4606 Updated Buddy to 3.47.0, adding the matching sharding rollback, upgrades, tests, and fixes needed for the new sharding functionality.
- 🆕 v26.1.0 PR #4537 Added native
type='sharding'tables with distributed inserts, plus major sharding upgrades covering creation, routing, rollback, failover, and operational behavior. - 🆕 26.0.0 Issue #4431 PR #4598 Reworked replication storage so incoming replicated tables use the normal data_dir/
<table>layout instead of cluster-specific paths, aligning replicated-table storage with ordinary local table layout. - 🆕 v25.15.0 PR #4590 Updated MCL to 13.5.0, adding the library support needed for parallel HNSW build.
- 🆕 v25.14.0 PR #4589 Added multithreaded HNSW build support, speeding up KNN index construction during initial build, chunk merges, and
ALTER TABLE ... REBUILD KNN. - 🆕 v25.13.0 PR #4475 Added
searchd --check, allowing configuration validation before startup without side effects. - 🆕 v25.12.0 Issue #4531 Added
facet_filter_modefor faceted search, making it possible to build richer e-commerce-style filters that can preserve and control alternative facet buckets under active filtering. - 🆕 v25.11.0 PR #4558 Added conversational search to Manticore Search through
CREATE CHAT MODELandCALL CHAT, so existing vectorized tables can answer questions with KNN retrieval, conversation history, and LLM-backed responses. - 🆕 v25.10.0 PR #4555 Updated Buddy to 3.45.0, adding support for OpenSearch Dashboards.
- 🆕 v25.9.0 PR #4549 Updated
manticore-loadto 1.25.0, adding multi-query support. - 🆕 v25.8.0 PR #4414 Added a built-in Ukrainian lemmatizer, expanding native morphology support for Ukrainian text search.
- 🆕 v25.7.18 Issue #4461 Added
time_zoneandoffsetsupport to date_histogram, making time-zone-aware calendar bucketing possible in aggregation queries. - 🆕 v25.7.16 PR #4503 Updated MCL to 13.2.5, improving ONNX embeddings performance.
- 🆕 v25.7.0 Issue #3280 Added Elasticsearch-like statistical aggregations, including
percentiles,percentile_ranks, andmad, making it possible to calculate percentile distributions and median absolute deviation directly in aggregation queries. - 🆕 v25.6.0 PR #4407 Extended bm25a() in the
exprranker to accept an optional thirdavgdlargument, allowing queries to override the average document length used in BM25A scoring. - 🆕 v25.4.0 Issue #4060 Added systemd state notifications and switched the packaged Linux service to
Type=notify, improving startup, reload, and shutdown handling and preventing long-running shutdown work from being treated as a stalled daemon. - 🆕 v25.3.0 PR #4326 Added support for explicitly prefixing left-table columns in
JOINqueries, making JOIN conditions and filters more consistent when table-qualified column names are used. - 🆕 v25.2.0 PR #146 Updated MCL to 13.2.2, adding local ONNX embeddings support and improving vector-search performance with faster embeddings inference and HNSW distance calculations, including AVX-512 optimizations where supported.
- 🆕 v25.1.0 PR #4454 Improved KNN performance by optimizing distance calculation and adding AVX-512 columnar library loading when supported, reducing overhead in vector-search workloads.
- 🆕 v25.0.5 Issue #1514 Added EXIT CLUSTER, allowing the current node to detach from a replication cluster online without restarting the daemon while keeping its local tables as regular local tables.
Breaking Changes
- ⚠️ v27.0.0 Issue #2833 PR #3648 Breaking change: authentication and authorization is not enabled by default, but if you enable it, anonymous client access no longer works. Roll out the upgrade in stages: upgrade remote agents and replication peers first, then upgrade the masters that query or manage them, and enable auth only after the whole topology is on the new version. A new master can fail against an old agent because of protocol changes, while an old master can still read from a new agent only until auth is enabled. Participating daemons must also have matching stored authentication data for the relevant users, and a successful
JOIN CLUSTERreplaces the joining node's local auth data with the donor cluster's auth data. Existing table data remains compatible, but migration requires bootstrapping users, granting permissions, synchronizing auth data across nodes, and reviewing cluster-join procedures. Downgrade is only safe before enabling auth and before any cluster join has replaced local auth data. - ⚠️ v26.0.0 Issue #4431 PR #4598 Breaking change: replication clusters that relied on incoming replicated tables being stored under the cluster
pathno longer work the same way, because received tables now live under the standard data_dir/<table>layout. Existing table data remains usable, but if you use replication with a custom clusterpath, migration may require moving or re-synchronizing replicated tables into the standarddata_dirlayout. Downgrade is only safe before adopting the new replicated-table layout.
Bug Fixes
- 🪲 v27.1.5 PR #4648 Fixed a crash when fetching columnar
float_vectorattributes, preventing failures when vector columns are materialized from columnar tables. - 🪲 v27.1.4 Issue #4655 PR #4657 Fixed
ALTER TABLE ... RECONFIGUREandSHOW CREATE TABLEfor tables promoted fromdict='keywords'todict=keywords_32k, so the one-way dictionary upgrade now works and is reflected correctly in the table definition. - 🪲 v27.1.3 PR #4652 Updated Buddy to 4.0.1, fixing Queue-plugin mutation permission handling under auth so read-only grants on
source/<name>andmva/<name>no longer allowDROP SOURCEorALTER MATERIALIZED VIEWside effects. - 🪲 v27.1.2 PR #4600 Fixed
sql_attr_multiquery MVA collection for plain indexes built from multiplesourceblocks, so multi-source indexes no longer fail during indexing with a null error. - 🪲 v27.1.0 PR #4635 Updated MCL to 13.6.1, preventing the embeddings library from crashing on emulated x86 CPUs.
- 🪲 v26.3.2 PR #4620 Updated MCL to 13.5.3, bringing in a quantizer type-mismatch fix from the bundled columnar library.
- 🪲 v26.3.1 Reverted the
zeroesfacet feature from26.3.0, removing the mistakenly released SQL/JSON zero-count facet bucket support. - 🪲 v26.2.4 Issue #4320 Fixed KNN result ordering after rescoring, so explicit
ORDER BYtie-breakers are applied correctly when equal rescored distances occur. - 🪲 v26.2.3 PR #4614 Updated Buddy to 3.47.2, fixing several replication and node-rejoin crash paths, including invalid table-index handling and replication snapshot locking.
- 🪲 v26.2.2 Issue #4603 Fixed a crash in hybrid fused queries with
GROUP BYon tables that use columnar attributes. - 🪲 v26.2.1 Issue #4534 Updated Buddy to 3.47.1, preserving
offsetandmax_matchesfor HTTP KNN search bydoc_id. - 🪲 v26.0.3 PR #4604 Updated MCL to 13.5.2, bringing in stack-related stability fixes for the bundled columnar library.
- 🪲 v26.0.2 Issue #4534 Fixed KNN searches to honor
max_matches, correcting result-window handling that could return an incorrect fixed number of hits. - 🪲 v26.0.1 PR #4592 Fixed debug-build stack sizing to prevent memory corruption caused by oversized coroutine and thread stack frames.
- 🪲 v25.13.5 Issue #4489 Fixed an indexer crash caused by MVA/docstore gaps when building plain indexes with columnar attributes.
- 🪲 v25.13.4 PR #4583 Fixed
facet_filter_modebucket-status behavior inautoandmaxmodes, aligning selected, available, and unavailable facet buckets with the intended faceted-search UX. - 🪲 v25.13.3 Issue #4578 Fixed RT
.@filescrashes under write load by refactoring dynamic-table internal dataflow, preventing synchronization-related failures during internal file-list queries. - 🪲 v25.13.2 Issue #660 Updated Buddy to 3.46.3, fixing KNN-by-
doc_idself-hit handling and restoring Logstash 7.17 template probe compatibility. - 🪲 v25.13.1 Issue #168 Fixed Windows AVX-512 module loading, preventing packaged MCL AVX-512 DLLs from being selected on unsupported systems and crashing the daemon or indexer.
- 🪲 v25.12.1 PR #4563 Fixed binary MySQL protocol support, including special columns, nulls, and typed numeric values, so prepared/binary-protocol queries behave correctly again.
- 🪲 v25.11.2 PR #4566 Fixed Fluent Bit bulk-ingest interoperability by normalizing
Content-Lengthheader formatting, preventing successful bulk responses from being replayed as duplicate inserts. - 🪲 v25.11.1 Issue #4560 Updated Buddy to 3.46.1, fixing typed
COUNT(*)handling forinformation_schema.tablesand restoring expected integration behavior. - 🪲 v25.9.1 Issue #4464 Fixed prepared statements that need Buddy processing, including fuzzy
MATCH(?)queries, and corrected strict typed result handling for Buddy-returned bool, multi, and JSON values. - 🪲 v25.8.5 PR #4554 Fixed packaging and CI around AOT language packs, ensuring Docker images include all packs and lemmatizer/AOT test coverage is no longer skipped.
- 🪲 v25.8.4 PR #4553 Fixed Ukrainian lemmatizer loading and original-form generation, tightening the new built-in Ukrainian morphology support.
- 🪲 v25.8.3 Issue #4490 Fixed Arabic mixed-token stemming in
CALL KEYWORDS, preventing certain short Arabic+numeric inputs from failing with a genericSomething went wrongerror. - 🪲 v25.8.2 Issue #4509 Fixed a replication crash when creating a cluster with a long
data_dirpath, correcting cluster-binlog handling for long directory names. - 🪲 v25.8.1 PR #4535 Fixed hybrid
knn_distoutput so sentinelFLT_MAXvalues are no longer serialized as bogus distances in JSON results. - 🪲 v25.7.21 Issue #4525 Fixed a memory leak in scroll handling by correctly freeing remapped string attributes.
- 🪲 v25.7.20 Issue #4466 Fixed JSON array aggregation when it is the only aggregation in the request, so array items are bucketed individually instead of repeating the whole array as each key.
- 🪲 v25.7.19 PR #4533 Updated MCL to 13.2.6, fixing a crash that could occur when running multithreaded KNN queries with 1-bit quantized vectors.
- 🪲 v25.7.17 PR #4529 Bundled several minor fixes and cleanups, including another ATTACH TABLE correctness fix and small runtime/build improvements.
- 🪲 v25.7.15 PR #4526 Fixed
ATTACH TABLEkill-list handling in columnar mode by reading columnar docids correctly, completing the recent attach fixes for MCL/columnar setups. - 🪲 v25.7.14 Issue #4459 Fixed
DATE_HISTOGRAM()interval parsing in aggregation arguments, sofixed_intervalvalues like1h,2m, and similar units now work correctly instead of behaving as raw seconds. - 🪲 v25.7.13 Issue #4522 Fixed an extra null character in JOIN sorter/grouping output, so grouped and faceted JOIN values no longer contain corrupted trailing
\0bytes. - 🪲 v25.7.12 Issue #4516 Fixed document counters for the target table after ATTACH TABLE, so
indexed_documentsand related metadata now reflect the actual number of rows after attach. - 🪲 v25.7.11 Issue #4515 Fixed ATTACH TABLE handling of already-killed documents, so duplicate IDs in the target table are no longer removed incorrectly during attach.
- 🪲 v25.7.10 Issue #4514 Fixed
indexed_documentsfor the source table after ATTACH TABLE, so the document count now drops correctly when a disk chunk is moved to another table. - 🪲 v25.7.9 Issue #4513 Fixed metadata for attached indexes, so tables created via ATTACH TABLE keep the correct chunk state and no longer become broken after restart.
- 🪲 v25.7.8 Issue #4512 Fixed
indexed_documentsmetadata on startup after a dirty restart, so RT tables no longer report an inflated document count when deleted rows are recovered. - 🪲 v25.7.7 Issue #159 Fixed KNN startup diagnostics when the embeddings library is missing or misconfigured, so Manticore no longer reports a misleading
(null)warning/error during initialization. - 🪲 v25.7.6 Issue #4460 Fixed replication handling when UPDATE disables secondary indexes, so the warning is no longer turned into a cluster-breaking error in replicated setups.
- 🪲 v25.7.5 Issue #4345 Fixed JSON filter fallback when secondary indexes do not produce iterators, so compound filter trees keep the intended filters instead of returning incorrect results.
- 🪲 v25.7.4 PR #662 Updated Buddy to 3.44.5 to include a Composer security fix.
- 🪲 v25.7.3 Issue #4404 Fixed hybrid search with
scroll, so scroll-based pagination now works correctly instead of failing or crashing when hybrid search is used. - 🪲 v25.7.2 Issue #4491 Fixed secondary-index state after RT chunk rename and OPTIMIZE, so indexes disabled by UPDATE stay disabled across daemon restart instead of being unintentionally re-enabled.
- 🪲 v25.7.1 PR #4502 Fixed filtering by
knn_dist()andhybrid_score()in hybrid search, so queries can correctly apply conditions to vector distance and hybrid ranking scores. - 🪲 v25.6.9 Issue #4473 Fixed HTTP JSON join parsing for mixed-case table names by canonicalizing table references in
join.on, so joins no longer fail just because table names contain uppercase letters. - 🪲 v25.6.8 Issue #4444 Fixed remaining expr-ranker crashes on columnar tables with mixed field-length handling, completing the bm25a()/bm25f() fix for index_field_lengths='1' scenarios.
- 🪲 v25.6.7 Issue #4484 Fixed template-table handling in the MySQL
COM_FIELD_LISTmetadata path, preventing crashes when clients request field metadata for template tables. - 🪲 v25.6.6 Issue #4497 Fixed metadata-path crashes for template tables, including
SHOW FIELDSand related field-list handling that previously could crash the daemon. - 🪲 v25.6.5 Issue #2 Updated Buddy to 3.44.4, fixing telemetry delivery under PHP 8.4 so telemetry snapshots are sent successfully instead of failing during the HTTP POST request.
- 🪲 v25.6.4 Issue #4469 Fixed ALTER TABLE ... REBUILD SECONDARY after OPTIMIZE merges RT disk chunks, so secondary-index files stay in sync with renamed optimized chunks and no longer fail with
secondary index file ... not loaded. - 🪲 v25.6.3 Issue #4418 Fixed crashes and related JOIN-handling issues in hybrid search, including
LEFT JOINqueries that previously could fail when full-text and KNN results were combined. - 🪲 v25.6.2 PR #658 Updated Buddy to 3.44.3, fixing volume telemetry when
binlog_pathis empty sovolume_size_bytesis no longer incorrectly reported as zero. - 🪲 v25.6.1 Issue #4476 Fixed startup under systemd so
pid_fileis no longer required when the daemon is managed by systemd, which already knows and controls the process ID. - 🪲 v25.5.1 Issue #4444 Fixed a crash in expr rankers using bm25a() or bm25f() on columnar tables with index_field_lengths='1', so custom ranking no longer dereferences field-length attributes from the wrong storage.
- 🪲 v25.5.0 Issue #4007 Fixed inconsistent handling of mixed-case table names across SphinxQL, HTTP, and
JOINqueries, so table names are normalized consistently instead of failing or behaving differently when uppercase letters are used. - 🪲 v25.2.1 Issue #4428 Fixed a crash when
GROUP BYwas used in hybrid search queries, including queries that combine full-text and KNN search. - 🪲 v25.1.1 Issue #4455 Reverted the recent change that turned a missing
knn_embeddingslibrary into an explicit KNN initialization error, restoring the previous behavior for setups where that optional embeddings library is absent. - 🪲 v25.0.6 Issue #4437 Fixed cluster rejoin handling after
ALTER CLUSTER ... DROP, so a node that was offline during the drop no longer keeps stale local cluster-table metadata that leaves the dropped table stuck and impossible to remove after rejoining. - 🪲 v25.0.4 PR #4405 Fixed BM25A ranking for stemmed or otherwise normalized query terms, so equivalent queries such as
lookingandlooknow use the same local/global IDF statistics instead of producing different relevance scores. - 🪲 v25.0.3 PR #85 Updated Executor to 1.4.3, simplifying its Docker packaging workflow by using pre-built architecture-specific artifacts instead of building binaries inside the image pipeline.
- 🪲 v25.0.2 Issue #4395 Fixed OPTIMIZE TABLE ... OPTION sync=1, cutoff=N when auto-optimize is already running, so the manual optimize request now waits for its requested chunk-reduction target instead of being tied to a different ongoing optimize run.
- 🪲 v25.0.1 Issue #4398 Fixed daemon query-time statistics so global counters and per-table timings are reported correctly for HTTP
/search, distributed update queries, and API search requests routed from master to agent.