Manticore Search 3.0.0 现已发布

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

下载链接可在 这里Manticore Github 页面 获取。Docker 镜像可在 Docker Hub 获取。

主要变化

Manticore Search 2 的一个重大问题是每个索引限制为 4GB 的字符串/json 属性。为了克服这个限制,数据必须分片到多个索引中。版本 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%),这个问题将在未来的版本中解决。具有大量磁盘块的实时索引现在显著更快。

感谢早期测试者,v3 已在生产环境中运行了数千小时。以下是观察到的几项改进:

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

img

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

img

升级前需要了解什么?

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

如果您使用黑名单,则在索引声明中需要进行 更改 。在转换期间,实时索引的 RAM 块中不应有数据(运行 FLUSH RAMCHUNK)。

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

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

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

虽然 Manticore 3 已被几位早期采用者在生产中广泛测试,但仍可能存在一些问题。如果您发现任何问题,请在 github 跟踪器 上报告。

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

未来说明

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

安装Manticore Search

安装Manticore Search