⚠️ 此页面为自动翻译,翻译可能不完美。

Manticore Search 3.0.0 is now available

我们很高兴宣布 Manticore Search 3.0.0 的发布,这是我们期待已久的首次重大版本发布。这是第一个与旧版本不兼容的 Manticore 版本。

下载地址为 此处 以及 Manticore Github 页面 。Docker 镜像可在 Docker Hub 获取。

主要变更

Manticore Search 2 的一个主要问题是每个索引的字符串/JSON 属性限制为 4GB。为克服此限制,数据必须分片到多个索引中。版本 3 重新设计了索引存储,消除了此限制,使得可以减少分片数量(或直接使用单个索引),并且在受影响的情况下可以将 RealTime 索引完全优化为一个分片。

由于新索引存储结构不同,索引兼容性被打破。使用 Manticore 2 创建的现有索引无法被 Manticore 3 加载,但可以通过 转换工具 轻松升级。

在动态更新属性(使用 UPDATE )方面也没有限制。之前字符串属性只能通过 REPLACE 命令更新,JSON 属性只能更新标量键值。

普通索引的 kill-lists 现在在索引加载/轮换时应用,而不是每个查询。包含 kill-lists 的索引需要定义 索引列表 ,在加载/轮换时应用 kill-lists。这消除了之前需要为索引搜索定义特定顺序的需求。如果您同时轮换多个索引,Manticore Search 会智能轮换——它会首先轮换未标记为 kill-lists 的索引,最后轮换标记为 kill-lists 的索引。

文档 ID 现在为正的 64 位整数,之前为无符号的 64 位整数。

其他改进

新增了 CONCAT() 函数——允许连接两个或多个字符串。如果您想连接非字符串参数,可以额外使用 TO_STRING()。

复制功能已获得多项改进:

  • node_address 指令——允许指定节点的网络地址

  • JOIN CLUSTER 通过提供集群中一个节点的地址和端口使用 'AT' 子句,简化了语法

  • ALTER CLUSTER 集群 UPDATE 节点——用于更新集群中的节点列表

  • 节点列表在 SHOW STATUS 中打印

性能说明

在 v3 中,AND 查询通常更快。加速程度取决于关键词频率。测试包括从集合中提取前 1000 个关键词,当多个常见关键词位于前 1000 个关键词时,性能提升约为 10% 到 60%。更罕见的关键词应提供更大的提升。

通配符搜索在 v3 中快了几个百分点。在某些情况下,OR 搜索可能慢几个百分点(在执行的测试中最多 9%),此问题将在未来版本中解决。包含大量磁盘分片的 RT 索引现在显著更快。

得益于早期测试者,v3 已在生产环境中运行了数千小时。以下是观察到的一些改进:

v3 在 RAM 碎片方面表现更好:

img

一些已经在生产环境中测试 v3 的用户报告称,与 2.8 相比平均性能有所提升:

img

升级前需知

您需要重新索引所有索引或使用 转换工具

如果您使用 kill-lists,索引声明中需要进行 更改 。在转换期间,RT 索引的 RAM 分片中不应有数据(运行 FLUSH RAMCHUNK)。

对于分布式设置,迁移可以从数据节点(代理)开始到主节点,因为 运行 v2 的主节点可以与运行 v3 的代理通信

搜索查询语法没有任何变化!所有连接协议在与 Manticore 3 一起使用时不需要任何更新或更改。只要索引已加载,现有客户端可以简单地连接到新版本。

有关变更的完整参考和迁移步骤,请参阅 迁移指南

尽管 Manticore 3 已经经过多个早期采用者的广泛生产测试,但仍可能存在一些问题。如果您在 github 跟踪器 上报告任何问题,我们将不胜感激。

有关 3.0.0 的完整变更日志,请参阅 发布说明

未来说明

关于 HTTP 协议,预计在下一个版本中将有以下更改:/search 端点将被弃用,/sql 响应格式将与 /json 端点相同。

安装Manticore Search

安装Manticore Search