Manticore Search 3.0.0 现已发布

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

下载链接可在 这里 找到,也可以从 Manticore Github 页面 获取。Docker 镜像可在 Docker Hub 获取。

主要变化

Manticore Search 2 最大的问题之一是每个索引的字符串/json 属性限制为 4GB。为了克服此限制,数据必须分片到多个索引中。版本 3 重新设计了索引存储,消除了此限制,能够减少分片数量(或简单地使用单个索引),并完全优化受限情况下的实时索引至一个块。

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

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

现在,普通索引的杀死列表是在索引加载/旋转时应用,而不是按查询应用。包含杀死列表的索引需要定义一个 索引列表 ,以便在加载/旋转时应用杀死列表。这消除了以前在索引中搜索时需要定义特定顺序的需求。如果您同时旋转多个索引,Manticore Search 将为您智能旋转 - 首先旋转未针对杀死列表的索引,最后旋转标记在杀死列表上的索引。

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

其他改进

添加了 CONCAT() 函数 - 允许连接两个或多个字符串。如果您想连接非字符串参数,还可以使用 TO_STRING()。

复制功能得到了若干改进:

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

  • JOIN CLUSTER 通过仅提供群集节点的地址和端口,使用 “AT” 子句提供更简单的语法

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

  • 节点列表在 SHOW STATUS 中打印

性能说明

在 v3 中,AND 查询通常更快。加速取决于关键字的频率。包括从集合中最常用的前 1000 个测试显示,在多个最高常用关键字的情况下,增益较小(约 10%),而当某些关键字处于前 1000 的末尾时增益超过 60%。较少出现的关键字应提供更大的增益。

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

得益于早期测试人员,v3 已在生产中运行了数千小时。以下是观察到的几项改进:

在 RAM 碎片化方面,v3 更好:

img

一些已经在生产中测试 v3 的用户报告,与 2.8 相比,平均性能更好:

img

升级前需要知道什么?

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

如果您使用杀死列表,索引声明中有 更改 是必要的。RT 索引在转换期间应在 RAM 块中没有数据(运行 FLUSH RAMCHUNK)。

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

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

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

虽然 Manticore 3 已由数位早期采用者在生产中进行了广泛测试,但仍可能存在一些问题。我们将感激您在 github 追踪器 上报告任何问题。

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

未来的说明

关于HTTP协议,请期待以下变更在下一个版本中:/search端点将被弃用,/sql响应格式将与**/json**端点相同。

安装Manticore Search

安装Manticore Search