发布:2025年12月7日
如果您遵循官方安装指南,则无需担心此问题。
- ⚠️ v15.0.0 PR #4003 更新了 MCL 要求至 9.0.0,带来了未压缩的浮点向量存储、KNN 向量的块大小更改以及非缓冲读取。此更新更改了数据格式。旧版本的 MCL 无法读取,但新版本仍可无问题读取您现有的列式表。
- 🆕 v15.1.0 PR #3990 通过将总时间拆分为更清晰的部分,改进了磁盘块刷新日志记录。
- 🆕 v14.7.0 Issue #3860 更新了 Buddy 要求至 3.40.1,改进了自动补全:将归一化的二元分隔符字符转换为空格,过滤掉重复或格式错误的建议组合以提升建议质量。还修复了 Kafka 视图中的无效 JSON 错误,以及自动补全中排序组合在分数映射缺少某些键时不再抛出错误。
- 🆕 v14.6.0 Issue #615 更新了 Manticore Buddy 要求至版本 3.39.1,修复了 KNN 插件中的无效 JSON 错误,并允许 Buddy 处理程序覆盖 HTTP
Content-Type,使/metrics现在返回 Prometheus 文本格式(text/plain; version=0.0.4)而非 JSON,修复了抓取失败问题。 - 🆕 v14.4.0 PR #3942 更新了 Manticore Buddy 要求至 3.38.0,过滤掉零文档建议,改进了 Ds\Map 的字符串键处理,将 Buddy 中的内存使用报告格式从 KB 改为字节以提高精度,并提升了性能、稳定性和可维护性。
- 🆕 v14.5.0 Issue #3329 在记录查询请求的 JSON 负载时,修剪多余的空白和换行符——跳过前后空格以避免记录格式错误的 JSON。
- 🆕 v14.3.0 PR #3932 改进了对
LOCK TABLES/UNLOCK TABLES的处理:写锁现在返回警告而非错误,读锁在SHOW LOCKS中正确显示,整体锁逻辑表现一致。 - 🆕 v14.2.0 Issue #3891 增加了对
JOIN ON子句中任意过滤表达式的支持(不仅限于等值比较),支持如... ON t1.id = t2.t1_id AND t2.value = 5的查询。
- 🪲 v15.0.6 Issue #3601 修复了一个回归问题:使用自定义配置路径安装时,原生 Windows 服务无法启动。
- 🪲 v15.0.5 Issue #3864 修复了基于 SQL 的源中“连接字段”的处理,使迭代连接命中时正确设置“结束标记”。
- 🪲 v15.0.4 Issue #4004 修复了一个回归问题:守护进程的 HTTP
/sql响应错误地使用了Content-Type: text/html头,而非application/json。 - 🪲 v15.0.3 Issue #2727 修复了使用 JSON 到属性映射生成的属性进行
GROUP BY/FACET分组时失败的问题。 - 🪲 v15.0.2 Issue #3962 更新了 Buddy 要求至 3.40.2,新增了
/sql端点的模糊搜索支持,并包含其他模糊搜索修复。 - 🪲 v15.0.1 PR #3922 更新了支持 Logstash 9.2 的文档和测试。
- 🪲 v14.7.6 PR #4002 修复了 KNN 过采样行为:当不请求重评分时不再计算重评分的 KNN 距离,并将浮点向量访问提示传递到列式存储层。
- 🪲 v14.7.5 PR #3999 修复了“test_298”模型以解决失败的 KNN 相关测试。
- 🪲 v14.7.4 Issue #3977 Windows 上的测试有时会生成 .mdmp 崩溃转储 — 已修复,"ubertests" 完成后不再留下 minidumps。
- 🪲 v14.7.3 Issue #3832 修复了通过
/cli_json发送包含分号(例如组合 SQL 语句)的多查询请求失败的错误 — 处理前不再将分号替换为空字符。 - 🪲 v14.7.2 Issue #1613 记录了用于计算短语/邻近/NEAR 操作符排名因素的内部 32 位掩码,以及它如何导致超过第 31 个关键字的词项计数不足。
- 🪲 v14.7.1 PR #3992 修复了通过代理处理的分布式表的 HTTP UPDATE 和 DELETE 请求缺失错误消息的问题,客户端现在在操作失败时能正确接收错误。
- 🪲 v14.6.4 Issue #3478 增强了更新验证,检查更新的属性是否与全文字段冲突;如果目标是全文字段,更新将被拒绝。
- 🪲 v14.6.3 Issue #2352 修复了使用带有
persistent_connections_limit的分布式表时的内部错误。 - 🪲 v14.6.2 Issue #3757 修复了表状态计数器误标为 "_sec"(例如
query_time_1min)但实际上报告的是毫秒而非秒的错误。 - 🪲 v14.6.1 Issue #3979 修复了
SHOW INDEX <name> STATUS搜索时间统计(search_statsms*)与查询日志计算值不匹配的问题;报告的时间现在反映真实的日志查询时间。 - 🪲 v14.5.8 Issue #3517 更新了 HTTP 头处理,使 Buddy 集成可以定义或覆盖头部,而不总是强制使用
application/json。 - 🪲 v14.5.7 修正了测试 226 以强制稳定的结果顺序,并修正了 GTest 模型中 JSON 混合数组的处理。
- 🪲 v14.5.6 通过修正
binlog.cpp中的类型不匹配,修复了 Windows 构建,确保DoSaveMeta()现在能正确编译于 Windows 平台。 - 🪲 v14.5.5 Issue #805 Issue #807 Issue #3924 修复了 JSON 属性分面中的不一致行为:在 FACET 子句中为 JSON 数组设置别名现在与直接对数组分面行为一致。
- 🪲 v14.5.4 Issue #3927 通过跳过空 HNSW 索引的搜索,修复了 KNN 向量搜索中的崩溃。
- 🪲 v14.5.2 Issue #3669 修复了
MATCH()解析,空组如()不再触发错误(例如camera()查询现在能正确工作)。 - 🪲 v14.5.1 PR #3961 更新了 mysqldump 复制模式的备份文档:说明了转储复制表时使用
--skip-lock-tables,并修复了多个损坏的手册链接。 - 🪲 v14.3.2 Issue #2772 修复了通过 MySQL 客户端 9 执行某些命令时,查询日志中出现 "unexpected $undefined near '$$'" 错误的 bug。
- 🪲 v14.3.1 PR #3934 更新了 Manticore Buddy 要求从 3.37.0 到 3.37.2,移除了多余的
LOCK/UNLOCK TABLES检查(现由守护进程处理),并修复了自动补全解析,使带转义引号(如\"或\')的查询能正确处理而非失败。 - 🪲 v14.2.1 Issue #3602 修复了在 KNN+MATCH 查询中使用自定义排序表达式
knn_dist()时的崩溃;此类查询现在返回明确错误而非崩溃。 - 🪲 v14.1.1 文档:修正了小的翻译问题。
发布:2025年11月7日
❤️ 我们衷心感谢 @ricardopintottrdata 在 PR #3792 和 PR #3828 中的工作——解决了关于 HAVING 总计数和 filter with empty name 错误的问题——以及感谢 @jdelStrother 通过 PR #3819 的贡献,改进了在没有 Jieba 支持时对 ParseCJKSegmentation 的处理。
你们的努力使项目更加强大——非常感谢!
如果你遵循 官方安装指南,则无需担心此问题。
版本 v14.0.0 更新了复制协议。如果你正在运行复制集群,需要:
- 首先,干净地停止所有节点
- 然后,使用 Linux 下的工具
manticore_new_cluster,以--new-cluster参数启动最后停止的节点。 - 详细信息请阅读关于 重启集群 的内容。
- 🆕 v14.1.0 Issue #3047 添加了对 mysqldump 生成的
LOCK TABLES语句的支持,提高了逻辑备份的安全性。 - ⚠️ v14.0.0 PR #3896 为复制 SST 中的捐赠者和加入者节点添加了 进度计量器,显示在 SHOW STATUS 中。
- 🆕 v13.16.0 PR #3894 将 buddy 从 3.36.1 更新到 3.37.0,新增了“quorum”选项。
- 🆕 v13.15.0 PR #3842 为模糊和自动完成插件添加了 force_bigrams 选项。
- 🪲 Issue #3994 添加了对 Grafana 版本 12.3 的测试。
- 🪲 v14.0.1 Issue #3844 修复了使用
max(ft field)导致的崩溃。 - 🪲 v13.15.13 PR #3828 修复了使用空过滤器名称时的错误。
- 🪲 v13.15.12 PR #3873 将 buddy 从 3.36.0 更新到 3.36.1,EmulateElastic 插件中增加了 RT 模式检查。
- 🪲 v13.15.11 PR #3857 添加了对 Filebeat 版本 9.2 的测试。
- 🪲 v13.15.10 PR #3880 修复后测试了自动文档翻译。
- 🪲 v13.15.9 Issue #3783 修复了阻止本地 FreeBSD 编译的问题。
- 🪲 v13.15.8 修复了文档翻译。
- 🪲 v13.15.7 PR #3868 将 executor 从 1.3.5 更新到 1.3.6,增加了对 iconv 扩展的支持。
- 🪲 v13.15.6 修复了与 issue 3817 相关的 fuzzer 构建问题。
- 🪲 v13.15.5 Issue #3644 修复了由特定全文查询导致的崩溃。
- 🪲 v13.15.4 Issue #3686 修复了全文查询
"(abc|def)"无法正常工作的情况。 - 🪲 v13.15.3 Issue #3428 增加了使用
HAVING查询时获取结果总数的功能。 - 🪲 v13.15.2 Issue #3817 添加了选项 searchd.expansion_phrase_warning。
- 🪲 v13.15.1 PR #3848 修复了复制事务密钥生成和冲突事务的处理。
- 🪲 v13.14.0 Issue #3806 修复了
CALL SUGGEST无法匹配三元组的问题。 - 🪲 v13.13.8 PR #3839 将 buddy 从 3.35.4 更新到 3.35.5,以修正 SQL 查询中匹配连接的正则表达式。
- 🪲 v13.13.7 Issue #3815 将 buddy 从 3.35.3 更新到 3.35.4,修复了 REPLACE 中负 ID 的问题。
- 🪲 v13.13.6 PR #3830 将 buddy 从 3.35.1 更新到 3.35.3。
- 🪲 v13.13.5 PR #3823 添加了 Grafana 集成测试。
- 🪲 v13.13.4 PR #3819 修复了在没有 Jieba 支持时
ParseCJKSegmentation的问题。 - 🪲 v13.13.3 PR #3808 修复了在右连接 JSON 查询中使用过滤器时的错误处理。
- 🪲 v13.13.2 PR #3789 验证了 KNN 参数。
- 🪲 v13.13.1 Issue #3800 修复了在无 cjk/jieba 支持下编译时的构建问题。
发布于:2025年10月7日
如果您遵循官方安装指南,则无需担心此问题。
由于配置文件已更新,在 Linux 升级过程中您可能会看到一个警告,询问是否保留您当前的版本或使用软件包中的新版本。如果您有自定义(非默认)配置,建议保留您的版本,并将 pid_file 路径更新为 /run/manticore/searchd.pid。不过,即使不更改路径,系统仍应正常工作。
- 🆕 v13.13.0 添加了对带有 SI 块缓存的 MCL 8.1.0 的支持。
- 🆕 v13.12.0 实现了 secondary_index_block_cache 选项,更新了二级索引 API,并内联了排序访问器。
- 🪲 v13.11.8 Issue #3791 修复了检查和调用已触发定时器之间的竞态条件。
- 🪲 v13.11.7 Issue #1045 通过将配置中的过时路径
/var/run/manticore替换为正确的/run/manticore,修复了 RHEL 8 在 systemd 更新期间的 systemctl 警告。由于配置文件已更新,升级时可能会看到警告,询问是否保留您当前的版本或使用软件包中的新版本。如果您有自定义(非默认)配置,建议保留您的版本,并将pid_file路径更新为/run/manticore/searchd.pid。 - 🪲 v13.11.6 PR #3766 添加了对 MCL 版本 8.0.6 的支持。
- 🪲 v13.11.5 PR #3767 改进了中文文档翻译并更新了子模块。
- 🪲 v13.11.4 PR #3765 修复了别名连接属性的处理。
- 🪲 v13.11.3 PR #3763 修复了在字符串属性的批量连接中可能发生的崩溃,并解决了过滤器有时在 LEFT JOIN 中不起作用的问题。
- 🪲 v13.11.2 Issue #3065 修复了在启用 index_field_lengths 的列式表中插入数据时的崩溃。
- 🪲 v13.11.1 Issue #3751 修复了启用嵌入时删除文档导致的崩溃。
发布于:2025年9月13日
- 🪲 v13.11.1 Issue #3751 修复了启用嵌入时删除文档导致的崩溃。
发布于:2025年9月13日
此次发布的主要亮点是自动嵌入——一项使语义搜索像SQL一样简单的新功能。 无需外部服务或复杂的管道:只需插入文本并使用自然语言进行搜索。
- 直接从文本自动生成嵌入
- 理解语义的自然语言查询,而不仅仅是关键词
- 支持多种模型(OpenAI、Hugging Face、Voyage、Jina)
- 与SQL和JSON API的无缝集成
如果您遵循官方安装指南,则无需担心这些。
推荐的 MCL 版本:8.0.1 推荐的 Buddy 版本:3.34.2
- 🆕 v13.11.0 PR #3746 在JSON查询中添加了“query”支持,用于嵌入生成。
- 🆕 v13.10.0 Issue #3709 manticore-server RPM包不再拥有
/run目录。 - 🆕 v13.9.0 PR #3716 在配置中添加了对
boolean_simplify的支持。 - 🆕 v13.8.0 Issue #3253 安装了sysctl配置以增加vm.max_map_count,适用于大型数据集。
- 🆕 v13.7.0 PR #3681 添加了对
alter table <table> modify column <column> api_key=<key>的支持。
- 🪲 v13.10.5 PR #3737 scroll选项现在能正确返回所有具有大64位ID的文档。
- 🪲 v13.10.4 PR #3736 修复了使用带过滤树的KNN时的崩溃问题。
- 🪲 v13.10.3 Issue #3520
/sql端点不再允许SHOW VERSION命令。 - 🪲 v13.10.2 PR #3637 更新了Windows安装脚本。
- 🪲 v13.10.1 修复了Linux上的本地时区检测。
- 🪲 v13.9.2 PR #3726 列式模式下重复ID现在正确返回错误。
- 🪲 v13.9.1 PR #3333 手册现已自动翻译。
- 🪲 v13.8.6 PR #3715 修复了当批处理中所有文档被跳过时的嵌入生成问题。
- 🪲 v13.8.5 PR #3711 添加了Jina和Voyage嵌入模型,以及其他自动嵌入相关的更改。
- 🪲 v13.8.4 PR #3710 修复了多面查询连接时的崩溃。
- 🪲 v13.8.3 修复了在_bulk端点多语句事务中删除/更新提交未计为错误的问题。
- 🪲 v13.8.2 PR #3705 修复了按非列式字符串属性连接时的崩溃,并改进了错误报告。
- 🪲 v13.8.1 PR #3704 修复了未指定模型时查询嵌入的崩溃;添加了嵌入字符串到主代理通信;添加了测试。
- 🪲 v13.7.2 PR #Buddy#589 移除了模糊搜索的默认IDF技巧。
- 🪲 v13.7.1 Issue #3454 修复了大64位ID的滚动解码错误。
- 🪲 v13.6.9 Issue #3674 修复了JDBC+MySQL驱动/连接池在transaction_read_only设置下的问题。
- 🪲 v13.6.8 PR #3676 修复了嵌入模型返回空结果集时的崩溃问题。
发布:2025年8月8日
推荐的 MCL 版本:8.0.1 推荐的 Buddy 版本:3.34.2
如果您遵循官方安装指南,则无需担心此问题。
- 🆕 v13.6.0 Issue #2226 支持在 PHRASE、PROXIMITY 和 QUORUM 操作符中显式使用 '|'(或)。
- 🆕 v13.5.0 PR #3591 查询中自动生成嵌入(进行中,尚未准备好用于生产环境)。
- 🆕 v13.4.0 PR #3585 修正逻辑,优先使用 buddy_path 配置中的 buddy 线程数(如果设置),而不是使用守护进程的值。
- 🆕 v13.3.0 PR #3577 支持与本地分布式表的连接。
- 🆕 #3647 添加对 Debian 13 “Trixie”的支持。
- 🪲 v13.6.7 Issue #3524 修复了在行存储中保存生成的嵌入时的问题。
- 🪲 v13.6.6 Issue #3563 修复了 Sequel Ace 和其他集成因“未知 sysvar”错误而失败的问题。
- 🪲 v13.6.5 Issue #3467 修复了 DBeaver 和其他集成因“未知 sysvar”错误而失败的问题。
- 🪲 v13.6.4 Issue #3524 修复了多字段嵌入拼接的问题;同时修复了查询中嵌入生成的问题。
- 🪲 v13.6.3 Issue #3641 修复了 13.6.0 版本中短语丢失除第一个外所有括号内关键字的错误。
- 🪲 v13.6.2 修复了 transform_phrase 中的内存泄漏。
- 🪲 v13.6.1 修复了 13.6.0 版本中的内存泄漏。
- 🪲 v13.5.2 Issue #3651 修复了与全文搜索模糊测试相关的更多问题。
- 🪲 v13.5.1 Issue #3560 修复了 OPTIMIZE TABLE 在使用 KNN 数据时可能无限挂起的情况。
- 🪲 v13.4.2 Issue #2544 修复了添加 float_vector 列可能导致索引损坏的问题。
- 🪲 v13.4.1 Issue #3651 添加了全文解析的模糊测试,并修复了测试中发现的多个问题。
- 🪲 v13.3.1 Issue #3583 修复了使用复杂布尔过滤器和高亮显示时的崩溃。
- 🪲 v13.2.7 Issue #3481 修复了 HTTP 更新、分布式表和错误复制集群同时使用时的崩溃。
- 🪲 v13.2.6 PR #3567 更新了 manticore-backup 依赖到版本 1.9.6。
- 🪲 v13.2.5 PR #3565 修复了 CI 设置以提升 Docker 镜像兼容性。
- 🪲 v13.2.4 修复了长词元的处理。一些特殊词元(如正则表达式模式)可能生成过长的词,因此现在在使用前会进行缩短。
发布:2025年7月8日
- ⚠️ PR #3586 停止支持 Debian 10 (Buster)。Debian 10 于 2024年6月30日停止维护。建议用户升级到 Debian 11 (Bullseye) 或 Debian 12 (Bookworm)。
- ⚠️ v13.0.0 更新了 KNN 库 API,以支持空的 float_vector 值。此更新不改变数据格式,但增加了 Manticore Search / MCL API 版本。
- ⚠️ v12.0.0 PR #3516 修复了 KNN 索引训练和构建过程中源和目标行 ID 不正确的错误。此更新不更改数据格式,但提高了 Manticore Search / MCL API 版本。
- ⚠️ v11.0.0 添加了对新的 KNN 向量搜索功能的支持,如量化、重评分和过采样。此版本更改了 KNN 数据格式和 KNN_DIST() SQL 语法。新版本可以读取旧数据,但旧版本无法读取新格式。
- 🆕 v13.2.0 PR #3549 修复了
@@collation_database的问题,该问题导致与某些 mysqldump 版本不兼容 - 🆕 v13.1.0 Issue #3489 修复了模糊搜索中的一个错误,该错误阻止了解析某些 SQL 查询
- 🆕 v12.1.0 Issue #3426 添加了对 RHEL 10 操作系统的支持
- 🆕 v11.1.0 添加了对 KNN 搜索 中空浮点向量的支持
- 🆕 v10.2.0 Issue #3252 log_level 现在也调整 Buddy 的日志详细程度
- 🪲 v13.2.3 PR #3556 修复了 JSON 查询中“过采样”选项的解析问题
- 🪲 v13.2.2 通过移除 Boost stacktrace 的使用,修复了 Linux 和 FreeBSD 上的崩溃日志记录问题
- 🪲 v13.2.1 Issue #3298 修复了在容器内运行时的崩溃日志记录问题
- 🪲 v12.0.2 通过以微秒计数,提高了每表统计的准确性
- 🪲 v12.0.1 PR #3522 修复了在联接查询中按 MVA 分面时的崩溃
- 🪲 v11.0.3 Issue #3502 修复了与向量搜索量化相关的崩溃
- 🪲 v11.0.2 Issue #3493 将
SHOW THREADS中的 CPU 利用率显示更改为整数 - 🪲 v11.0.1 修正了列式和二级库的路径
- 🪲 v10.2.7 添加了对 MCL 5.0.5 的支持,包括对嵌入库文件名的修复
- 🪲 v10.2.6 Issue #3469 针对问题 #3469 应用另一个修复
- 🪲 v10.2.4 Issue #3469 修复了带有布尔查询的 HTTP 请求返回空结果的问题
- 🪲 v10.2.5 更改了嵌入库的默认文件名,并添加了对 KNN 向量中 'from' 字段的检查
- 🪲 v10.2.3 PR #3464 将 Buddy 更新到版本 3.30.2,其中包括关于内存使用和错误日志的 PR #565
- 🪲 v10.2.2 Issue #3470 修复了 JOIN 查询中的 JSON 字符串过滤器、空过滤器和排序问题
- 🪲 v10.2.1 修复了
dist/test_kit_docker_build.sh中导致 Buddy 提交缺失的错误 - 🪲 v10.1.4 修复了在联接查询中按 MVA 分组时的崩溃
- 🪲 v10.1.3 Issue #3434 修复了过滤空字符串的错误
- 🪲 v10.1.2 PR #3452 更新 Buddy 至版本 3.29.7,解决了 Buddy #507 - 多查询请求中模糊搜索错误 和 Buddy #561 - 指标速率修复 问题,适用于 Helm Release 10.1.0
- 🪲 v10.1.1 更新 Buddy 至版本 3.29.4,解决了 #3388 - “未定义的数组键 'Field'” 和 Buddy #547 - layouts='ru' 可能无法工作
发布:2025年6月9日
此版本为更新版本,包含新功能、一个重大变更以及众多稳定性改进和错误修复。更改重点在于增强监控能力、改进搜索功能以及修复影响系统稳定性和性能的各种关键问题。
从版本 10.1.0 开始,不再支持 CentOS 7。建议用户升级到受支持的操作系统。
- ⚠️ v10.0.0 Issue #540 重大变更:将 模糊搜索 的默认
layouts=''
- 🆕 v10.1.0 Issue #537 新增内置的 Prometheus 导出器
- 🆕 v9.8.0 Issue #3409 新增 ALTER TABLE tbl REBUILD KNN 功能
- 🆕 v9.7.0 Issue #1778 新增自动生成嵌入功能(尚未正式发布,代码已合入主分支,但仍需更多测试)
- 🆕 v9.6.0 提升 KNN API 版本以支持自动嵌入
- 🆕 v9.5.0 Issue #1894 改进集群恢复:定期保存
seqno,加快节点崩溃后的重启速度 - 🆕 v9.4.0 Issue #2400 新增对最新 Logstash 和 Beats 的支持
- 🪲 v10.0.1 修复词形处理:用户定义的词形覆盖自动生成的词形;新增测试用例测试22
- 🪲 v9.8.2 修复:再次更新 deps.txt,包含与嵌入库相关的 MCL 打包修复
- 🪲 v9.8.1 修复:更新 deps.txt,修复 MCL 和嵌入库的打包问题
- 🪲 v9.7.3 Issue #3306 修复索引时信号11崩溃问题
- 🪲 v9.7.2 Issue #3109 修复不存在的
@@variables总是返回0的问题 - 🪲 v9.7.1 Issue #3377 修复与 remove_repeats() 相关的崩溃
- 🪲 v9.6.3 PR #3411 修复:使用动态版本检测以支持遥测指标
- 🪲 v9.6.2 修复:SHOW VERSION 输出的小问题
- 🪲 v9.6.1 修复:创建带有 KNN 属性但无模型的表时崩溃
- 🪲 v9.5.16 Issue #3342 修复
SELECT ... FUZZY=0不总是禁用模糊搜索的问题 - 🪲 v9.5.15 PR #3397 新增对 MCL 4.2.2 的支持;修复旧存储格式错误
- 🪲 v9.5.14 Issue #3392 修复 HTTP JSON 回复中字符串处理错误
- 🪲 v9.5.13 Issue #3356 修复复杂全文查询(公共子词)情况下的崩溃问题
- 🪲 v9.5.12 修正了磁盘块自动刷新错误消息中的拼写错误
- 🪲 v9.5.11 Issue #3195 改进了自动磁盘块刷新:如果正在运行优化,则跳过保存
- 🪲 v9.5.10 Issue #3313 修复了使用indextool检查RT表中所有磁盘块重复ID的问题
- 🪲 v9.5.9 Issue #3132 在JSON API中添加了对
_random排序的支持 - 🪲 v9.5.8 Issue #3382 修复了无法通过JSON HTTP API使用uint64文档ID的问题
- 🪲 v9.5.7 Issue #3385 修正了按
id != value过滤时结果不正确的问题 - 🪲 v9.5.6 PR #538 修复了某些情况下模糊匹配的严重错误
- 🪲 v9.5.5 Issue #3199 修复了Buddy HTTP查询参数中的空格解码问题(例如
%20和+) - 🪲 v9.5.4 Issue #3133 修正了facet搜索中
json.field排序不正确的问题 - 🪲 v9.5.3 Issue #3091 修复了SQL与JSON API中分隔符搜索结果不一致的问题
- 🪲 v9.5.2 Issue #2819 性能改进:将分布式表的
DELETE FROM替换为TRUNCATE - 🪲 v9.5.1 Issue #3080 修复了使用JSON属性过滤别名
geodist()时的崩溃问题
发布日期:2025年5月2日
本次发布包含多个错误修复和稳定性改进,更好的表使用跟踪,以及内存和资源管理的增强。
❤️ 特别感谢 @cho-m 修复了与Boost 1.88.0的构建兼容性问题,以及 @benwills 改进了关于stored_only_fields的文档。
-
🪲 v9.3.2 修复了“显示线程”列显示CPU活动为浮点数而非字符串的问题;同时修正了PyMySQL结果集解析错误,原因是数据类型错误。
-
🪲 v9.3.1 Issue #3343 修复了优化过程被中断时遗留的
tmp.spidx文件问题。 -
🪲 v9.2.39 Issue #3236 修复:通过移除复杂块更新防止表损坏。在串行工作线程中使用等待函数破坏了串行处理,可能导致表损坏。 重新实现了自动刷新。移除了外部轮询队列以避免不必要的表锁。新增“小表”条件:如果文档数低于“小表限制”(8192)且未使用二级索引(SI),则跳过刷新。
-
🪲 v9.2.38 修复:跳过为使用
ALL/ANY字符串列表过滤器创建二级索引(SI),不影响JSON属性。 -
🪲 v9.2.37 Issue #2898 为系统表添加了反引号支持。
-
🪲 v9.2.36 修复:在旧代码中为集群操作使用占位符。在解析器中,我们现在清晰区分表名和集群名字段。
-
🪲 v9.2.35 修复:取消引用单个
'时崩溃。 -
🪲 v9.2.34 Issue #3090 修复:大文档ID处理(之前可能无法找到)。
-
🪲 v9.2.33 修复:位向量大小使用无符号整数。
-
🪲 v9.2.32 修复:减少合并期间的峰值内存使用。docid到rowid的查找现在每个文档使用12字节,而非16字节。例如:20亿文档使用24 GB内存,而非36 GB。
-
🪲 v9.2.31 Issue #3238 修复:大型实时表中
COUNT(*)值不正确的问题。 -
🪲 v9.2.30 修复:清零字符串属性时的未定义行为。
-
🪲 v9.2.29 小修正:改进了警告文本。
-
🪲 v9.2.28 Issue #3290 改进:增强了
indextool --buildidf -
🪲 v9.2.27 Issue #3032 通过 Kafka 集成,现在可以为特定 Kafka 分区创建数据源。
-
🪲 v9.2.26 Issue #3301 修复:
ORDER BY和WHERE在id上可能导致 OOM(内存溢出)错误。 -
🪲 v9.2.25 Issue #3171 修复:在 RT 表上使用带有多个 JSON 属性的 grouper 并且该表有多个磁盘块时导致的段错误崩溃。
-
🪲 v9.2.24 Issue #3246 修复:
WHERE string ANY(...)查询在 RAM 块刷新后失败。 -
🪲 v9.2.22 Issue #2763 修复:使用
ALTER TABLE时未加载全局 idf 文件。 -
🪲 v9.2.21 修复:全局 idf 文件可能很大。我们现在更早释放表以避免持有不必要的资源。
-
🪲 v9.2.18 Issue #3228 修复:分布式表创建时崩溃(无效指针问题)。
-
🪲 v9.2.16 Issue #3063 修复:使用
GEODIST函数时距离计算的错误。 -
🪲 v9.2.15 Issue #3027 小幅改进:支持 Elastic 的
query_string过滤格式。
发布:2025年3月28日
- 提交 实现了
--mockstack标志,用于计算递归操作的栈需求。新的--mockstack模式分析并报告递归表达式求值、模式匹配操作、过滤处理所需的栈大小。计算出的栈需求输出到控制台,便于调试和优化。 - Issue #3058 默认启用 boolean_simplify。
- Issue #3172 添加了新的配置选项:
searchd.kibana_version_string,当使用特定版本的 Kibana 或 OpenSearch Dashboards 并期望特定 Elasticsearch 版本时非常有用。 - Issue #3211 修复了 CALL SUGGEST 以支持 2 字符单词。
- Issue #490 改进了 模糊搜索:之前在搜索 "def ghi" 时,如果存在另一个匹配文档,有时无法找到 "defghi"。
- ⚠️ 重大变更 Issue #3165 在部分 HTTP JSON 响应中将
_id改为id以保持一致性。请确保相应更新您的应用程序。 - ⚠️ 重大变更 Issue #3186 在集群加入时增加了对
server_id的检查,以确保每个节点具有唯一的 ID。现在,当加入节点的server_id与集群中已有节点的server_id相同时,JOIN CLUSTER操作可能会失败并显示重复 server_id 的错误信息。为解决此问题,请确保复制集群中的每个节点具有唯一的 server_id。您可以在配置文件的 "searchd" 部分将默认的 server_id 更改为唯一值,然后再尝试加入集群。此更改更新了复制协议。如果您正在运行复制集群,需要:- 首先,干净地停止所有节点
- 然后,使用 Linux 下的工具
manticore_new_cluster,以--new-cluster参数启动最后停止的节点。 - 详细信息请参阅 重启集群。
- Commit 6fda 修复了等待后调度器丢失导致的崩溃;现在,像
serializer这样的特定调度器能够正确恢复。 - Commit c333 修复了右表权重无法在
ORDER BY子句中使用的错误。 - Issue #2644 gcc 14.2.0:修复了
lower_bound调用时const knn::DocDist_t*&的错误。❤️ 感谢 @Azq2 的 PR。 - Issue #3018 修复了自动模式插入时处理大写表名的问题。
- Issue #3119 修复了解码无效 base64 输入时的崩溃。
- Issue #3121 修复了两个与 KNN 索引 ALTER 相关的问题:浮点向量现在保持原始维度,KNN 索引生成正确。
- Issue #3123 修复了在空 JSON 列上构建二级索引时的崩溃。
- Issue #3138 修复了由重复条目引起的崩溃。
- Issue #3151 修复了
fuzzy=1选项无法与ranker或field_weights一起使用的问题。 - Issue #3163 修复了
SET GLOBAL timezone无效的错误。 - Issue #3181 修复了使用大于 2^63 的 ID 时文本字段值可能丢失的问题。
- Issue #3189 修复了
UPDATE语句现在正确遵守query_log_min_msec设置的问题。 - Issue #3247 修复了保存实时磁盘块时的竞态条件,可能导致
JOIN CLUSTER失败。
发布:2025年2月28日
- Issue #832 集成了 Kibana,实现更简便高效的数据可视化。
- Issue #1727 修复了 arm64 和 x86_64 之间的浮点精度差异。
- Issue #2995 实现了 join 批处理的性能优化。
- Issue #3039 实现了直方图中 EstimateValues 的性能优化。
- Issue #3099 增加了对 Boost 1.87.0 的支持。❤️ 感谢 @cho-m 的 PR。
- Issue #77 优化了创建多值过滤器时的块数据重用;为属性元数据添加了最小/最大值;实现了基于最小/最大值的过滤值预过滤。
- Commit 73ac 修复了在连接查询中使用左右表属性时表达式的处理;修复了右表的 index_weights 选项。
- Issue #2915 在
SELECT ... JOIN查询中使用avg()可能导致结果错误;现已修复。 - Issue #2996 修复了启用 join 批处理时隐式截断导致的错误结果集。
- Issue #3031 修复了守护进程关闭时活跃块合并导致的崩溃。
- Issue #3037 修复了
IN(...)可能产生错误结果的问题。 - Issue #3038 7.0.0 版本中设置
max_iops/max_iosize可能降低索引性能;现已修复。 - Issue #3042 修复了连接查询缓存中的内存泄漏。
- Issue #3052 修复了连接 JSON 查询中查询选项的处理。
- Issue #3054 修复了 ATTACH TABLE 命令的问题。
- Issue #3079 修正了错误信息中的不一致问题。
- Issue #3087 每个表设置
diskchunk_flush_write_timeout=-1未能禁用索引刷新;现已修复。 - Issue #3088 解决了批量替换大ID后出现的重复条目问题。
- Issue #3126 修复了由单个
NOT操作符和表达式排序器的全文查询导致的守护进程崩溃。 - Issue #3128 修复了CJSON库中的潜在漏洞。❤️ 感谢 @tabudz 的PR。
发布:2025年1月30日
- Issue #1497 新增了便于搜索的 模糊搜索 和 自动补全 功能。
- Issue #1500 Kafka 集成。
- Issue #1928 引入了 JSON 的二级索引。
- Issue #2361 更新和更新期间的搜索不再被块合并阻塞。
- Issue #2787 实时表的自动 磁盘块刷新 以提升性能;现在我们会自动将内存块刷新到磁盘块,防止因内存块缺乏优化而导致的性能问题,这有时会根据块大小导致不稳定。
- Issue #2811 新增了便于分页的 滚动 选项。
- Issue #931 集成了 Jieba 以改善 中文分词。
- ⚠️ 破坏性变更 Issue #1111 修复了实时表中对
global_idf的支持。需要重新创建表。 - ⚠️ 破坏性变更 Issue #2103 从内部
cjk字符集移除了泰文字符。请相应更新您的字符集定义:如果您有cjk,non_cjk并且泰文字符对您很重要,请改为cjk,thai,non_cjk,或使用cont,non_cjk,其中cont是所有连续书写语言(即cjk+thai)的新标识。使用 ALTER TABLE 修改现有表。 - ⚠️ 破坏性变更 Issue #2468 CALL SUGGEST / QSUGGEST 现支持分布式表。这增加了主/代理协议版本。如果您在多实例分布式环境中运行 Manticore Search,请确保先升级代理,再升级主节点。
- ⚠️ 破坏性变更 Issue #2889 PQ SHOW META 的列名由
Name改为Variable name。 - ⚠️ 破坏性变更 Issue #879 引入了带有新选项的 每表二进制日志:binlog_common、binlog 用于
create table/alter table。升级到新版本前需干净关闭 Manticore 实例。 - ⚠️ 破坏性变更 Issue #1789 修正了节点以错误的复制协议版本加入集群时的错误信息。此更改更新了复制协议。如果您运行复制集群,需要:
- 首先,干净停止所有节点
- 然后,使用 Linux 下的工具
manticore_new_cluster,以--new-cluster参数启动最后停止的节点。 - 详情请参阅 重启集群。
- ⚠️ 破坏性变更 Issue #2308 在
ALTER CLUSTER ADD和DROP中增加了对多表的支持。此更改也影响复制协议。请参考前一节了解如何处理此更新。 - Issue #2997 修复了 Macos 上的 dlopen 问题。
- Commit 4954 更改了带有 KNN 索引的表的 OPTIMIZE TABLE 默认截止点,以提升搜索性能。
- Commit cfc8 为
FACET和GROUP BY中的ORDER BY添加了COUNT(DISTINCT)支持。 - Issue #1103 改进了 日志 中块合并的清晰度。
- Issue #1130 添加了对 DBeaver 的支持。
- Issue #1546 为 POLY2D()/GEOPOLY2D() 函数实现了二级索引。
- Issue #1630 HTTP 请求现在支持
Content-Encoding: gzip。 - Issue #1831 添加了
SHOW LOCKS命令。 - Issue #2187 允许 Buddy 请求绕过守护进程的 searchd.max_connections 限制。
- Issue #2208 增加了通过 JSON HTTP 接口连接表的支持。
- Issue #2235 通过 Buddy 以原始形式记录成功处理的查询。
- Issue #2249 为复制表添加了运行
mysqldump的特殊模式。 - Issue #2268 改进了
CREATE TABLE和ALTER TABLE语句中外部文件的重命名复制操作。 - Issue #2402 更新了 searchd.max_packet_size 的默认值为 128MB。
- Issue #2419 在 JSON "match" 中添加了对 IDF boost modifier 的支持。
- Issue #2430 加强了 binlog 写入同步以防止错误。
- Issue #2458 在 Windows 包中集成了 zlib 支持。
- Issue #2479 添加了对 SHOW TABLE INDEXES 命令的支持。
- Issue #2485 为 Buddy 回复设置了会话元数据。
- Issue #2490 兼容端点的聚合支持毫秒级分辨率。
- Issue #2500 当复制启动失败时,修改了集群操作的错误消息。
- Issue #2584 新增 SHOW STATUS 中的性能指标:最近 1、5 和 15 分钟内每种查询类型的最小/最大/平均/95%/99% 百分位数。
- Issue #2639 在请求和响应中将所有
index替换为table。 - Issue #2643 在 HTTP
/sql端点的聚合结果中添加了distinct列。 - Issue #268 实现了从 Elasticsearch 导入数据类型的自动检测。
- Issue #2744 为字符串 JSON 字段比较表达式添加了排序规则支持。
- Issue #2752 支持在选择列表中使用
uuid_short表达式。 - Issue #2783 Manticore Search 现在直接运行 Buddy,无需
manticore-buddy包装器。 - Issue #2785 区分了缺少表和不支持插入操作的表的错误消息。
- Issue #2789 OpenSSL 3 现已静态编译进
searchd。 - Issue #2790 添加了
CALL uuid_short语句,用于生成包含多个uuid_short值的序列。 - Issue #2803 为 JOIN 操作中的右表添加了单独的选项。
- Issue #2810 改进了 HTTP JSON 聚合性能,使其与 SphinxQL 中的
GROUP BY相匹配。 - Issue #2854 支持 Kibana 日期相关请求中的
fixed_interval。 - Issue #2909 实现了 JOIN 查询的批处理,显著提升了某些 JOIN 查询的性能,提升幅度达数百甚至数千倍。
- Issue #2937 允许在 fullscan 查询中使用连接表的权重。
- Issue #2953 修复了连接查询的日志记录。
- Issue #337 在非调试模式下隐藏了 Buddy 异常,不再显示在
searchd日志中。 - Issue #2931 当用户为复制监听器设置错误端口时,守护进程关闭并显示错误消息。
- Commit 0c6b 修复:当 JOIN 查询中列数超过 32 时返回错误结果。
- Issue #2335 解决了当条件中使用两个 json 属性时表连接失败的问题。
- Issue #2338 修正了带有 cutoff 的多查询中 total_relation 计算错误的问题。
- Issue #2366 修正了在 表连接 中对右表
json.string的过滤。 - Issue #2406 允许在任何 POST HTTP JSON 端点(insert/replace/bulk)中使用
null作为所有值,此时会使用默认值。 - Issue #2418 通过调整初始 socket 探测的 max_packet_size 网络缓冲区分配,优化了内存消耗。
- Issue #2420 修正了通过 JSON 接口将无符号整数插入 bigint 属性的问题。
- Issue #2422 修正了启用 pseudo_sharding 时,二级索引与排除过滤器配合使用的问题。
- Issue #2423 解决了 manticore_new_cluster 中的一个错误。
- Issue #2448 解决了在格式错误的
_update请求时守护进程崩溃的问题。 - Issue #2452 修正了直方图无法处理带排除的值过滤器的问题。
- Issue #55 修正了针对分布式表的 knn 查询。
- Issue #68 增强了列存访问器中对表编码的排除过滤器处理。
- Commit 0eb1 修正了表达式解析器未遵守重新定义的
thread_stack的问题。 - Commit c304 修正了克隆列存 IN 表达式时的崩溃。
- Commit edad 修正了位图迭代器中的反转问题,该问题导致崩溃。
- Commit fc30 修正了部分 Manticore 软件包被
unattended-upgrades自动移除的问题。 - Issue #1019 改进了对 DbForge MySQL 工具发起查询的处理。
- Issue #1107 修正了
CREATE TABLE和ALTER TABLE中特殊字符的转义。❤️ 感谢 @subnix 的 PR。 - Issue #116 修正了在冻结索引中更新 blob 属性时的死锁。死锁是由于尝试解冻索引时锁冲突引起的,也可能导致 manticore-backup 失败。
- Issue #1818 当表被冻结时,
OPTIMIZE现在会抛出错误。 - Issue #2001 允许函数名用作列名。
- Issue #2153 修正了查询表设置时遇到未知磁盘块导致守护进程崩溃的问题。
- Issue #2184 修正了
searchd在执行FREEZE和FLUSH RAMCHUNK后停止时挂起的问题。 - Issue #2228 从保留字中移除了日期/时间相关的标记(及正则表达式)。
- Issue #2255 修正了
FACET使用超过 5 个排序字段时的崩溃。 - Issue #2265 修正了启用
index_field_lengths时无法恢复mysqldump的问题。 - Issue #2291 修正了执行
ALTER TABLE命令时的崩溃。 - Issue #2333 修正了 Windows 包中 MySQL DLL 使索引器正常工作的错误。
- Issue #2393 修正了 GCC 编译错误。❤️ 感谢 @animetosho 的 PR。
- Issue #2447 修正了 _update 中的转义问题。
- Issue #2460 修正了声明多个同名属性或字段时索引器崩溃的问题。
- Issue #2467 解决了针对“兼容”搜索相关端点的嵌套布尔查询错误转换导致守护进程崩溃的问题。
- Issue #2493 修正了带修饰符短语中的扩展问题。
- Issue #2535 解决了使用 ZONE 或 ZONESPAN 全文操作符时守护进程崩溃的问题。
- Issue #2552 修正了带关键词字典的普通表和 RT 表的中缀生成问题。
- Issue #2571 修复了
FACET查询中的错误回复;为带有COUNT(*)的FACET设置默认排序顺序为DESC。 - Issue #2580 修复了 Windows 启动时守护进程崩溃的问题。
- Issue #2603 修复了 HTTP 端点
/sql和/sql?mode=raw的查询截断问题;使这些端点的请求一致,无需query=头。 - Issue #2623 修复了自动模式创建表但同时失败的问题。
- Issue #2627 修复了 HNSW 库以支持加载多个 KNN 索引。
- Issue #2630 修复了多个条件同时发生时的冻结问题。
- Issue #2645 修复了使用
OR与 KNN 搜索时导致的致命错误崩溃。 - Issue #2647 修复了
indextool --mergeidf *.idf --out global.idf在创建输出文件后删除该文件的问题。 - Issue #2658 修复了带有外层选择中
ORDER BY字符串的子选择导致守护进程崩溃的问题。 - Issue #2686 修复了更新浮点属性和字符串属性时的崩溃问题。
- Issue #2704 修复了
lemmatize_xxx_all分词器中多个停用词增加后续标记hitpos的问题。 - Issue #2708 修复了
ALTER ... ADD COLUMN ... TEXT时的崩溃。 - Issue #2737 修复了在至少有一个 RAM 块的冻结表中更新 blob 属性导致后续
SELECT查询等待表解冻的问题。 - Issue #2742 修复了带有打包因子的查询跳过查询缓存的问题。
- Issue #2775 Manticore 现在在
_bulk请求中遇到未知操作时报告错误,而不是崩溃。 - Issue #2791 修复了 HTTP
_bulk端点返回插入文档 ID 的问题。 - Issue #2797 修复了在处理多个表时,某个表为空且另一个表匹配条目数不同导致 grouper 崩溃的问题。
- Issue #2835 修复了复杂
SELECT查询中的崩溃。 - Issue #2872 添加了错误信息,当
IN表达式中的ALL或ANY参数不是 JSON 属性时提示错误。 - Issue #2882 修复了在大表中更新 MVA 时守护进程崩溃的问题。
- Issue #2888 修复了
libstemmer分词失败时的崩溃。❤️ 感谢 @subnix 的 PR。 - Issue #2919 修复了右表连接权重在表达式中未正确工作的情况。
- Issue #2919 修复了右连接表权重在表达式中不起作用的问题。
- Issue #325 修复了当表已存在时,
CREATE TABLE IF NOT EXISTS ... WITH DATA失败的问题。 - Issue #351 修复了按 KNN 使用文档 ID 计数时出现的未定义数组键 "id" 错误。
- Issue #359 修复了
REPLACE INTO cluster_name:table_name功能。 - Issue #67 修复了使用
--network=host运行 Manticore Docker 容器时的致命错误。
发布:2024年11月22日
版本 6.3.8 继续 6.3 系列,仅包含错误修复。
- PR #2777 修复了当查询并发受
threads或max_threads_per_query设置限制时可用线程数的计算。
发布:2024年10月7日
- Issue #64 解决了
unattended-upgrades工具在基于 Debian 的系统上自动安装软件包更新时,错误地将多个 Manticore 软件包(包括manticore-galera、manticore-executor和manticore-columnar-lib)标记为删除的问题。该问题是由于dpkg错误地将虚拟包manticore-extra视为冗余。已做出更改,确保unattended-upgrades不再尝试删除关键的 Manticore 组件。
发布:2024年8月2日
版本 6.3.6 继续 6.3 系列,仅包含错误修复。
- Issue #2477 修复了 6.3.4 版本引入的崩溃,该崩溃可能在处理表达式和分布式或多表时发生。
- Issue #2352 修复了因
max_query_time导致查询多个索引时提前退出引起的守护进程崩溃或内部错误。
发布:2024年7月31日
版本 6.3.4 继续 6.3 系列,仅包含小幅改进和错误修复。
- Issue #1130 添加了对 DBeaver 的支持。
- Issue #2146 改进了词形和例外中分隔符的转义。
- Issue #2315 在 SELECT 列表达式中添加了字符串比较运算符。
- Issue #2363 添加了对 Elastic 风格批量请求中 null 值的支持。
- Issue #2374 添加了对 mysqldump 版本 9 的支持。
- Issue #2375 改进了 HTTP JSON 查询中的错误处理,增加了错误发生节点的 JSON 路径。
- Issue #2280 修复了当 disk_chunks > 1 时,通配符查询匹配项多导致的性能下降问题。
- Issue #2332 修复了空 MVA 数组在 MVA MIN 或 MAX SELECT 列表达式中导致的崩溃。
- Issue #2339 修复了 Kibana 无限范围请求的错误处理。
- Issue #2342 修复了当属性不在 SELECT 列表中时,右表的列式属性上的连接过滤器问题。
- Issue #2343 修复了 Manticore 6.3.2 中重复的 'static' 说明符。
- Issue #2344 修复了使用 MATCH() 作用于右表时,LEFT JOIN 返回非匹配条目的问题。
- Issue #2350 修复了带有
hitless_words的 RT 索引磁盘块保存问题。 - Issue #2364 现在 'aggs_node_sort' 属性可以在其他属性中任意顺序添加。
- Issue #2368 修复了 JSON 查询中全文与过滤器顺序错误的问题。
- Issue #2376 修复了长 UTF-8 请求导致的 JSON 响应错误的 bug。
- Issue #2684 修复了依赖连接属性的 presort/prefilter 表达式计算错误。
- Issue #301 修改了指标数据大小的计算方法,改为从
manticore.json文件读取,而非检查整个数据目录大小。 - Issue #302 添加了对 Vector.dev 验证请求的处理。
发布:2024年6月26日
版本 6.3.2 继续 6.3 系列,包含多个 bug 修复,其中一些是在 6.3.0 发布后发现的。
- ⚠️Issue #2305 更新了 aggs.range 的值为数值类型。
- Commit c51c 修复了存储检查与 rset 合并时的分组问题。
- Commit 0e85 修复了在 RT 索引中使用 CRC 字典和启用
local_df时,带通配符查询导致守护进程崩溃的问题。 - Issue #2200 修复了在没有 GROUP BY 的 JOIN 中使用
count(*)导致的崩溃。 - Issue #2201 修复了尝试按全文字段分组时,JOIN 未返回警告的问题。
- Issue #2230 解决了通过
ALTER TABLE添加属性时未考虑 KNN 选项的问题。 - Issue #2231 修复了 6.3.0 版本中无法卸载
manticore-toolsRedhat 包的问题。 - Issue #2242 修正了 JOIN 和多个 FACET 语句返回错误结果的问题。
- Issue #2250 修复了当表在集群中时,ALTER TABLE 报错的问题。
- Issue #2252 修复了 SphinxQL 接口传递给 buddy 的原始查询问题。
- Issue #2267 改进了带磁盘块的 RT 索引中
CALL KEYWORDS的通配符扩展。 - Issue #271 修复了错误的
/cli请求导致的挂起。 - Issue #274 解决了对 Manticore 的并发请求可能卡住的问题。
- Issue #275 修复了通过
/cli执行drop table if exists t; create table t导致的挂起。
- Issue #2270 在
/_bulkHTTP 端点中添加了对cluster:name格式的支持。
发布:2024年5月23日
- Issue #839 实现了 float_vector 数据类型;实现了 向量搜索。
- Issue #1673 实现了 INNER/LEFT JOIN(测试阶段)。
- Issue #1744 实现了对 timestamp 字段日期格式的自动检测。
- Issue #1720 将 Manticore Search 许可证从 GPLv2-or-later 更改为 GPLv3-or-later。
- Commit 7a55 现在在 Windows 上运行 Manticore 需要 Docker 来运行 Buddy。
- Issue #1541 添加了一个 REGEX 全文操作符。
- Issue #2091 支持 Ubuntu Noble 24.04。
- Commit 514d 重构时间操作以提升性能并新增日期/时间函数:
- CURDATE() - 返回本地时区的当前日期
- QUARTER() - 返回时间戳参数对应的年份季度整数
- DAYNAME() - 返回时间戳参数对应的星期名称
- MONTHNAME() - 返回时间戳参数对应的月份名称
- DAYOFWEEK() - 返回时间戳参数对应的星期整数索引
- DAYOFYEAR() - 返回时间戳参数对应的年份中的天数整数
- YEARWEEK() - 返回时间戳参数对应的年份整数及当前周第一天的日期代码
- DATEDIFF() - 返回两个时间戳之间的天数差
- DATE() - 格式化时间戳参数的日期部分
- TIME() - 格式化时间戳参数的时间部分
- timezone - 日期/时间相关函数使用的时区。
- Commit 30e7 向 HTTP 接口添加了 range、histogram、date_range 和 date_histogram 聚合,并将类似表达式引入 SQL。
- Issue #1285 支持 Filebeat 版本 8.10 - 8.11。
- Issue #1771 支持 ALTER TABLE ... type='distributed'。
- Issue #1788 通过 CREATE TABLE ... LIKE ... WITH DATA SQL 语句新增复制表的功能。
- Issue #2072 优化了 表压缩算法:之前,手动的 OPTIMIZE 和自动的 auto_optimize 过程都会先合并数据块以确保数量不超过限制,然后从所有包含已删除文档的数据块中清除已删除文档。此方法有时资源消耗过大,现已禁用。现在,数据块合并仅根据 progressive_merge 设置进行。但包含大量已删除文档的数据块更可能被合并。
- Commit ce6c 增加了防止加载新版二级索引的保护。
- Issue #1417 通过 REPLACE INTO ... SET 实现部分替换。
- Commit 7c16 更新了默认合并缓冲区大小:
.spa(标量属性):256KB -> 8MB;.spb(blob 属性):256KB -> 8MB;.spc(列式属性):1MB,未变;.spds(文档存储):256KB -> 8MB;.spidx(二级索引):256KB 缓冲区 -> 128MB 内存限制;.spi(字典):256KB -> 16MB;.spd(文档列表):8MB,未变;.spp(命中列表):8MB,未变;.spe(跳跃列表):256KB -> 8MB。 - Issue #1859 通过 JSON 添加了 复合聚合。
- Commit 216b 由于某些正则表达式模式存在问题且无显著时间优势,禁用了 PCRE.JIT。
- Commit 55cd 添加了对原生 Galera v.3(api v25)(MySQL 5.x 的
libgalera_smm.so)的支持。 - Commit 86f9 将指标后缀从
_rate改为_rps。 - Commit c0c1 改进了关于负载均衡器高可用性支持的文档。
- 提交 d1d2 将错误消息中的
index改为table;修复了 bison 解析器错误消息。 - 提交 fd26 支持将
manticore.tbl作为表名。 - 问题 #1105 支持通过 systemd 运行索引器 (文档)。❤️ 感谢 @subnix 的 PR。
- 问题 #1294 GEODIST() 中支持二级索引。
- 问题 #1394 简化了 SHOW THREADS。
- 问题 #1424 为
create distributed table语句添加了默认值支持(agent_connect_timeout和agent_query_timeout)。 - 问题 #1442 添加了 expansion_limit 搜索查询选项,可覆盖
searchd.expansion_limit。 - 问题 #1448 实现了 ALTER TABLE 用于 int->bigint 转换。
- 问题 #1456 MySQL 响应中添加元信息。
- 问题 #1494 SHOW VERSION。
- 问题 #1582 支持通过 JSON 按 id 数组删除文档 (文档)。
- 问题 #1589 改进错误信息“unsupported value type”。
- 问题 #1634 在
SHOW STATUS中添加 Buddy 版本。 - 问题 #1641 针对关键词无文档情况优化匹配请求。
- 问题 #1712 在提交数据时添加从字符串 "true" 和 "false" 转换为布尔属性的支持。
- 问题 #1713 添加了 access_dict 表和 searchd 选项。
- 问题 #1767 在配置的 searchd 部分添加了新选项:expansion_merge_threshold_docs 和 expansion_merge_threshold_hits;使扩展词的微小词合并阈值可配置。
- 问题 #1768 在
@@system.sessions中添加显示最后命令时间。 - 问题 #1806 升级 Buddy 协议至版本 2。
- 问题 #1810 为
/sql端点实现了额外的请求格式,便于与库集成。 - 问题 #1825 在 SHOW BUDDY PLUGINS 中添加信息部分。
- 问题 #1837 改进了
CALL PQ处理大包时的内存消耗。 - 问题 #1853 编译器从 Clang 15 切换到 Clang 16。
- 问题 #1857 添加字符串比较。❤️ 感谢 @etcd 的 PR。
- 问题 #1915 添加对连接存储字段的支持。
- 问题 #1937 在查询日志中记录客户端的 host:port。
- 问题 #1981 修正错误的错误信息。
- 问题 #1983 引入了针对 通过 JSON 的查询计划 的详细级别支持。
- 问题 #2010 除非设置了
log_level=debug,否则禁用 Buddy 查询的日志记录。 - 问题 #2035 支持 Linux Mint 21.3。
- 问题 #2056 Manticore 无法用 Mysql 8.3+ 构建。
- 问题 #2112 针对实时表块添加
DEBUG DEDUP命令,用于处理附加包含重复项的普通表后可能出现的重复条目。 - 问题 #212 在 SHOW QUERIES 中添加时间。
- 问题 #218 将
@timestamp列处理为时间戳。 - 问题 #252 实现启用/禁用 buddy 插件的逻辑。
- 问题 #254 更新 composer 至修复了近期 CVE 的较新版本。
- Issue #340 Manticore systemd 单元中与
RuntimeDirectory相关的轻微优化。 - Issue #51 添加了 rdkafka 支持并更新到 PHP 8.3.3。
- Issue #527 支持附加 RT 表。新增命令 ALTER TABLE ... RENAME。
- ⚠️Issue #1436 修正了 IDF 计算问题。
local_df现在为默认值。改进了主从搜索协议(版本已更新)。如果您在分布式环境中运行多个 Manticore Search 实例,请确保先升级代理,再升级主节点。 - ⚠️Issue #1572 添加了分布式表的复制功能并更新了复制协议。如果您运行复制集群,需要:
- 首先,干净地停止所有节点
- 然后,使用 Linux 下的工具
manticore_new_cluster,以--new-cluster参数启动最后停止的节点。 - 详细信息请参阅重启集群。
- ⚠️Issue #1763 HTTP API 端点别名
/json/*已被废弃。 - ⚠️Issue #1982 JSON 中将profile 改为 plan,并新增了 JSON 查询分析功能。
- ⚠️Commit e235 manticore-backup 不再备份
plugin_dir。 - ⚠️Issue #171 将 Buddy 迁移到 Swoole 以提升性能和稳定性。切换到新版本时,请确保所有 Manticore 包均已更新。
- ⚠️Issue #196 将所有核心插件合并到 Buddy 中,并更改了核心逻辑。
- ⚠️Issue #2107 在
/search响应中将文档 ID 视为数字。 - ⚠️Issue #38 添加了 Swoole,禁用了 ZTS,并移除了 parallel 扩展。
- ⚠️Issue #1929 在某些情况下,
charset_table中的覆盖未生效。
- Commit 3376 修复了大文件 SST 复制错误。
- Commit 6d36 为复制命令添加了重试机制;修复了网络繁忙且丢包时复制加入失败的问题。
- Commit 842e 将复制中的 FATAL 消息改为 WARNING 消息。
- Commit 8c32 修正了无表或空表的复制集群中
gcache.page_size的计算;同时修复了 Galera 选项的保存和加载。 - Commit a2af 新增功能,跳过加入集群节点上的更新节点复制命令。
- Commit c054 修复了更新 blob 属性与替换文档时复制过程中的死锁。
- Commit e80d 添加了 replication_connect_timeout、replication_query_timeout、replication_retry_delay、replication_retry_count 等 searchd 配置选项,用于控制复制期间的网络,类似于
searchd.agent_*,但默认值不同。 - Issue #1356 修复了复制节点在部分节点丢失且名称解析失败后的重试问题。
- Issue #1445 修正了
show variables中复制日志的详细级别。 - Issue #1482 修复了 Kubernetes 中 pod 重启时加入节点连接集群的复制问题。
- Issue #1962 修复了空集群中无效节点名导致复制修改长时间等待的问题。
- Commit 8a48 修复了
count distinct中未使用匹配项清理可能导致崩溃的问题。 - Issue #1569 二进制日志现在以事务粒度写入。
- Issue #2089 修复了与64位ID相关的一个错误,该错误可能导致通过MySQL插入时出现“Malformed packet”错误,进而导致表损坏和ID重复。
- Issue #2160 修正了日期被插入时错误地当作UTC时间而非本地时区的问题。
- Issue #2177 修复了在实时表中使用非空的
index_token_filter执行搜索时发生的崩溃。 - Issue #2209 更改了RT列存储中的重复过滤,修复了崩溃和错误的查询结果。
- Commit 001d 修复了html剥离器在处理连接字段后导致内存损坏的问题。
- Commit 00eb 避免在刷新后回绕流,防止与mysqldump的通信错误。
- Commit 0553 如果预读尚未开始,则不等待其完成。
- Commit 055a 修复了Buddy输出字符串过大时在searchd日志中分多行显示的问题。
- Commit 0a88 移动了MySQL接口关于失败的header
debugv详细级别的警告。 - Commit 150a 修复了多集群管理操作中的竞态条件;禁止创建同名或同路径的多个集群。
- Commit 2e40 修复了全文查询中的隐式截断;将MatchExtended拆分为模板部分D。
- Commit 75f5 修正了
index_exact_words在索引和加载表到守护进程时的不一致。 - Commit 7643 修复了删除无效集群时缺失的错误信息。
- Commit 7a03 修复了CBO与队列联合;修正了CBO与RT伪分片。
- Commit 7b4e 在未加载二级索引(SI)库和配置参数时,避免发出误导性的警告信息“WARNING: secondary_indexes set but failed to initialize secondary library”。
- Commit 8496 修正了quorum中的命中排序。
- Commit 8973 修复了ModifyTable插件中大写选项的问题。
- Commit 9935 修复了从包含空json值(表示为NULL)的转储恢复的问题。
- Commit a28f 通过使用pcon修复了连接节点接收SST时的SST超时。
- Commit b5a5 修复了选择别名字符串属性时的崩溃。
- Commit c556 添加了对带有
morphology_skip_fields字段的全文查询中,将词项转换为=term的查询转换。 - Commit cdc3 添加了缺失的配置键(skiplist_cache_size)。
- Commit cf6e 修复了表达式排序器在处理大型复杂查询时的崩溃。
- Commit e513 修正了全文CBO与无效索引提示的冲突。
- Commit eb05 在关闭时中断预读以加快关闭速度。
- Commit f945 更改了全文查询的堆栈计算,避免复杂查询时崩溃。
- Issue #1262 修复了索引器在索引具有多个同名列的SQL源时崩溃的问题。
- Issue #1273 对不存在的系统变量返回0而非
。 - Issue #1289 修复了indextool检查RT表外部文件时的错误。
- Issue #1335 修正了由于短语内多词形导致的查询解析错误。
- Issue #1364 添加了对旧版本binlog的空binlog文件重放支持。
- Issue #1365 修复了删除最后一个空binlog文件的问题。
- Issue #1372 修正了在
data_dir变更后,守护进程启动时当前工作目录受影响导致的相对路径错误(转换为守护进程启动目录的绝对路径)。 - Issue #1393 hn_small 中最慢时间退化:守护进程启动时获取/缓存 CPU 信息。
- Issue #1395 修正了索引加载时关于缺失外部文件的警告。
- Issue #1402 修正了在释放数据指针属性时全局分组器崩溃的问题。
- Issue #1403 _ADDITIONAL_SEARCHD_PARAMS 无效。
- Issue #1427 修正了每表
agent_query_timeout被默认查询选项agent_query_timeout替换的问题。 - Issue #1444 修正了使用
packedfactors()并且每个匹配有多个值时,分组器和排序器崩溃的问题。 - Issue #1458 Manticore 在频繁索引更新时崩溃。
- Issue #1481 修正了解析错误后解析查询清理时的崩溃。
- Issue #1484 修正了 HTTP JSON 请求未被路由到 buddy 的问题。
- Issue #1499 JSON 属性根值不能是数组的问题已修复。
- Issue #1507 修正了事务内表重建时崩溃的问题。
- Issue #1515 修正了俄语词干短形式的扩展。
- Issue #1579 修正了在 [date_format](Functions/Date_and_time_functions.md#DATE_FORMAT()) 表达式中 JSON 和 STRING 属性的使用。
- Issue #1580 修正了对 JSON 字段多个别名的分组器。
- Issue #1594 修正了 dev 中 total_related 错误:修正了隐式 cutoff 与 limit;增加了 JSON 查询中更好的全扫描检测。
- Issue #1603 修正了所有日期表达式中 JSON 和 STRING 属性的使用。
- Issue #1609 使用 LEVENSHTEIN() 时崩溃。
- Issue #1612 修正了带高亮的搜索查询解析错误后内存损坏的问题。
- Issue #1614 禁用了对短于
min_prefix_len/min_infix_len的词的通配符扩展。 - Issue #1617 修改行为:如果 Buddy 成功处理请求,则不记录错误。
- Issue #1635 修正了设置了 limit 的查询的搜索查询元信息中的 total。
- Issue #1640 无法在纯模式下通过 JSON 使用大写表名。
- Issue #1643 提供了默认的
SPH_EXTNODE_STACK_SIZE值。 - Issue #1646 修正了 MVA 属性上带 ALL/ANY 的负过滤器的 SphinxQL 日志。
- Issue #1660 修正了来自其他索引的 docid killlists 应用。❤️ 感谢 @raxoft 的 PR。
- Issue #1668 修正了因原始索引全扫描(无任何索引迭代器)提前退出导致的匹配遗漏;移除了纯行迭代器中的 cutoff。
- Issue #1671 修正了使用 agent 和本地表查询分布式表时的
FACET错误。 - Issue #1690 修正了大值直方图估计时崩溃。
- Issue #1692 alter table tbl add column col uint 时崩溃。
- Issue #1710 条件
WHERE json.array IN (<value>)返回空结果。 - Issue #172 修正了向
/cli发送请求时 TableFormatter 的问题。 - Issue #1742 缺少 wordforms 文件时
CREATE TABLE不会失败。 - Issue #1762 RT 表中属性的顺序现在遵循配置顺序。
- Issue #1765 带 'should' 条件的 HTTP bool 查询返回错误结果。
- Issue #1769 按字符串属性排序时,
SPH_SORT_ATTR_DESC和SPH_SORT_ATTR_ASC不起作用。 - Issue #177 禁用了 curl 请求到 Buddy 的
Expect: 100-continueHTTP 头。 - Issue #1791 由 GROUP BY 别名引起的崩溃。
- Issue #1792 Windows 上 SQL 元摘要显示错误时间。
- Issue #1794 修复了 JSON 查询中单词性能下降的问题。
- Issue #1798 不兼容的过滤器在
/search上未引发错误。 - Issue #1802 修复了
ALTER CLUSTER ADD和JOIN CLUSTER操作相互等待的问题,防止了ALTER在捐赠节点向加入节点发送表时将表添加到集群的竞态条件。 - Issue #1811 错误处理了
/pq/{table}/*请求。 - Issue #1816
UNFREEZE在某些情况下不起作用。 - Issue #183 修复了某些情况下 MVA 恢复的问题。
- Issue #1849 修复了在与 MCL 一起使用时 indextool 关闭时崩溃的问题。
- Issue #1866 修复了
/cli_json请求的不必要的 URL 解码。 - Issue #1872 更改了守护进程启动时的 plugin_dir 设置逻辑。
- Issue #1874 alter table ... 异常失败。
- Issue #1891 插入数据时 Manticore 崩溃,信号为
signal 11。 - Issue #1920 降低了 low_priority 的节流。
- Issue #1924 Mysqldump + mysql 恢复的错误。
- Issue #1951 修复了在本地表缺失或代理描述不正确时分布式表创建错误的问题;现在返回错误信息。
- Issue #1972 实现了
FREEZE计数器以避免 freeze/unfreeze 问题。 - Issue #1980 在 OR 节点中遵守查询超时。之前
max_query_time在某些情况下可能不起作用。 - Issue #1986 无法将 new 重命名为当前的 [manticore.json]。
- Issue #1988 全文查询可能忽略
SecondaryIndexCBO 提示。 - Issue #1990 修复了
expansion_limit,用于从多个磁盘块或内存块调用关键字时切片最终结果集。 - Issue #1994 错误的外部文件。
- Issue #2021 停止 Manticore 后可能会留下几个 manticore-executor 进程。
- Issue #2029 使用 Levenshtein 距离时崩溃。
- Issue #2037 在空索引上多次运行 max 操作符后出现错误。
- Issue #2052 使用 JSON.field 的多组查询时崩溃。
- Issue #2067 对 _update 的错误请求导致 Manticore 崩溃。
- Issue #2069 修复了 JSON 接口中字符串过滤比较器对闭区间的处理问题。
- Issue #2082 当 data_dir 路径位于符号链接上时,
alter失败。 - Issue #2102 改进了 mysqldump 中 SELECT 查询的特殊处理,确保生成的 INSERT 语句与 Manticore 兼容。
- Issue #2103 泰文字符使用了错误的字符集。
- Issue #2124 使用包含保留字的 SQL 时崩溃。
- Issue #2154 含有词形变化的表无法导入。
- Issue #2176 修复了当引擎参数设置为 'columnar' 且通过 JSON 添加重复 ID 时发生的崩溃。
- Issue #223 尝试插入无模式且无列名的文档时返回正确错误。
- Issue #239 自动模式多行插入可能失败。
- Issue #399 如果数据源声明了 id 属性,索引时添加错误信息。
- Issue #59 Manticore 集群崩溃。
- Issue #68 如果存在 percolate 表,optimize.php 会崩溃。
- Issue #77 修复了在 Kubernetes 上部署时的错误。
- Issue #274 修复了对 Buddy 并发请求的错误处理。
- Issue #97 当可用时,将 VIP HTTP 端口设置为默认。
各种改进:改进了版本检查和流式ZSTD解压缩;在恢复过程中添加了版本不匹配的用户提示;修正了恢复时不同版本的错误提示行为;增强了解压缩逻辑,直接从流中读取而不是进入工作内存;添加了
--force标志 - 提交 3b35 在Manticore搜索启动后添加备份版本显示,以便在此阶段识别问题。
- 提交 ad2e 更新了连接守护进程失败时的错误信息。
- 提交 ce5e 修正了将绝对根备份路径转换为相对路径的问题,并移除了恢复时的可写检查,以支持从不同路径恢复。
- 提交 db7e 为文件迭代器添加排序,确保各种情况下的一致性。
- 问题 #106 多配置的备份和恢复。
- 问题 #91 添加defattr以防止RHEL安装后文件出现异常用户权限。
- 问题 #91 添加额外的chown,确保Ubuntu中默认文件归属root用户。
- 提交 f104 支持向量搜索。
- 提交 2169 修正了在中断的二级索引构建设置期间临时文件的清理问题。解决了守护进程在创建
tmp.spidx文件时超出打开文件限制的问题。 - 提交 709b 为列式和SI使用独立的streamvbyte库。
- 提交 1c26 添加警告,指出列式存储不支持json属性。
- 提交 3acd 修正了SI中的数据解包。
- 提交 574c 修正了保存混合行式和列式存储的磁盘块时的崩溃。
- 提交 e87f 修正了SI迭代器被提示处理已处理块的问题。
- 问题 #1474 使用列式引擎时,行式MVA列的更新失败。
- 问题 #1510 修正了在
HAVING中使用列式属性时的聚合崩溃。 - 问题 #1519 修正了在使用列式属性时
expr排序器的崩溃。
- ❗问题 #42 通过环境变量支持纯索引。
- ❗问题 #47 通过环境变量改进配置的灵活性。
- 问题 #54 改进了Docker的备份和恢复流程。
- 问题 #77 改进入口点,仅在首次启动时处理备份恢复。
- 提交 a27c 修正查询日志输出到stdout。
- 问题 #38 如果未设置EXTRA,静音BUDDY警告。
- 问题 #71 修正
manticore.conf.sh中的主机名。
发布:2023年8月23日
版本6.2.12延续6.2系列,解决了6.2.0发布后发现的问题。
- ❗问题 #1351 “Manticore 6.2.0在Centos 7上无法通过systemctl启动”:将
TimeoutStartSec从infinity修改为0,以提高与Centos 7的兼容性。 - ❗问题 #1364 “从6.0.4升级到6.2.0后崩溃”:为旧版本binlog的空binlog文件添加重放功能。
- PR #1334 “修正searchdreplication.cpp中的拼写错误”:修正
searchdreplication.cpp中的拼写错误:beggining -> beginning。 - 问题 #1337 “Manticore 6.2.0 WARNING: conn (local)(12), sock=8088: bailing on failed MySQL header, AsyncNetInputBuffer_c::AppendData: error 11 (Resource temporarily unavailable) return -1”:降低MySQL接口关于头部的警告日志级别为logdebugv。
- 问题 #1355 “当node_address无法解析时,join cluster挂起”:改进了当某些节点不可达且名称解析失败时的复制重试。此改进应解决Kubernetes和Docker节点中与复制相关的问题。增强了复制启动失败的错误信息,并更新了测试模型376。此外,提供了名称解析失败的明确错误信息。
- Issue #1361 "No lower case mapping for "Ø" in charset non_cjk": 调整了字符 'Ø' 的映射。
- Issue #1365 "searchd leaves binlog.meta and binlog.001 after clean stop": 确保最后一个空的 binlog 文件被正确删除。
- Commit 0871: 修复了 Windows 上与原子复制限制相关的
Thd_t构建问题。 - Commit 1cc0: 解决了 FT CBO 与
ColumnarScan相关的问题。 - Commit c6bf: 修正了测试 376 并为测试中的
AF_INET错误添加了替代方案。 - Commit cbc3: 解决了复制过程中更新 blob 属性与替换文档时的死锁问题。同时移除了提交期间索引的 rlock,因为它已经在更基础的层面被锁定。
- Commit 4f91 更新了手册中关于
/bulk端点的信息。
- 支持 Manticore Columnar Library v2.2.4
发布:2023年8月4日
- 查询优化器增强,支持全文查询,显著提升搜索效率和性能。
- 集成:
- 我们开始使用 GitHub workflows,使贡献者更容易使用核心团队在准备软件包时采用的相同持续集成(CI)流程。所有作业都可以在 GitHub 托管的运行器上运行,方便在您的 Manticore Search 分支中无缝测试更改。
- 我们开始使用 CLT 来测试复杂场景。例如,我们现在能够确保提交后构建的软件包可以在所有支持的 Linux 操作系统上正确安装。命令行测试器(CLT)提供了一种用户友好的方式,以交互模式录制测试并轻松重放。
- 通过结合使用哈希表和 HyperLogLog,显著提升了 count distinct 操作的性能。
- 启用了包含二级索引的查询的多线程执行,线程数限制为物理 CPU 核心数。这将大幅提升查询执行速度。
pseudo_sharding已调整为限制在空闲线程数内。此更新显著提升了吞吐性能。- 用户现在可以通过配置设置指定默认属性存储引擎,更好地定制以匹配特定工作负载需求。
- 支持 Manticore Columnar Library 2.2.0,在二级索引中修复了众多错误并进行了改进。
- Buddy #153: /pq HTTP 端点现在作为
/json/pqHTTP 端点的别名。 - Commit 0bf1: 确保了
upper()和lower()的多字节兼容性。 - Commit 2bb9: 对于
count(*)查询,不再扫描索引,而是返回预计算值。 - Commit 3c84: 现在可以使用
SELECT进行任意计算和显示@@sysvars。与之前不同,您不再局限于单个计算。因此,像select user(), database(), @@version_comment, version(), 1+1 as a limit 10这样的查询将返回所有列。注意,可选的 'limit' 总是被忽略。 - Commit 6aca: 实现了
CREATE DATABASE存根查询。 - Commit 9dc1: 执行
ALTER TABLE table REBUILD SECONDARY时,即使属性未更新,二级索引也总是被重建。 - Commit 46ed: 使用预计算数据的排序器现在在使用 CBO 之前被识别,以避免不必要的 CBO 计算。
- Commit 102a: 实现了全文表达式栈的模拟和使用,以防止守护进程崩溃。
- Commit 979f: 为不使用字符串/mvas/json 属性的匹配添加了快速路径的匹配克隆代码。
- 提交 a073:添加了对
SELECT DATABASE()命令的支持。但它始终返回Manticore。此新增功能对于与各种 MySQL 工具的集成至关重要。 - 提交 bc04:修改了 /cli 端点的响应格式,并添加了
/cli_json端点以实现之前/cli的功能。 - 提交 d70b:
thread_stack现在可以在运行时通过SET语句修改。提供了会话本地和守护进程范围的两种变体。当前值可在show variables输出中查看。 - 提交 d96e:代码已集成到 CBO 中,以更准确地估计在字符串属性上执行过滤器的复杂度。
- 提交 e77d:改进了 DocidIndex 成本计算,提升了整体性能。
- 提交 f3ae:类似于 Linux 上的“uptime”,负载指标现在可在
SHOW STATUS命令中查看。 - 提交 f3cc:
DESC和SHOW CREATE TABLE的字段和属性顺序现在与SELECT * FROM保持一致。 - 提交 f3d2:不同的内部解析器现在在各种错误中提供其内部助记代码(例如
P01)。此改进有助于识别导致错误的解析器,同时隐藏非必要的内部细节。 - 问题 #271 “有时 CALL SUGGEST 不会建议单字母拼写错误的更正”:改进了 SUGGEST/QSUGGEST 对短词的行为:添加了
sentence选项以显示整句。 - 问题 #696 “启用词干处理时,Percolate 索引无法通过精确短语查询正确搜索”:修改了 percolate 查询以处理精确词项修饰符,提升了搜索功能。
- 问题 #829 “日期格式化方法”:添加了 [date_format()](Functions/Date_and_time_functions.md#DATE_FORMAT()) 选择列表表达式,暴露了
strftime()函数。 - 问题 #961 “通过 HTTP JSON API 对桶进行排序”:在 HTTP 接口中为每个聚合桶引入了可选的 sort 属性。
- 问题 #1062 “改进 JSON 插入 API 失败的错误日志 - “不支持的值类型””:当发生错误时,
/bulk端点会报告已处理和未处理字符串(文档)的数量信息。 - 问题 #1070 “CBO 提示不支持多个属性”:启用了索引提示以处理多个属性。
- 问题 #1106 “向 HTTP 搜索查询添加标签”:已向 HTTP PQ 响应 添加标签。
- 问题 #1301 “buddy 不应并行创建表”:解决了导致并行 CREATE TABLE 操作失败的问题。现在一次只能运行一个
CREATE TABLE操作。 - 问题 #1303 “添加对 @ 到列名的支持”。
- 问题 #1316 “使用 ps=1 时出租车数据集查询缓慢”:优化了 CBO 逻辑,默认直方图分辨率设置为 8k,以提高对随机分布值属性的准确性。
- 问题 #1317 “修复 hn 数据集上的 CBO 与全文搜索”:实现了改进的逻辑,用于确定何时使用位图迭代器交集,何时使用优先队列。
- 问题 #1318 “columnar:更改迭代器接口为单次调用”:列式迭代器现在使用单次
Get调用,替代之前的两步AdvanceTo+Get调用以获取值。 - 问题 #1319 “聚合计算加速(移除 CheckReplaceEntry?)”:从组排序器中移除了
CheckReplaceEntry调用,以加快聚合函数的计算。 - 问题 #1320 “创建表时 read_buffer_docs/hits 不支持 k/m/g 语法”:
CREATE TABLE选项read_buffer_docs和read_buffer_hits现在支持 k/m/g 语法。 - 英语、德语和俄语的语言包现在可通过在 Linux 上执行命令
apt/yum install manticore-language-packs轻松安装。在 macOS 上,使用命令brew install manticoresoftware/tap/manticore-language-packs。 - 字段和属性顺序现在在
SHOW CREATE TABLE和DESC操作之间保持一致。 - 如果执行
INSERT查询时磁盘空间不足,新INSERT查询将失败,直到有足够的磁盘空间可用。 - 添加了 UINT64() 类型转换函数。
/bulk端点现在将空行处理为一个 commit 命令。更多信息见 这里。- 已为 无效的索引提示 实现了警告,提供了更多透明度并允许错误缓解。
- 当
count(*)与单个过滤器一起使用时,查询现在在可用时利用来自二级索引的预计算数据,大大加快了查询时间。
- ⚠️ 在版本 6.2.0 中创建或修改的表无法被旧版本读取。
- ⚠️ 文档 ID 现在在索引和 INSERT 操作中作为无符号 64 位整数处理。
- ⚠️ 查询优化器提示的语法已更新。新格式为
/*+ SecondaryIndex(uid) */。请注意,旧语法不再支持。 - ⚠️ 问题 #1160:为了防止语法冲突,禁止在表名中使用
@。 - ⚠️ 标记为
indexed和attribute的字符串字段/属性现在在INSERT、DESC和ALTER操作中被视为单个字段。 - ⚠️ 问题 #1057:不支持 SSE 4.2 的系统将不再加载 MCL 库。
- ⚠️ 问题 #1143:agent_query_timeout 出现故障。已修复并生效。
- 提交 2a6e “DROP TABLE 时崩溃”:解决了在执行 DROP TABLE 语句时,RT 表写操作(优化、磁盘块保存)完成时间过长的问题。添加了警告,当执行 DROP TABLE 命令后表目录非空时进行通知。
- 提交 2ebd:添加了对列式属性的支持,此前在用于多属性分组的代码中缺失。
- 提交 3be4 解决了因磁盘空间耗尽可能导致的崩溃问题,通过正确处理 binlog 中的写入错误。
- 提交 6adb:修复了在查询中使用多个列式扫描迭代器(或二级索引迭代器)时偶发的崩溃。
- 提交 6bd9:使用预计算数据的排序器时,过滤器未被移除的问题已修复。
- 提交 6d03:更新了 CBO 代码,以更好地估计多线程执行的基于行属性过滤的查询。
- 提交 6dd3, Helm #56 “Kubernetes 集群中的致命崩溃转储”:修复了 JSON 根对象的布隆过滤器缺陷;修复了因按 JSON 字段过滤导致的守护进程崩溃。
- 提交 6e1b 修正了因无效的
manticore.json配置导致的守护进程崩溃。 - 提交 6fbc 修复了 json 范围过滤器以支持 int64 值。
- 提交 9c67 修复了
.sph文件在ALTER时可能损坏的问题。 - 提交 77cc:为替换语句的复制添加了共享密钥,解决了从多个主节点复制替换时出现的
pre_commit错误。 - 提交 2884 解决了对 'date_format()' 等函数进行 bigint 检查的问题。
- 提交 9513:当排序器使用预计算数据时,迭代器不再显示在 SHOW META 中。
- 提交 a2a7:更新了全文节点堆栈大小,防止复杂全文查询时崩溃。
- 提交 a062:修复了在复制带有 JSON 和字符串属性的更新时导致崩溃的错误。
- 提交 b3e6:更新了字符串构建器,使用 64 位整数以避免处理大数据集时崩溃。
- 提交 c472:解决了跨多个索引进行 count distinct 时的崩溃问题。
- 提交 d073:修复了即使禁用
pseudo_sharding,对 RT 索引的磁盘块查询仍可多线程执行的问题。 - 提交 d205 修改了
show index status命令返回的值集合,现在根据所用索引类型而异。 - 提交 e9bc 修复了处理批量请求时的 HTTP 错误及错误未从网络循环返回给客户端的问题。
- 提交 f77c PQ 使用了扩展堆栈。
- 提交 fac2 更新了导出排序器输出以与 packedfactors() 对齐。
- 提交 ff87: 修复了 SphinxQL 查询日志中过滤器中字符串列表的问题。
- 问题 #589 “字符集定义似乎依赖于代码的排序顺序”:修正了重复项的错误字符集映射。
- 问题 #811 “词形变化中映射多个词干干扰带有 CJK 标点符号的短语搜索”:修复了带有词形变化的短语查询中 ngram 令牌位置的问题。
- 问题 #834 “搜索查询中的等号导致请求失败”:确保精确符号可以被转义,并修复了
expand_keywords选项导致的双重精确扩展。 - 问题 #864 “exceptions/stopwords 冲突”
- 问题 #910 “调用 call snippets() 时使用 libstemmer_fr 和 index_exact_words 导致 Manticore 崩溃”:解决了调用
SNIPPETS()时导致崩溃的内部冲突。 - 问题 #946 “SELECT 期间出现重复记录”:修复了带有
not_terms_only_allowed选项且包含已删除文档的 RT 索引查询结果中出现重复文档的问题。 - 问题 #967 “在 UDF 函数中使用 JSON 参数导致崩溃”:修复了启用伪分片和带 JSON 参数的 UDF 搜索时守护进程崩溃的问题。
- 问题 #1050 “FEDERATED 中的 count(*)”:修复了通过
FEDERATED引擎带聚合的查询导致守护进程崩溃的问题。 - 问题 #1052 修复了
rt_attr_json列与列存储不兼容的问题。 - 问题 #1072 “* 被 ignore_chars 从搜索查询中移除”:修复了查询中的通配符不受
ignore_chars影响的问题。 - 问题 #1075 “indextool --check 在存在分布式表时失败”:indextool 现兼容 json 配置中包含 'distributed' 和 'template' 索引的实例。
- 问题 #1081 “特定 RT 数据集上的特定 select 导致 searchd 崩溃”:解决了带有 packedfactors 和大内部缓冲区的查询导致守护进程崩溃的问题。
- 问题 #1095 “使用 not_terms_only_allowed 时已删除文档被忽略”
- 问题 #1099 “indextool --dumpdocids 不工作”:恢复了
--dumpdocids命令的功能。 - 问题 #1100 “indextool --buildidf 不工作”:indextool 现在在完成 globalidf 后关闭文件。
- 问题 #1104 “Count(*) 试图被当作远程表中的 schema set 处理”:解决了当代理返回空结果集时,守护进程对分布式索引查询发送错误消息的问题。
- 问题 #1109 “FLUSH ATTRIBUTES 在 threads=1 时挂起”。
- 问题 #1126 “查询期间与 MySQL 服务器断开连接 - manticore 6.0.5”:解决了使用多个列存储属性过滤器时发生的崩溃。
- 问题 #1135 “JSON 字符串过滤的大小写敏感性”:修正了 HTTP 搜索请求中过滤器的排序规则以正确工作。
- 问题 #1140 “错误字段中的匹配”:修复了与
morphology_skip_fields相关的问题。 - 问题 #1155 “通过 API 的系统远程命令应传递 g_iMaxPacketSize”:更新以绕过节点间复制命令的
max_packet_size检查。此外,最新的集群错误已添加到状态显示中。 - 问题 #1302 “优化失败时遗留临时文件”:修正了合并或优化过程中出错后遗留临时文件的问题。
- 问题 #1304 “为 buddy 启动超时添加环境变量”:添加了环境变量
MANTICORE_BUDDY_TIMEOUT(默认 3 秒)以控制守护进程启动时等待 buddy 消息的时长。 - 问题 #1305 “保存 PQ 元数据时整数溢出”:缓解了守护进程在保存大型 PQ 索引时的过度内存消耗。
- 问题 #1306 “修改外部文件后无法重新创建 RT 表”:修正了外部文件为空字符串时的 alter 错误;修复了修改外部文件后 RT 索引外部文件未清理的问题。
- 问题 #1307 “SELECT 语句 sum(value) as value 无法正常工作”:修复了带别名的选择列表表达式可能隐藏索引属性的问题;还修正了整数类型的 sum 转换为 int64 计数的问题。
- Issue #1308 “避免在复制中绑定到localhost”:确保复制不会绑定到具有多个IP的主机名的localhost。
- Issue #1309 “回复mysql客户端失败,数据大于16Mb”:修复了向客户端返回大于16Mb的SphinxQL数据包的问题。
- Issue #1310 “‘指向外部文件的路径应为绝对路径’中的错误引用”:修正了
SHOW CREATE TABLE中外部文件完整路径的显示。 - Issue #1311 “调试构建在片段中长字符串时崩溃”:现在,
SNIPPET()函数目标文本中允许长字符串(>255字符)。 - Issue #1312 “kqueue轮询中使用后删除导致的虚假崩溃(master-agent)”:修复了在kqueue驱动系统(FreeBSD、MacOS等)上主节点无法连接代理时的崩溃。
- Issue #1313 “连接自身时间过长”:在MacOS/BSD上从主节点连接代理时,现在使用统一的连接+查询超时,而不仅仅是连接超时。
- Issue #1314 “pq(json元数据)中未达到的嵌入同义词加载失败”:修复了pq中的嵌入同义词标志。
- Issue #1315 “允许某些函数(sint、fibonacci、second、minute、hour、day、month、year、yearmonth、yearmonthday)使用隐式提升的参数值”。
- Issue #1321 “在fullscan中启用多线程SI,但限制线程数”:已在CBO中实现代码,以更好地预测在全文查询中使用二级索引时的多线程性能。
- Issue #1322 “使用预计算排序器后count(*)查询仍然缓慢”:使用预计算数据的排序器时不再初始化迭代器,避免了性能下降。
- Issue #1411 “sphinxql中的查询日志不保留MVA的原始查询”:现在,
all()/any()被记录。
发布:2023年3月15日
- 改进了与Logstash、Beats等的集成,包括:
- 支持Logstash版本7.6 - 7.15,Filebeat版本7.7 - 7.12
- 自动模式支持。
- 添加了对类似Elasticsearch格式的批量请求的处理。
- Buddy提交 ce90 Manticore启动时记录Buddy版本。
- Issue #588, Issue #942 修复了bigram索引中搜索元数据和调用关键词的错误字符。
- Issue #1027 拒绝小写HTTP头。
- ❗Issue #1039 修复了守护进程在读取Buddy控制台输出时的内存泄漏。
- Issue #1056 修复了问号的异常行为。
- Issue #1064 - 修复了分词器小写表中的竞态条件导致的崩溃。
- Commit 59bb 修复了JSON接口中对id显式设置为null的文档的批量写入处理。
- Commit 7b6b 修复了CALL KEYWORDS中多个相同词项的词项统计。
- Commit f381 Windows安装程序现在创建默认配置;运行时不再替换路径。
- Commit 6940, Commit cc5a 修复了多网络节点集群的复制问题。
- Commit 4972 修复了
/pqHTTP端点为/json/pqHTTP端点的别名。 - Commit 3b53 修复了Buddy重启时守护进程崩溃。
- Buddy提交 fba9 显示无效请求接收时的原始错误。
- Buddy提交 db95 允许备份路径中有空格,并对正则表达式做了一些魔法以支持单引号。
发布:2023年2月10日
- Issue #1024 crash 2 Facet搜索结果较多时崩溃/段错误
- ❗Issue #1029 - 警告:编译时值KNOWN_CREATE_SIZE(16)小于测量值(208)。建议修正该值!
- ❗Issue #1032 - Manticore 6.0.0纯索引崩溃
- ❗Issue #1033 - 守护进程重启时多个分布式丢失
- ❗Issue #1064 - 分词器小写表中的竞态条件
发布:2023年2月7日
从本版本开始,Manticore Search 附带了 Manticore Buddy,这是一个用 PHP 编写的 sidecar 守护进程,负责处理不需要超低延迟或高吞吐量的高级功能。Manticore Buddy 在后台运行,您甚至可能不会意识到它正在运行。尽管对最终用户来说是不可见的,但使 Manticore Buddy 易于安装并与基于 C++ 的主守护进程兼容是一个重大挑战。这个重大变更将允许团队开发各种新的高级功能,例如分片编排、访问控制和身份验证,以及各种集成,如 mysqldump、DBeaver、Grafana mysql 连接器。目前它已经处理了 SHOW QUERIES、BACKUP 和 自动模式。
本版本还包括 130 多个错误修复和众多功能,其中许多可以视为重大更新。
- 🔬 实验性功能:您现在可以执行与 Elasticsearch 兼容的 insert 和 replace JSON 查询,这使得可以使用 Manticore 与 Logstash(版本 < 7.13)、Filebeat 以及 Beats 家族的其他工具配合使用。默认启用。您可以使用
SET GLOBAL ES_COMPAT=off来禁用它。 - 支持 Manticore Columnar Library 2.0.0 ,在 二级索引 中进行了大量修复和改进。⚠️ 重大变更:从本版本开始,二级索引默认开启。如果您是从 Manticore 5 升级,请务必执行 ALTER TABLE table_name REBUILD SECONDARY。详情见下文。
- 提交 c436 自动模式:您现在可以跳过创建表的步骤,只需插入第一条文档,Manticore 将根据其字段自动创建表。详细信息请参见 这里。您可以通过 searchd.auto_schema 开启或关闭此功能。
- 对 基于成本的优化器 进行了大幅改进,在许多情况下降低了查询响应时间。
- 遥测:我们很高兴宣布本版本新增了遥测功能。该功能允许我们收集匿名且去标识化的指标,帮助我们提升产品的性能和用户体验。请放心,所有收集的数据都是完全匿名的,不会与任何个人信息关联。如果需要,可以在设置中轻松关闭此功能。
- 提交 5aaf ALTER TABLE table_name REBUILD SECONDARY 命令,允许您随时重建二级索引,例如:
- 问题 #821 新工具
manticore-backup用于备份和恢复 Manticore 实例 - SQL 命令 BACKUP 用于在 Manticore 内部执行备份。
- SQL 命令 SHOW QUERIES 作为查看正在运行查询的简便方式,替代查看线程。
- 问题 #551 SQL 命令
KILL用于终止长时间运行的SELECT。 - 聚合查询的动态
max_matches,以提高准确性并降低响应时间。
-
问题 #822 SQL 命令 FREEZE/UNFREEZE 用于准备实时/普通表进行备份。
-
提交 c470 新设置
accurate_aggregation和max_matches_increase_threshold用于控制聚合准确性。 -
问题 #718 支持有符号的负 64 位 ID。注意,您仍然不能使用大于 2^63 的 ID,但现在可以使用范围从 -2^63 到 0 的 ID。
-
由于我们最近添加了对二级索引的支持,"index" 一词可能指代二级索引、全文索引或普通/实时
index,这导致了混淆。为减少混淆,我们将后者重命名为 "table"。以下 SQL/命令行命令受此更改影响。它们的旧版本已被弃用,但仍可使用:index <table name>=>table <table name>,searchd -i / --index=>searchd -t / --table,SHOW INDEX STATUS=>SHOW TABLE STATUS,SHOW INDEX SETTINGS=>SHOW TABLE SETTINGS,FLUSH RTINDEX=>FLUSH TABLE,OPTIMIZE INDEX=>OPTIMIZE TABLE,ATTACH TABLE plain TO RTINDEX rt=>ATTACH TABLE plain TO TABLE rt,RELOAD INDEX=>RELOAD TABLE,RELOAD INDEXES=>RELOAD TABLES。
我们不打算使旧形式过时,但为了确保与文档的兼容性,建议在您的应用程序中更改名称。未来版本中将更改的是各种 SQL 和 JSON 命令输出中的 "index" 到 "table" 的重命名。
-
带有有状态 UDF 的查询现在被强制在单线程中执行。
-
Issue #1011 重构了所有与时间调度相关的内容,为并行块合并做准备。
-
⚠️ 重大变更:列存储格式已更改。您需要重建具有列属性的表。
-
⚠️ 重大变更:二级索引文件格式已更改,因此如果您使用二级索引进行搜索,并且配置文件中有
searchd.secondary_indexes = 1,请注意新版本的 Manticore 将跳过加载具有二级索引的表。建议:- 升级前将配置文件中的
searchd.secondary_indexes改为 0。 - 运行实例。Manticore 会加载表并发出警告。
- 对每个索引运行
ALTER TABLE <table name> REBUILD SECONDARY以重建二级索引。
如果您运行的是复制集群,则需要在所有节点上运行
ALTER TABLE <table name> REBUILD SECONDARY,或按照此说明操作,只需将OPTIMIZE替换为ALTER .. REBUILD SECONDARY。 - 升级前将配置文件中的
-
⚠️ 重大变更:binlog 版本已更新,因此之前版本的 binlog 将无法重放。升级过程中务必确保 Manticore Search 干净停止。停止之前的实例后,
/var/lib/manticore/binlog/中除了binlog.meta外不应有其他 binlog 文件。 -
Issue #849
SHOW SETTINGS:现在可以在 Manticore 内部查看配置文件中的设置。 -
Issue #1007 SET GLOBAL CPUSTATS=1/0 用于开启/关闭 CPU 时间跟踪;SHOW THREADS 在 CPU 时间跟踪关闭时不再显示 CPU 统计信息。
-
Issue #1009 RT 表的 RAM 块段现在可以在 RAM 块刷新时合并。
-
Issue #1012 在 indexer 输出中添加了二级索引进度。
-
Issue #1013 之前如果 Manticore 启动时无法开始服务某个表记录,会将其从索引列表中移除。新行为是保留该记录,尝试在下次启动时加载。
-
indextool --docextract 返回请求文档的所有词和命中。
-
Commit 2b29 环境变量
dump_corrupt_meta允许在 searchd 无法加载索引时将损坏的表元数据转储到日志。 -
Commit c7a3
DEBUG META可以显示max_matches和伪分片统计信息。 -
Commit 6bca 提供了比“Index header format is not json, will try it as binary...”更清晰的错误信息。
-
Commit bef3 乌克兰语词形还原器路径已更改。
-
Commit 4ae7 在 SHOW META 中添加了二级索引统计信息。
-
Commit 2e7c JSON 接口现在可以通过 Swagger Editor 轻松可视化 https://manual.manticoresearch.com/Openapi#OpenAPI-specification。
-
⚠️ 重大变更:复制协议已更改。如果您运行复制集群,升级到 Manticore 5 时需要:
- 先干净停止所有节点
- 然后用
--new-cluster启动最后停止的节点(Linux 下运行工具manticore_new_cluster)。 - 详细信息请参阅重启集群。
- 重构了二级索引与列存储的集成。
- Commit efe2 Manticore 列存储库优化,通过部分预先的最小/最大值评估降低响应时间。
- Commit 2757 如果磁盘块合并被中断,守护进程现在会清理与 MCL 相关的临时文件。
- Commit e9c6 在崩溃时,Columnar 和二级库版本会被写入日志。
- Commit f5e8 为二级索引添加了快速文档列表回绕支持。
- Commit 06df 类似
select attr, count(*) from plain_index(无过滤)的查询在使用 MCL 时现在更快。 - Commit 0a76 在 HandleMysqlSelectSysvar 中添加 @@autocommit,以兼容 mysql 8.25 以上的 .net 连接器。
- ⚠️ 重大变更:MCL Issue #17 MCL:为 columnar 扫描添加 SSE 代码。MCL 现在至少需要 SSE4.2。
- Commit 4d19 ⚠️ 重大变更:不再支持 Debian Stretch 和 Ubuntu Xenial。
- 支持 RHEL 9,包括 Centos 9、Alma Linux 9 和 Oracle Linux 9。
- Issue #924 支持 Debian Bookworm。
- Issue #636 打包:为 Linux 和 MacOS 提供 arm64 构建。
- PR #26 多架构(x86_64 / arm64)docker 镜像。
- 为贡献者简化的包构建。
- 现在可以使用 APT 安装特定版本。
- Commit a6b8 Windows 安装程序(之前只提供压缩包)。
- 切换到使用 CLang 15 编译。
- ⚠️ 重大变更:自定义 Homebrew 配方,包括 Manticore Columnar Library 的配方。安装 Manticore、MCL 及其他必要组件,请使用以下命令
brew install manticoresoftware/manticore/manticoresearch manticoresoftware/manticore/manticore-extra。
- Issue #479 名为
text的字段 - Issue #501 id 不能是非 bigint 类型
- Issue #646 ALTER 与名为 "text" 的字段冲突
- ❗Issue #652 可能的 BUG:HTTP(JSON)偏移和限制影响 facet 结果
- ❗Issue #827 searchd 在高负载下挂起/崩溃
- ❗Issue #996 PQ 索引内存溢出
- ❗Commit 1041
binlog_flush = 1自 Sphinx 起一直有问题。已修复。 - MCL Issue #14 MCL:当 ft 字段过多时选择崩溃
- Issue #470 sql_joined_field 无法存储
- Issue #713 使用 LEVENSHTEIN() 时崩溃
- Issue #743 Manticore 意外崩溃且无法正常重启
- Issue #788 通过 /sql 调用 KEYWORDS 返回控制字符,导致 json 解析失败
- Issue #789 mariadb 无法创建 FEDERATED 表
- Issue #796 警告:dlopen() 失败:/usr/bin/lib_manticore_columnar.so:无法打开共享对象文件:没有此文件或目录
- Issue #797 通过 api 使用 ZONESPAN 搜索时 Manticore 崩溃
- Issue #799 使用多个索引和 facet distinct 时权重错误
- Issue #801 SQL 索引重处理后 SphinxQL 分组查询挂起
- Issue #802 MCL:Indexer 在 5.0.2 和 manticore-columnar-lib 1.15.4 中崩溃
- Issue #813 Manticore 5.0.2 FEDERATED 返回空集(MySQL 8.0.28)
- Issue #824 在两个索引上执行 COUNT DISTINCT,结果为零时抛出内部错误
- Issue #826 删除查询时崩溃
- Issue #843 MCL:长文本字段的 Bug
- Issue #856 5.0.2 rtindex:聚合搜索限制行为不符合预期
- Issue #863 即使搜索应返回多个结果,返回的 Hits 也是 Nonetype 对象
- Issue #870 在 SELECT 表达式中使用 Attribute 和 Stored Field 时崩溃
- Issue #872 崩溃后表变得不可见
- Issue #877 搜索查询中两个负面词导致错误:查询不可计算
- Issue #878 通过 json query_string 使用 a -b -c 无效
- Issue #886 使用查询匹配的伪分片
- Issue #893 Manticore 5.0.2 的 min/max 函数未按预期工作...
- Issue #896 字段 "weight" 解析不正确
- Issue #897 Manticore 服务启动时崩溃并持续重启
- Issue #900 group by j.a, smth 工作异常
- Issue #913 当在 ranker 中使用 expr 时,searchd 崩溃,但仅限于带有两个邻近条件的查询
- Issue #916 net_throttle_action 失效
- Issue #919 MCL:Manticore 在查询执行时崩溃,集群恢复期间也有崩溃
- Issue #925 SHOW CREATE TABLE 输出缺少反引号
- Issue #930 现在可以通过 JDBC 连接器从 Java 查询 Manticore
- Issue #933 bm25f 排名问题
- Issue #934 无配置索引在 watchdog 中冻结于首次加载状态
- Issue #937 排序 facet 数据时发生段错误
- Issue #940 CONCAT(TO_STRING) 导致崩溃
- Issue #947 在某些情况下,单个简单的 select 查询可能导致整个实例停滞,无法登录或执行其他查询,直到该查询完成
- Issue #948 索引器崩溃
- Issue #950 facet distinct 计数错误
- Issue #953 内置 sph04 排名器中 LCS 计算不正确
- Issue #955 5.0.3 开发版崩溃
- Issue #963 在 engine columnar 上使用 json 的 FACET 导致崩溃
- Issue #982 MCL:5.0.3 从二级索引崩溃
- PR #984 HandleMysqlSelectSysvar 中的 @@autocommit
- PR #985 修复 RT 索引中的线程块分配
- Issue #985 修复 RT 索引中的线程块分配
- Issue #986 错误的默认 max_query_time
- Issue #987 多线程执行中使用正则表达式时崩溃
- Issue #988 反向索引兼容性破损
- Issue #989 indextool 报告检查 columnar 属性时出错
- Issue #990 json grouper 克隆的内存泄漏
- Issue #991 levenshtein 函数克隆的内存泄漏
- Issue #992 加载元数据时错误信息丢失
- Issue #993 传播来自动态索引/子键和系统变量的错误
- Issue #994 在列存储中对列式字符串执行 count distinct 导致崩溃
- Issue #995 MCL:taxi1 的 min(pickup_datetime) 导致崩溃
- Issue #997 空的 excludes JSON 查询从选择列表中移除列
- Issue #998 当前调度器上运行的二级任务有时会导致异常副作用
- Issue #999 facet distinct 与不同模式时崩溃
- Issue #1000 MCL:未加载列存储库时运行后列式 rt 索引损坏
- Issue #1001 json 中隐式 cutoff 不起作用
- Issue #1002 列式分组器问题
- Issue #1003 无法删除索引中的最后一个字段
- Issue #1004 --new-cluster 后行为异常
- Issue #1005 “columnar library not loaded”,但其实不需要
- Issue #1006 删除查询无错误提示
- Issue #1010 修正 Windows 构建中的 ICU 数据文件位置
- PR #1018 握手发送问题
- Issue #1020 在 show create table 中显示 id
- Issue #1024 crash 1 在 Facet 搜索大量结果时崩溃 / 段错误。
- Issue #1026 RT 索引:当插入大量文档且 RAMchunk 满时,searchd “卡住” 永远不动
- Commit 4739 复制节点间忙碌时,关闭时线程卡住
- Commit ab87 JSON 范围过滤器中混合浮点数和整数可能导致 Manticore 忽略过滤器
- Commit d001 JSON 中的浮点过滤器不准确
- Commit 4092 如果索引被修改,丢弃未提交的事务(否则可能崩溃)
- Commit 9692 使用反斜杠时查询语法错误
- Commit 0c19 SHOW STATUS 中 workers_clients 可能错误
- Commit 1772 修复合并无文档存储的内存段时崩溃
- Commit f45b 修复 JSON 过滤器中遗漏的 ALL/ANY 条件
- Commit 3e83 如果 searchd 从无法写入的目录启动,复制可能失败并报错
got exception while reading ist stream: mkstemp(./gmb_pF6TJi) failed: 13 (Permission denied) - Commit 92e5 自 4.0.2 版本起崩溃日志只包含偏移量,本次提交修复了该问题。
发布:2022年5月30日
- ❗Issue #791 - 错误的堆栈大小可能导致崩溃。
发布:2022年5月18日
-
🔬 支持 Manticore Columnar Library 1.15.2,启用 二级索引 测试版。对于普通和实时的列式及行式索引(如果使用了 Manticore Columnar Library),默认开启二级索引构建,但要启用搜索功能,需要在配置文件中或通过 SET GLOBAL 设置
secondary_indexes = 1。该新功能支持除旧版 Debian Stretch 和 Ubuntu Xenial 以外的所有操作系统。 -
只读模式:现在可以指定只处理读取查询、忽略任何写入的监听器。
-
新增 /cli 端点,使通过 HTTP 运行 SQL 查询更简单。
-
通过 HTTP JSON 进行批量 INSERT/REPLACE/DELETE 更快:之前可以通过 HTTP JSON 协议提供多个写入命令,但它们是逐个处理的,现在作为单个事务处理。
-
#720 JSON 协议支持 嵌套过滤器。之前无法在 JSON 中编码如
a=1 and (b=2 or c=3)的逻辑:must(AND)、should(OR)和must_not(NOT)仅在最高层级生效。现在支持嵌套。 -
支持 HTTP 协议中的 分块传输编码。现在可以在应用中使用分块传输发送大型批次,减少资源消耗(无需计算
Content-Length)。服务器端,Manticore 现在始终以流式方式处理传入的 HTTP 数据,无需等待整个批次传输完成,这:- 降低峰值内存使用,减少 OOM 风险
- 缩短响应时间(我们的测试显示处理 100MB 批次时间减少约 11%)
- 允许绕过 max_packet_size 限制,传输远大于最大允许值(128MB)的批次,例如一次传输 1GB。
-
#719 HTTP 接口支持
100 Continue:现在可以从curl(包括各种编程语言使用的 curl 库)传输大批次,这些默认使用Expect: 100-continue并在实际发送批次前等待一段时间。之前需要添加Expect:头部,现在不再需要。MORE -
⚠️ 重大变更: 伪分片 默认启用。如果您想禁用它,请确保在 Manticore 配置文件的
searchd部分添加pseudo_sharding = 0。 -
真实时间/普通索引中至少包含一个全文字段不再是强制性的。现在即使不涉及全文搜索的场景,也可以使用 Manticore。
-
由 Manticore Columnar Library 支持的属性的快速获取:像
select * from <columnar table>这样的查询现在比以前快得多,尤其是在模式中有许多字段时。 -
⚠️ 重大变更: 隐式的cutoff。Manticore 现在不会花费时间和资源处理您不需要返回结果集中的数据。缺点是它会影响 SHOW META 中的
total_found和 JSON 输出中的 hits.total。只有当您看到total_relation: eq时,数值才准确;而total_relation: gte表示实际匹配文档数大于您获得的total_found值。要保持之前的行为,可以使用搜索选项cutoff=0,这会使total_relation始终为eq。 -
⚠️ 重大变更: 所有全文字段现在默认存储。您需要使用
stored_fields =(空值)来使所有字段不存储(即恢复之前的行为)。
- ⚠️ 重大变更: 索引元文件格式变更。之前元文件(
.meta,.sph)是二进制格式,现在改为 JSON 格式。新版本的 Manticore 会自动转换旧索引,但:- 您可能会看到类似
WARNING: ... syntax error, unexpected TOK_IDENT的警告 - 您将无法使用旧版本的 Manticore 运行该索引,请确保您有备份
- 您可能会看到类似
- ⚠️ 重大变更:通过HTTP keep-alive支持会话状态。当客户端也支持时,这使得HTTP变为有状态。例如,使用新的/cli端点和HTTP keep-alive(所有浏览器默认开启),你可以在
SELECT之后调用SHOW META,其行为与通过mysql相同。注意,之前也支持Connection: keep-aliveHTTP头,但它仅导致复用同一连接。从此版本开始,它还使会话变为有状态。 - 现在你可以指定
columnar_attrs = *,在plain模式下将所有属性定义为列式存储,这在属性列表较长时非常有用。 - 更快的复制SST
- ⚠️ 重大变更:复制协议已更改。如果你运行复制集群,升级到Manticore 5时需要:
- 先干净地停止所有节点
- 然后用
--new-cluster启动最后停止的节点(Linux下运行工具manticore_new_cluster)。 - 详细信息请阅读重启集群。
- 复制改进:
- 更快的SST
- 噪声抗干扰能力,帮助在复制节点间网络不稳定时保持稳定
- 改进的日志记录
- 安全改进:如果配置中未指定
listen,Manticore现在监听127.0.0.1而非0.0.0.0。尽管Manticore Search默认配置中指定了listen,且通常不会出现无listen配置的情况,但仍有可能。之前Manticore监听0.0.0.0,这不安全,现在监听127.0.0.1,通常不会暴露于互联网。 - 对列式属性的聚合更快。
- 提高
AVG()的准确性:之前Manticore内部聚合使用float,现在改用double,显著提高准确度。 - 改进对JDBC MySQL驱动的支持。
- 支持jemalloc的
DEBUG malloc_stats。 - optimize_cutoff现在可作为每表设置,在CREATE或ALTER表时设置。
- ⚠️ 重大变更:query_log_format默认值现在为
sphinxql。如果你习惯plain格式,需要在配置文件中添加query_log_format = plain。 - 显著减少内存消耗:在使用存储字段且进行长时间高强度插入/替换/优化工作负载时,Manticore显著减少RAM使用。
- shutdown_timeout默认值从3秒增加到60秒。
- Commit ffd0 支持Java mysql连接器 >= 6.0.3:在Java mysql连接6.0.3中,他们更改了连接mysql的方式,导致与Manticore不兼容。现在支持新行为。
- Commit 1da6 禁止在加载索引时(如searchd启动时)保存新的磁盘块。
- Issue #746 支持glibc >= 2.34。
- Issue #784 将“VIP”连接与普通(非VIP)连接分开计数。之前VIP连接计入
max_connections限制,可能导致非VIP连接出现“已达最大”错误。现在VIP连接不计入限制。当前VIP连接数可通过SHOW STATUS和status查看。 - ID现在可以显式指定。
- Issue #687 支持mysql协议的zstd压缩。
- ⚠️ BM25F公式略有更新以提升搜索相关性。仅影响使用函数BM25F()的搜索结果,不改变默认排名公式行为。
- ⚠️ REST /sql端点行为更改:
/sql?mode=raw现在需要转义并返回数组。 - ⚠️
/bulkINSERT/REPLACE/DELETE请求响应格式更改:- 之前每个子查询构成单独事务,返回单独响应
- 现在整个批次视为单一事务,返回单一响应
- ⚠️ 搜索选项
low_priority和boolean_simplify现在需要赋值(0/1):之前可写SELECT ... OPTION low_priority, boolean_simplify,现在需写SELECT ... OPTION low_priority=1, boolean_simplify=1。 - ⚠️ 如果你使用旧版php、python或java客户端,请访问相应链接获取更新版本。旧版本与Manticore 5不完全兼容。
- ⚠️ HTTP JSON请求在
query_log_format=sphinxql模式下以不同格式记录。之前仅记录全文部分,现在按原样记录。
-
⚠️ 重大变更:由于新结构,升级到Manticore 5时建议先卸载旧软件包再安装新包:
- 基于RPM的系统:
yum remove manticore* - Debian和Ubuntu:
apt remove manticore*
- 基于RPM的系统:
-
新的 deb/rpm 包结构。之前的版本提供了:
manticore-server包含searchd(主搜索守护进程)及其所需的所有内容manticore-tools包含indexer和indextoolmanticore包含所有内容manticore-allRPM 作为元包,引用manticore-server和manticore-tools
新结构为:
manticore- deb/rpm 元包,安装上述所有包作为依赖manticore-server-core-searchd及其独立运行所需的所有内容manticore-server- systemd 文件及其他辅助脚本manticore-tools-indexer、indextool及其他工具manticore-common- 默认配置文件、默认数据目录、默认停用词manticore-icudata、manticore-dev、manticore-converter变化不大- 包含所有包的
.tgz捆绑包
-
支持 Ubuntu Jammy
-
通过 YUM repo 支持 Amazon Linux 2
- Issue #815 使用 UDF 函数时随机崩溃
- Issue #287 索引 RT 索引时内存溢出
- Issue #604 3.6.0,4.2.0 sphinxql-parser 破坏性更改
- Issue #667 FATAL: 内存不足(无法分配 9007199254740992 字节)
- Issue #676 字符串未正确传递给 UDF
- ❗Issue #698 尝试向 rt 索引添加文本列后 searchd 崩溃
- Issue #705 Indexer 无法找到所有列
- ❗Issue #709 按 json.boolean 分组错误
- Issue #716 indextool 与索引相关的命令(如 --dumpdict)失败
- ❗Issue #724 字段从选择中消失
- Issue #727 .NET HttpClient 使用
application/x-ndjson时 Content-Type 不兼容 - Issue #729 字段长度计算
- ❗Issue #730 创建/插入/删除列式表时存在内存泄漏
- Issue #731 某些条件下结果中出现空列
- ❗Issue #749 守护进程启动时崩溃
- ❗Issue #750 守护进程启动时挂起
- ❗Issue #751 SST 时崩溃
- Issue #752 当 engine='columnar' 时,json 属性被标记为列式
- Issue #753 复制监听地址为 0
- Issue #754 columnar_attrs = * 在 csvpipe 中不起作用
- ❗Issue #755 rt 中选择列式浮点数时崩溃
- ❗Issue #756 Indextool 在检查时更改 rt 索引
- Issue #757 需要检查监听端口范围是否有交叉
- Issue #758 RT 索引保存磁盘块失败时记录原始错误
- Issue #759 RE2 配置只报告一个错误
- ❗Issue #760 提交 5463778558586d2508697fa82e71d657ac36510f 中的内存消耗变化
- Issue #761 第三节点脏重启后未成为非主集群
- Issue #762 更新计数器增加了 2
- Issue #763 新版本 4.2.1 损坏了使用形态学的 4.2.0 创建的索引
- Issue #764 json 键中无转义 /sql?mode=raw
- ❗Issue #765 使用函数隐藏其他值
- ❗Issue #766 FixupAttrForNetwork 中一行代码触发内存泄漏
- ❗Issue #767 4.2.0 和 4.2.1 中与文档存储缓存相关的内存泄漏
- Issue #768 网络上传输存储字段时出现奇怪的乒乓现象
- Issue #769 如果 'common' 部分未提及,lemmatizer_base 重置为空
- Issue #770 pseudo_sharding 使按 id 查询变慢
- Issue #771 使用 jemalloc 时 DEBUG malloc_stats 输出为零
- Issue #772 删除/添加列使值不可见
- Issue #773 无法向列式表添加 bit(N) 列
- Issue #774 manticore.json 启动时 "cluster" 变为空
- ❗提交 1da4 HTTP 操作未在 SHOW STATUS 中跟踪
- 提交 3810 禁用低频单关键词查询的伪分片
- 提交 8003 修复存储属性与索引合并的问题
- 提交 cddf 泛化了不同值的获取器;为列式字符串添加了专门的不同值获取器
- 提交 fba4 修复从文档存储中获取空整数属性的问题
- 提交 f300 查询日志中
ranker可能被指定两次
- 实时索引和全文查询的伪分片支持。在之前的版本中我们添加了有限的伪分片支持。从此版本开始,只需启用 searchd.pseudo_sharding,即可获得伪分片和多核处理器的所有优势。最酷的是你无需对索引或查询做任何修改,只需启用它,如果有空闲 CPU,系统将利用它来降低响应时间。它支持全文、过滤和分析查询的普通和实时索引。例如,启用伪分片后,在 Hacker news 精选评论数据集(放大100倍,含1.16亿文档的普通索引)上,大多数查询的平均响应时间降低约10倍。

- 现已支持 Debian Bullseye。
- PQ 事务现在是原子且隔离的。之前 PQ 事务支持有限。此改进使得 REPLACE 到 PQ 的速度更快,尤其是在需要一次替换大量规则时。性能详情:
- 4.0.2
- 4.2.0
插入 100 万条 PQ 规则需要 48 秒,而以 1 万条批次替换仅 4 万条规则需要 406 秒。
root@perf3 ~ # mysql -P9306 -h0 -e "drop table if exists pq; create table pq (f text, f2 text, j json, s string) type='percolate';"; date; for m in `seq 1 1000`; do (echo -n "insert into pq (id,query,filters,tags) values "; for n in `seq 1 1000`; do echo -n "(0,'@f (cat | ( angry dog ) | (cute mouse)) @f2 def', 'j.json.language=\"en\"', '{\"tag1\":\"tag1\",\"tag2\":\"tag2\"}')"; [ $n != 1000 ] && echo -n ","; done; echo ";")|mysql -P9306 -h0; done; date; mysql -P9306 -h0 -e "select count(*) from pq"
Wed Dec 22 10:24:30 AM CET 2021
Wed Dec 22 10:25:18 AM CET 2021
+----------+
| count(*) |
+----------+
| 1000000 |
+----------+
root@perf3 ~ # date; (echo "begin;"; for offset in `seq 0 10000 30000`; do n=0; echo "replace into pq (id,query,filters,tags) values "; for id in `mysql -P9306 -h0 -NB -e "select id from pq limit $offset, 10000 option max_matches=1000000"`; do echo "($id,'@f (tiger | ( angry bear ) | (cute panda)) @f2 def', 'j.json.language=\"de\"', '{\"tag1\":\"tag1\",\"tag2\":\"tag2\"}')"; n=$((n+1)); [ $n != 10000 ] && echo -n ","; done; echo ";"; done; echo "commit;") > /tmp/replace.sql; date
Wed Dec 22 10:26:23 AM CET 2021
Wed Dec 22 10:26:27 AM CET 2021
root@perf3 ~ # time mysql -P9306 -h0 < /tmp/replace.sql
real 6m46.195s
user 0m0.035s
sys 0m0.008s插入 100 万条 PQ 规则需要 34 秒,以 1 万条批次替换它们只需 23 秒。
root@perf3 ~ # mysql -P9306 -h0 -e "drop table if exists pq; create table pq (f text, f2 text, j json, s string) type='percolate';"; date; for m in `seq 1 1000`; do (echo -n "insert into pq (id,query,filters,tags) values "; for n in `seq 1 1000`; do echo -n "(0,'@f (cat | ( angry dog ) | (cute mouse)) @f2 def', 'j.json.language=\"en\"', '{\"tag1\":\"tag1\",\"tag2\":\"tag2\"}')"; [ $n != 1000 ] && echo -n ","; done; echo ";")|mysql -P9306 -h0; done; date; mysql -P9306 -h0 -e "select count(*) from pq"
Wed Dec 22 10:06:38 AM CET 2021
Wed Dec 22 10:07:12 AM CET 2021
+----------+
| count(*) |
+----------+
| 1000000 |
+----------+
root@perf3 ~ # date; (echo "begin;"; for offset in `seq 0 10000 990000`; do n=0; echo "replace into pq (id,query,filters,tags) values "; for id in `mysql -P9306 -h0 -NB -e "select id from pq limit $offset, 10000 option max_matches=1000000"`; do echo "($id,'@f (tiger | ( angry bear ) | (cute panda)) @f2 def', 'j.json.language=\"de\"', '{\"tag1\":\"tag1\",\"tag2\":\"tag2\"}')"; n=$((n+1)); [ $n != 10000 ] && echo -n ","; done; echo ";"; done; echo "commit;") > /tmp/replace.sql; date
Wed Dec 22 10:12:31 AM CET 2021
Wed Dec 22 10:14:00 AM CET 2021
root@perf3 ~ # time mysql -P9306 -h0 < /tmp/replace.sql
real 0m23.248s
user 0m0.891s
sys 0m0.047s- optimize_cutoff 现作为
searchd配置节中的选项提供。当你想全局限制所有索引中的 RT 块数量时非常有用。 - 提交 0087 精确支持多个本地物理索引(实时/普通)中具有相同字段集/顺序的 count(distinct ...) 和 FACET ... distinct。
- PR #598 为
YEAR()和其他时间戳函数添加 bigint 支持。 - 提交 8e85 自适应 rt_mem_limit。之前 Manticore Search 在保存新的磁盘块之前,严格收集到
rt_mem_limit大小的数据,保存时仍会收集多达 10%(即双缓冲)以减少插入暂停。如果该限制也被耗尽,则在磁盘块完全保存之前阻止添加新文档。新的自适应限制基于我们现在有了 auto-optimize 的事实,因此磁盘块不完全遵守rt_mem_limit并提前开始刷新并不严重。现在我们收集最多 50% 的rt_mem_limit并保存为磁盘块。保存时,我们查看统计数据(保存了多少,保存时有多少新文档到达)并重新计算下次使用的初始比率。例如,如果保存了 9000 万文档,保存时又到达了 1000 万文档,则比率为 90%,因此下次可以收集最多 90% 的rt_mem_limit后再开始刷新另一个磁盘块。比率值自动计算,范围从 33.3% 到 95%。 - 问题 #628 PostgreSQL 源的 unpack_zlib。感谢 Dmitry Voronin 的 贡献。
- 提交 6d54
indexer -v和--version。之前你仍能看到 indexer 的版本,但-v/--version不被支持。 - 问题 #662 当通过 systemd 启动 Manticore 时,默认无限 mlock 限制。
- 提交 63c8 协程读写锁的自旋锁改为操作队列。
- 提交 4113 环境变量
MANTICORE_TRACK_RT_ERRORS,用于调试 RT 段损坏。
- Binlog 版本已提升,之前版本的 binlog 不会被重放,因此请确保在升级过程中干净地停止 Manticore Search:停止之前的实例后,
/var/lib/manticore/binlog/目录中除了binlog.meta外不应有 binlog 文件。 - 提交 3f65 在
show threads option format=all中新增了 "chain" 列。它显示了一些任务信息票据的堆栈,对性能分析非常有用,因此如果你在解析show threads输出,请注意新增的列。 searchd.workers自 3.5.0 起已废弃,现在是弃用状态,如果你的配置文件中仍有该项,启动时会触发警告。Manticore Search 会启动,但会有警告提示。- 如果你使用 PHP 和 PDO 访问 Manticore,需要设置
PDO::ATTR_EMULATE_PREPARES
- ❗问题 #650 Manticore 4.0.2 比 Manticore 3.6.3 慢。4.0.2 在批量插入方面比之前版本更快,但单条文档插入明显变慢。此问题已在 4.2.0 中修复。
- ❗提交 22f4 RT 索引在高强度 REPLACE 负载下可能损坏,或导致崩溃
- 提交 03be 修正了合并分组器和 group N 排序器时的平均值计算;修正了聚合合并
- 提交 2ea5
indextool --check可能崩溃 - 提交 7ec7 由 UPDATE 导致的内存耗尽问题
- 提交 658a 守护进程在 INSERT 时可能挂起
- 提交 46e4 守护进程在关闭时可能挂起
- 提交 f8d7 守护进程在关闭时可能崩溃
- 提交 733a 守护进程崩溃时可能挂起
- 提交 f7f8 守护进程启动时尝试用无效节点列表重新加入集群可能崩溃
- 提交 1401 分布式索引在 RT 模式下启动时如果无法解析其中一个代理,可能会被完全遗忘
- 问题 #683 attr bit(N) engine='columnar' 失败
- 问题 #682 创建表失败,但留下目录
- 问题 #663 配置失败,提示未知键名 'attr_update_reserve'
- 问题 #632 Manticore 在批量查询时崩溃
- 问题 #679 批量查询在 v4.0.3 中再次导致崩溃
- 提交 f7f8 修复了守护进程启动时尝试用无效节点列表重新加入集群导致崩溃的问题
- 问题 #643 Manticore 4.0.2 在批量插入后不接受连接
- 问题 #635 FACET 查询中使用 ORDER BY JSON.field 或字符串属性可能崩溃
- 问题 #634 使用 packedfactors 查询时崩溃 SIGSEGV
- 提交 4165 morphology_skip_fields 不支持 create table
-
全面支持 Manticore Columnar Library。之前 Manticore Columnar Library 仅支持普通索引。现在支持:
- 实时索引的
INSERT、REPLACE、DELETE、OPTIMIZE - 复制功能
ALTERindextool --check
- 实时索引的
-
自动索引压缩 (问题 #478)。终于,你不必手动调用 OPTIMIZE 或通过定时任务或其他自动化方式执行。Manticore 现在默认自动完成此操作。你可以通过全局变量 optimize_cutoff 设置默认压缩阈值。
-
块快照和锁系统重构。这些改动初看可能无明显变化,但显著改善了实时索引中许多操作的行为。简而言之,之前大多数 Manticore 数据操作严重依赖锁,现在改用磁盘块快照。
-
实时索引批量 INSERT 性能显著提升。例如,在 Hetzner 的 AX101 服务器(SSD,128 GB 内存,AMD Ryzen™ 9 5950X(16*2 核))上,3.6.0 版本可实现每秒插入 236K 文档,表结构为
name text, email string, description text, age int, active bit(1)(默认rt_mem_limit,批量大小 25000,16 并发插入工作线程,总计插入 1600 万文档)。4.0.2 版本在相同并发/批量/数量下达到 每秒 357K 文档。MORE -
ALTER 可以添加/删除全文字段(在RT模式下)。之前只能添加/删除属性。
-
🔬 实验性:全扫描查询的伪分片 - 允许并行化任何非全文搜索查询。现在无需手动准备分片,只需启用新选项 searchd.pseudo_sharding,即可期望非全文搜索查询响应时间降低至最多
CPU核心数倍。注意它可能会占用所有现有CPU核心,因此如果你不仅关心延迟,还关心吞吐量,请谨慎使用。
- 3.6.0
- 4.0.2
time curl -X POST -d '{"update":{"index":"idx","id":4611686018427387905,"doc":{"mode":0}}}' -H "Content-Type: application/x-ndjson" http://127.0.0.1:6358/json/bulk
real 0m43.783s
user 0m0.008s
sys 0m0.007stime curl -X POST -d '{"update":{"index":"idx","id":4611686018427387905,"doc":{"mode":0}}}' -H "Content-Type: application/x-ndjson" http://127.0.0.1:6358/json/bulk
real 0m0.006s
user 0m0.004s
sys 0m0.001s- systemd的自定义启动标志。现在如果需要用特定启动标志运行Manticore,无需手动启动searchd
- 新函数 LEVENSHTEIN(),计算Levenshtein距离
- 新增 searchd启动标志
--replay-flags=ignore-trx-errors和--replay-flags=ignore-all-errors,即使binlog损坏也能启动searchd - Issue #621 - 公开RE2的错误信息
- 对由本地普通索引组成的分布式索引,提供更准确的 COUNT(DISTINCT)
- FACET DISTINCT 用于在分面搜索时去重
- 精确形式修饰符 现在不再依赖 形态学,且适用于启用 中缀/前缀 搜索的索引
- 新版本可以读取旧索引,但旧版本无法读取Manticore 4的索引
- 移除隐式按id排序。如需排序请显式指定
charset_table默认值从0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F, U+401->U+451, U+451改为non_cjkOPTIMIZE自动执行。如不需要,请确保在配置文件的searchd部分设置auto_optimize=0- Issue #616
ondisk_attrs_default已弃用,现已移除 - 对贡献者:Linux构建现在使用Clang编译器,根据测试它能构建更快的Manticore Search和Manticore Columnar库
- 如果搜索查询中未指定 max_matches,则会隐式更新为满足新列存储性能所需的最低值。这可能影响 SHOW META 中的
total指标,但不影响实际找到文档数的total_found
- 确保干净停止Manticore 3:
/var/lib/manticore/binlog/中不应有binlog文件(目录中只应有binlog.meta)- 否则Manticore 4无法回复binlog的索引将无法运行
- 新版本可以读取旧索引,但旧版本无法读取Manticore 4的索引,因此如果想轻松回滚新版本,请务必备份
- 如果运行复制集群,请确保:
- 先干净停止所有节点
- 然后用
--new-cluster启动最后停止的节点(Linux下运行工具manticore_new_cluster) - 更多细节请阅读 重启集群
- 修复了大量复制问题:
- Commit 696f - 修复了joiner节点在SST期间激活索引时的崩溃;在joiner节点写入文件块时添加sha1校验以加速索引加载;在索引加载时添加了joiner节点的变更索引文件轮换;当激活索引被donor节点的新索引替换时,添加了joiner节点的索引文件删除;为donor节点发送文件和块添加了复制日志点
- 提交 b296 - 当地址不正确时,JOIN CLUSTER 导致崩溃
- 提交 418b - 在大型索引的初始复制期间,加入节点可能会失败并显示
ERROR 1064 (42000): invalid GTID, (null),当另一个节点加入时,捐赠节点可能变得无响应 - 提交 6fd3 - 大型索引的哈希可能计算错误,导致复制失败
- 问题 #615 - 集群重启时复制失败
- 问题 #574 -
indextool --help不显示参数--rotate - 问题 #578 - searchd 空闲时 CPU 使用率高,约一天后出现
- 问题 #587 - 立即刷新 .meta 文件
- 问题 #617 - manticore.json 被清空
- 问题 #618 - searchd --stopwait 在 root 下失败。它还修复了 systemctl 行为(之前 ExecStop 显示失败且未能充分等待 searchd 正确停止)
- 问题 #619 - INSERT/REPLACE/DELETE 与 SHOW STATUS。
command_insert、command_replace等显示了错误的指标 - 问题 #620 - 纯索引的
charset_table默认值错误 - 提交 8f75 - 新的磁盘块未被 mlocked
- 问题 #607 - 当无法通过名称解析节点时,Manticore 集群节点崩溃
- 问题 #623 - 更新索引的复制可能导致未定义状态
- 提交 ca03 - 索引器在索引带有 json 属性的纯索引源时可能挂起
- 提交 53c7 - 修复 PQ 索引中的不等表达式过滤器
- 提交 ccf9 - 修复列表查询中超过 1000 条匹配的选择窗口。之前
SELECT * FROM pq ORDER BY id desc LIMIT 1000 , 100 OPTION max_matches=1100无法正常工作 - 提交 a048 - 对 Manticore 的 HTTPS 请求可能导致类似 "max packet size(8388608) exceeded" 的警告
- 问题 #648 - Manticore 3 在字符串属性更新几次后可能挂起
Manticore 4 之前的维护版本
- 支持纯索引的 Manticore Columnar Library。纯索引新增设置 columnar_attrs
- 支持 乌克兰语词形还原器
- 完全修订的直方图。在构建索引时,Manticore 也会为其中的每个字段构建直方图,随后用于更快的过滤。3.6.0 中算法被完全修订,如果你有大量数据并进行大量过滤,可以获得更高性能。
- 工具
manticore_new_cluster [--force],用于通过 systemd 重启复制集群 indexer --merge的 --drop-src- 新模式 blend_mode='trim_all'
- 添加了用反引号转义 JSON 路径的支持 支持转义 JSON 路径
- indextool --check 可以在 RT 模式下工作
- SELECT/UPDATE 支持 FORCE/IGNORE INDEX(id)
- 合并的磁盘块的块 ID 现在唯一
- indextool --check-disk-chunk CHUNK_NAME
- 更快的 JSON 解析,我们的测试显示在类似
WHERE json.a = 1的查询中延迟降低了 3-4% - 非文档化命令
DEBUG SPLIT,作为自动分片/重新平衡的前提条件
- 问题 #584 - 不准确且不稳定的 FACET 结果
- 问题 #506 - 使用 MATCH 时的奇怪行为:受此问题影响的用户需要重建索引,因为问题出在索引构建阶段
- 问题 #387 - 运行带有 SNIPPET() 函数的查询时间歇性核心转储
- 用于处理复杂查询的堆栈优化:
- Issue #461 - 使用 IN 条件的更新未正确生效
- Issue #464 - 在 CALL PQ 之后立即执行 SHOW STATUS 返回 - Issue #481 - 修复静态二进制构建
- Issue #502 - 多查询中的错误
- Issue #514 - 使用 'create table' 时无法使用不寻常的列名
- Commit d1db - 在重放带有字符串属性更新的 binlog 时守护进程崩溃;将 binlog 版本设置为 10
- Commit 775d - 修复表达式堆栈帧检测运行时错误(测试 207)
- Commit 4795 - 空存储查询的 percolate 索引过滤器和标签为空(测试 369)
- Commit c3f0 - 在网络延迟长且错误率高的情况下(不同数据中心复制)复制 SST 流中断;更新复制命令版本至 1.03
- Commit ba2d - 加入集群后写操作时 joiner 锁定集群(测试 385)
- Commit de4d - 使用 exact 修饰符的通配符匹配(测试 321)
- Commit 6524 - docid 检查点与 docstore
- Commit f4ab - 解析无效 xml 时索引器行为不一致
- Commit 7b72 - 带 NOTNEAR 的存储 percolate 查询无限运行(测试 349)
- Commit 812d - 以通配符开头的短语权重错误
- Commit 1771 - 带通配符的 percolate 查询生成无 payload 的匹配词导致交错命中并破坏匹配(测试 417)
- Commit aa0d - 修正并行查询情况下 'total' 的计算
- Commit 18d8 - Windows 下守护进程多并发会话崩溃
- Commit 8443 - 某些索引设置无法复制
- Commit 9341 - 在高频率添加新事件时,netloop 有时冻结,因为原子 'kick' 事件被一次处理多个事件,导致丢失实际操作 查询状态,而非服务器状态
- Commit d805 - 新刷新磁盘块可能在提交时丢失
- Commit 63cb - profiler 中 'net_read' 不准确
- Commit f537 - Percolate 处理阿拉伯语(从右到左文本)的问题
- Commit 49ee - 重复列名时 id 未正确选取
- Commit refa 修复网络事件在罕见情况下崩溃
- e8420cc7 修复
indextool --dumpheader - Commit ff71 - TRUNCATE WITH RECONFIGURE 在存储字段上工作异常
- 新 binlog 格式:升级前需干净停止 Manticore
- 索引格式略有变化:新版本可正常读取现有索引,但若从 3.6.0 降级到旧版本,新索引将无法读取
- 复制格式变更:不要从旧版本复制到 3.6.0 或反向,需同时切换所有节点到新版本
reverse_scan已弃用。确保自 3.6.0 起查询中不使用此选项,否则会失败- 本版本起不再提供 RHEL6、Debian Jessie 和 Ubuntu Trusty 的构建。如需支持,请联系我们
- 不再隐式按 id 排序。如依赖此功能,请相应更新查询
- 搜索选项
reverse_scan已弃用
- 新的 Python、Javascript 和 Java 客户端现已正式发布,并在本手册中有详细文档。
- 实时索引的磁盘块自动丢弃。此优化使得在对实时索引进行OPTIMIZE操作时,当磁盘块显然不再需要(所有文档都被删除)时,可以自动丢弃该磁盘块。之前仍然需要合并,现在可以立即丢弃该磁盘块。cutoff选项被忽略,即使实际上没有合并,过时的磁盘块也会被移除。这在您维护索引中的保留策略并删除较旧文档时非常有用。现在压缩此类索引将更快。
- standalone NOT 作为 SELECT 的一个选项
- Issue #453 新选项 indexer.ignore_non_plain=1 在运行
indexer --all且配置文件中不仅有普通索引时非常有用。没有设置ignore_non_plain=1会收到警告和相应的退出代码。 - SHOW PLAN ... OPTION format=dot 和 EXPLAIN QUERY ... OPTION format=dot 支持全文查询计划执行的可视化。对理解复杂查询很有帮助。
indexer --verbose已弃用,因为它从未为 indexer 输出添加任何内容- 用于转储 watchdog 的回溯信号现在应使用
USR2,而非USR1
- Issue #423 西里尔字符句点调用片段保留模式不高亮
- Issue #435 RTINDEX - GROUP N BY 表达式选择导致致命崩溃
- Commit 2b3b 集群中 searchd 状态显示段错误
- Commit 9dd2 'SHOW INDEX index.N SETTINGS' 不支持大于9的块
- Issue #389 导致 Manticore 崩溃的 Bug
- Commit fba1 转换器创建了损坏的索引
- Commit eecd stopword_step=0 与 CALL SNIPPETS() 的问题
- Commit ea68 本地索引在低 max_matches 时 count distinct 返回 0
- Commit 362f 使用聚合时,命中结果中不返回存储的文本
- OPTIMIZE 将磁盘块减少到一定数量(默认是
2* 核心数),而非合并为单个块。最优块数可通过 cutoff 选项控制。 - NOT 操作符现在可以单独使用。默认禁用,因为意外的单独 NOT 查询可能很慢。可通过设置新的 searchd 指令 not_terms_only_allowed 为
0启用。 - 新设置 max_threads_per_query 设置查询可使用的最大线程数。如果未设置该指令,查询可使用的线程数上限为 threads 的值。
每个
SELECT查询可通过 OPTION threads=N 限制线程数,覆盖全局max_threads_per_query。 - 现在可以通过 IMPORT TABLE 导入 Percolate 索引。
- HTTP API
/search新增对分面/分组的基本支持,通过新的查询节点aggs实现。
- 如果未声明复制监听指令,引擎将尝试使用定义的 'sphinx' 端口之后的端口,最多到200。
listen=...:sphinx需要显式设置以支持 SphinxSE 连接或 SphinxAPI 客户端。- SHOW INDEX STATUS 输出新增指标:
killed_documents、killed_rate、disk_mapped_doclists、disk_mapped_cached_doclists、disk_mapped_hitlists和disk_mapped_cached_hitlists。 - SQL 命令
status现在输出Queue\Threads和Tasks\Threads。
dist_threads现已完全弃用,searchd 如果仍使用该指令将记录警告。
官方 Docker 镜像现基于 Ubuntu 20.04 LTS
除了常规的 manticore 包外,您还可以按组件安装 Manticore Search:
manticore-server-core- 提供searchd、手册页、日志目录、API 和 galera 模块。它还会作为依赖安装manticore-common。manticore-server- 提供核心的自动化脚本(init.d、systemd)和manticore_new_cluster包装器。它还会作为依赖安装manticore-server-core。manticore-common- 提供配置、停用词、通用文档和骨架文件夹(datadir、modules 等)。manticore-tools- 提供辅助工具(indexer、indextool等)、它们的手册页和示例。它还会作为依赖安装manticore-common。manticore-icudata(RPM)或manticore-icudata-65l(DEB) - 提供 ICU 数据文件以供 icu 形态学使用。manticore-devel(RPM) 或manticore-dev(DEB) - 提供 UDF 的开发头文件。
- 提交 2a47 RT索引中不同块的grouper守护进程崩溃
- 提交 57a1 空远程文档的快速路径
- 提交 07dd 表达式堆栈帧检测运行时
- 提交 08ae percolate索引中匹配超过32个字段
- 提交 16b9 复制监听端口范围
- 提交 5fa6 在pq上显示创建表
- 提交 54d1 HTTPS端口行为
- 提交 fdbb 替换时混合docstore行
- 提交 afb5 将TFO不可用消息级别切换为“info”
- 提交 59d9 strcmp无效使用导致崩溃
- 提交 04af 向带有系统(停用词)文件的集群添加索引
- 提交 5014 合并带有大型字典的索引;RT优化大型磁盘块
- 提交 a2ad Indextool可以从当前版本转储元数据
- 提交 69f6 GROUP N中组顺序问题
- 提交 24d5 握手后对SphinxSE显式刷新
- 提交 31c4 避免不必要时复制巨大描述
- 提交 2959 show threads中的负时间
- 提交 f0b3 令牌过滤插件与零位置增量
- 提交 a49e 多重命中时将“FAIL”改为“WARNING”
-
此版本耗时较长,因为我们一直在努力将多任务模式从线程改为协程。这使配置更简单,查询并行化更直接:Manticore只使用给定数量的线程(参见新设置 threads),新模式确保以最优方式完成。
-
高亮的变化:
- 任何支持多个字段的高亮(
highlight({},'field1, field2')或json查询中的highlight)现在默认按字段应用限制。 - 任何支持纯文本的高亮(
highlight({}, string_attr)或snippet())现在对整个文档应用限制。 - 每字段限制可以通过
limits_per_field=0选项切换为全局限制(默认是1)。 - allow_empty现在通过HTTP JSON高亮默认是
0。
- 任何支持多个字段的高亮(
-
同一端口现在可以用于 http、https和二进制API(以接受来自远程Manticore实例的连接)。通过mysql协议连接仍需
listen = *:mysql。Manticore现在自动检测尝试连接的客户端类型,MySQL除外(由于协议限制)。 -
在RT模式下,字段现在可以同时是文本和字符串属性 - GitHub issue #331。
在普通模式中称为
sql_field_string。现在它也可用于RT模式的实时索引。示例如下:create table t(f string attribute indexed); insert into t values(0,'abc','abc'); select * from t where match('abc'); +---------------------+------+ | id | f | +---------------------+------+ | 2810845392541843463 | abc | +---------------------+------+ 1 row in set (0.01 sec) mysql> select * from t where f='abc'; +---------------------+------+ | id | f | +---------------------+------+ | 2810845392541843463 | abc | +---------------------+------+ 1 row in set (0.00 sec)
- 现在可以高亮字符串属性。
- SQL接口支持SSL和压缩
- 支持mysql客户端的
status命令。 - 复制现在可以复制外部文件(停用词、例外等)。
- 过滤操作符
in现在可以通过 HTTP JSON 接口使用。 - HTTP JSON 中的
expressions。 - 现在可以在 RT 模式下动态更改
rt_mem_limit,即可以执行ALTER ... rt_mem_limit=<new value>。 - 现在可以使用 单独的 CJK 字符集表:
chinese、japanese和korean。 - thread_stack 现在限制最大线程栈大小,而非初始大小。
- 改进了
SHOW THREADS输出。 - 在
SHOW THREADS中显示长时间CALL PQ的进度。 - cpustat、iostat、coredump 可以在运行时通过 SET 更改。
- 实现了
SET [GLOBAL] wait_timeout=NUM,
- 索引格式已更改。 3.5.0 版本构建的索引无法被低于 3.5.0 版本的 Manticore 加载,但 Manticore 3.5.0 可以识别旧格式。
INSERT INTO PQ VALUES()(即不提供列列表)之前期望的值正好是(query, tags)。现已更改为(id,query,tags,filters)。如果希望自动生成 id,可以将其设置为 0。allow_empty=0是通过 HTTP JSON 接口高亮显示的新默认值。CREATE TABLE/ALTER TABLE中外部文件(停用词、例外等)只允许使用绝对路径。
ram_chunks_count在SHOW INDEX STATUS中重命名为ram_chunk_segments_count。workers已废弃。现在只有一种 workers 模式。dist_threads已废弃。所有查询现在尽可能并行(受threads和jobs_queue_size限制)。max_children已废弃。使用 threads 设置 Manticore 使用的线程数(默认设置为 CPU 核心数)。queue_max_length已废弃。如果确实需要,请使用 jobs_queue_size 来微调内部作业队列大小(默认无限制)。- 所有
/json/*端点现在可在无/json/前缀的情况下访问,例如/search、/insert、/delete、/pq等。 field表示“全文字段”的含义在describe中重命名为 “text”。3.4.2:
mysql> describe t; +-------+--------+----------------+ | Field | Type | Properties | +-------+--------+----------------+ | id | bigint | | | f | field | indexed stored | +-------+--------+----------------+3.5.0:
mysql> describe t; +-------+--------+----------------+ | Field | Type | Properties | +-------+--------+----------------+ | id | bigint | | | f | text | indexed stored | +-------+--------+----------------+- 西里尔字母
и在non_cjkcharset_table(默认)中不再映射为i,因为这对俄语词干提取器和词形还原器影响过大。 read_timeout。请改用 network_timeout,它同时控制读写超时。
- Ubuntu Focal 20.04 官方软件包
- deb 软件包名称由
manticore-bin改为manticore
- Issue #351 searchd 内存泄漏
- Commit ceab 片段中轻微越界读取
- Commit 1c3e 危险地写入局部变量导致查询崩溃
- Commit 26e0 测试 226 中排序器的轻微内存泄漏
- Commit d2c7 测试 226 中严重内存泄漏
- Commit 0dd8 集群显示节点同步,但
count(*)显示数字不同 - Commit f1c1 美观:日志中重复且有时丢失的警告信息
- Commit f1c1 美观:日志中出现 (null) 索引名
- Commit 359d 无法检索超过 7000 万条结果
- Commit 19f3 无法使用无列语法插入 PQ 规则
- Commit bf68 向集群中的索引插入文档时错误信息误导
- Commit 2cf1
/json/replace和json/update返回的 id 为指数形式 - Issue #324 在同一查询中更新 json 标量属性和 mva
- Commit d384
hitless_words在 RT 模式下不起作用 - Commit 5813 RT 模式下应禁止
ALTER RECONFIGURE - Commit 5813 searchd 重启后
rt_mem_limit被重置为 128M - highlight() 有时会挂起
- Commit 7cd8 RT 模式下无法使用 U+ 代码
- Commit 2b21 RT 模式下无法在 wordforms 中使用通配符
- Commit e9d0 修复
SHOW CREATE TABLE与多个 wordform 文件的兼容问题 - 提交 fc90 JSON 查询缺少 "query" 导致 searchd 崩溃
- Manticore 官方 docker 无法从 mysql 8 索引数据
- 提交 23e0 HTTP /json/insert 需要 id
- 提交 bd67
SHOW CREATE TABLE对 PQ 无效 - 提交 bd67
CREATE TABLE LIKE对 PQ 工作不正常 - 提交 5eac show index status 中设置的行尾问题
- 提交 cb15 HTTP JSON 响应中 "highlight" 的标题为空
- 问题 #318
CREATE TABLE LIKE中缀错误 - 提交 9040 RT 在负载下崩溃
- cd512c7d RT 磁盘块崩溃时丢失崩溃日志
- 问题 #323 导入表失败并关闭连接
- 提交 6275
ALTER reconfigure损坏 PQ 索引 - 提交 9c1d 更改索引类型后 searchd 重载问题
- 提交 71e2 守护进程在导入表时因缺失文件崩溃
- 问题 #322 使用多个索引、group by 和 ranker = none 的 select 导致崩溃
- 提交 c3f5
HIGHLIGHT()不会高亮字符串属性 - 问题 #320
FACET无法对字符串属性排序 - 提交 4f1a 缺少数据目录时的错误
- 提交 04f4 access_* 在 RT 模式下不支持
- 提交 1c06 字符串中的坏 JSON 对象:1.
CALL PQ当 json 超过某个值时返回 "Bad JSON objects in strings: 1"。 - 提交 32f9 RT 模式不一致。在某些情况下无法删除索引因为未知,且无法创建因为目录非空。
- 问题 #319 select 时崩溃
- 提交 22a2
max_xmlpipe2_field= 2M 在 2M 字段时返回警告 - 问题 #342 查询条件执行错误
- 提交 dd8d 简单的两个词搜索找到只包含一个词的文档
- 提交 9091 PQ 中无法匹配键中带大写字母的 json
- 提交 56da 索引器在 csv+docstore 上崩溃
- 问题 #363 在 centos 7 中 json 属性使用
[null]导致插入数据损坏 - 重大 问题 #345 记录未被插入,count() 随机,"replace into" 返回 OK
- max_query_time 过度降低 SELECT 速度
- 问题 #352 Mac OS 上主从通信失败
- 问题 #328 使用 Connector.Net/Mysql 8.0.19 连接 Manticore 时出错
- 提交 daa7 修正 \0 转义并优化性能
- 提交 9bc5 修正 count distinct 与 json 的问题
- 提交 4f89 修正其他节点上 drop table 失败
- 提交 952a 修复紧密运行 call pq 时崩溃
- 提交 2ffe 修复旧版本 RT 索引无法索引数据的问题
- 服务器工作在两种模式:rt 模式和普通模式
- rt 模式需要 data_dir,且配置中无索引定义
- 普通模式中索引在配置中定义;不允许 data_dir
- 复制仅在 rt 模式下可用
- charset_table 默认为 non_cjk 别名
- rt 模式下全文字段默认被索引和存储
- rt 模式下全文字段名称由 'field' 改为 'text'
- ALTER RTINDEX 改名为 ALTER TABLE
- TRUNCATE RTINDEX 改名为 TRUNCATE TABLE
- 仅存储字段
- SHOW CREATE TABLE,IMPORT TABLE
- 更快的无锁 PQ
- /sql 可在 mode=raw 下执行任何类型的 SQL 语句
- mysql41 协议的 mysql 别名
- data_dir 中默认的 state.sql
- 提交 a533 修复 highlight() 中错误字段语法导致的崩溃
- 提交 7fbb 修复带有 docstore 的 RT 索引复制时服务器崩溃
- 提交 24a0 修复对带有 infix 或 prefix 选项且未启用存储字段的索引进行高亮时崩溃
- 提交 3465 修复空索引时关于空 docstore 和 doc-id 查找的错误提示
- 提交 a707 修复 #314 SQL insert 命令末尾带分号的问题
- 提交 9562 移除查询词不匹配的警告
- 提交 b860 修复通过 ICU 分词的片段查询
- 提交 5275 修复 docstore 块缓存中的查找/添加竞态条件
- 提交 f06e 修复 docstore 中的内存泄漏
- 提交 a725 修复 #316 INSERT 时 LAST_INSERT_ID 返回空值
- 提交 1ebd 修复 #317 json/update HTTP 端点支持 MVA 数组和 JSON 属性对象
- 提交 e426 修复索引器在未显式指定 id 时转储 rt 的问题
- 并行实时索引搜索
- EXPLAIN QUERY 命令
- 无索引定义的配置文件(alpha 版本)
- CREATE/DROP TABLE 命令(alpha 版本)
- indexer --print-rt - 可从源读取并打印 Real-Time 索引的 INSERT 语句
- 更新至 Snowball 2.0 词干提取器
- SHOW INDEX STATUS 支持 LIKE 过滤器
- 高 max_matches 时改进内存使用
- SHOW INDEX STATUS 为 RT 索引添加 ram_chunks_count
- 无锁优先队列(PQ)
- 将 LimitNOFILE 改为 65536
- 提交 9c33 添加索引模式重复属性检查 #293
- 提交 a008 修复无命中词导致的崩溃
- 提交 6895 修复 ATTACH 后松散的 docstore
- 提交 d6f6 修复分布式设置中的 docstore 问题
- 提交 bce2 在排序器中用 OpenHash 替换 FixedHash
- 提交 e0ba 修复索引定义中重复命名的属性
- 提交 ca81 修复 HIGHLIGHT() 中的 html_strip
- 提交 493a 修复 HIGHLIGHT() 中的 passage 宏
- 提交 a82d 修复 RT 索引创建小或大磁盘块时的双缓冲问题
- 提交 a404 修复 kqueue 的事件删除
- 提交 8bea 修复 RT 索引 rt_mem_limit 大值时磁盘块保存问题
- 提交 8707 修复索引时浮点溢出
- 提交 a564 修复插入负 ID 文档到 RT 索引时的错误
- 提交 bbeb 修复 ranker fieldmask 导致的服务器崩溃
- 提交 3809 修复使用查询缓存时崩溃
- 提交 dc2a 修复使用 RT 索引 RAM 段并行插入时崩溃
- RT 索引的自增 ID
- 通过新的 HIGHLIGHT() 函数支持 docstore 高亮,也可用于 HTTP API
- SNIPPET() 可使用特殊函数 QUERY() 返回当前 MATCH 查询
- 新增 field_separator 选项用于高亮函数
- 远程节点的存储字段延迟获取(可显著提升性能)
- 字符串和表达式不再破坏多查询和 FACET 优化
- RHEL/CentOS 8 构建现在使用 mariadb-connector-c-devel 中的 mysql libclient
- ICU 数据文件随软件包一起发布,移除 icu_data_dir
- systemd 服务文件包含 'Restart=on-failure' 策略
- indextool 现在可以在线检查实时索引
- 默认配置文件现在为 /etc/manticoresearch/manticore.conf
- RHEL/CentOS 上的服务从 'searchd' 重命名为 'manticore'
- 移除了 query_mode 和 exact_phrase snippet 的选项
- Commit 6ae4 修复通过 HTTP 接口执行 SELECT 查询时崩溃的问题
- Commit 5957 修复 RT 索引保存磁盘块但未标记某些文档为已删除的问题
- Commit e861 修复使用 dist_threads 搜索多索引或多查询时崩溃的问题
- Commit 4409 修复对包含宽 UTF8 码点的长词生成中缀时崩溃的问题
- Commit 5fd5 修复添加套接字到 IOCP 时的竞态条件
- Commit cf10 修复布尔查询与 JSON 选择列表的问题
- Commit 996d 修复 indextool 检查错误跳过列表偏移和 doc2row 查找的检查
- Commit 6e3f 修复索引器在大数据上产生带有负跳过列表偏移的错误索引
- Commit faed 修复 JSON 仅将数字转换为字符串以及表达式中 JSON 字符串转换为数字的问题
- Commit 5331 修复 indextool 在命令行设置多个命令时以错误代码退出的问题
- Commit 7955 修复 #275 磁盘空间不足错误时 binlog 状态无效的问题
- Commit 2284 修复 #279 IN 过滤器应用于 JSON 属性时崩溃的问题
- Commit ce2e 修复 #281 错误的管道关闭调用
- Commit 5355 修复服务器在调用 PQ 时因递归 JSON 属性编码为字符串而挂起的问题
- Commit a5fc 修复 multiand 节点中文档列表超出末尾的问题
- Commit a362 修复线程公共信息的检索
- Commit f8d2 修复文档存储缓存锁
- 文档存储
- 新指令 stored_fields、docstore_cache_size、docstore_block_size、docstore_compression、docstore_compression_level
- 改进了 SSL 支持
- 更新了 non_cjk 内置字符集
- 禁用 UPDATE/DELETE 语句在查询日志中记录为 SELECT
- 支持 RHEL/CentOS 8 软件包
- Commit 301a 修复在 RT 索引的磁盘块中替换文档时崩溃的问题
- Commit 46c1 修复 #269 LIMIT N OFFSET M
- Commit 92a4 修复 DELETE 语句中显式设置 id 或提供 id 列表时跳过搜索的问题
- Commit 8ca7 修复 Windows poller 中事件移除后索引错误的问题
- Commit 6036 修复通过 HTTP 访问 JSON 时浮点数四舍五入的问题
- Commit 62f6 修复远程片段先检查空路径的问题;修复 Windows 测试
- Commit aba2 修复配置重载在 Windows 上的行为与 Linux 一致
- Commit 6b8c 修复 #194 PQ 支持形态学和词干分析器
- Commit 174d 修复 RT 退役段管理
- HTTP API 的实验性 SSL 支持
- CALL KEYWORDS 的字段过滤器
- /json/search 的 max_matches
- 默认 Galera gcache.size 的自动调整
- 改进了 FreeBSD 支持
- Commit 0a1a 修复 RT 索引复制到存在相同 RT 索引但路径不同的节点的问题
- Commit 4adc 修复无活动索引的刷新重新调度
- Commit d6c0 改进 RT/PQ 索引刷新重新调度
- Commit d0a7 修复 #250 TSV 和 CSV 管道源的 index_field_lengths 索引选项
- Commit 1266 修复 indextool 对空索引的块索引检查错误报告
- Commit 553c 修复 Manticore SQL 查询日志中空选择列表的问题
- Commit 56c8 修复 indexer -h/--help 响应
- 实时索引的复制
- 中文的 ICU 分词器
- 新的形态学选项 icu_chinese
- 新指令 icu_data_dir
- 复制的多语句事务
- LAST_INSERT_ID() 和 @session.last_insert_id
- SHOW VARIABLES 支持 LIKE 'pattern'
- 多文档插入用于 percolate 索引
- 为配置添加时间解析器
- 内部任务管理器
- 对文档和命中列表组件使用 mlock
- 监狱代码片段路径
- 放弃 RLP 库支持,转而使用 ICU;移除所有 rlp* 指令
- 禁用使用 UPDATE 更新文档 ID
- Commit f047 修复 concat 和 group_concat 中的缺陷
- Commit b081 修复 percolate 索引中查询 uid 为 BIGINT 属性类型
- Commit 4cd8 预分配新磁盘块失败时不崩溃
- Commit 1a55 为 ALTER 添加缺失的 timestamp 数据类型
- Commit f3a8 修复错误 mmap 读取导致的崩溃
- Commit 4475 修复复制中集群锁的哈希问题
- Commit ff47 修复复制中提供者泄漏
- Commit 58dc 修复 #246 indexer 中未定义的 sigmask
- Commit 3dd8 修复 netloop 报告中的竞态条件
- Commit a02a HA 策略重平衡器的零间隙
- 为文档和命中列表添加 mmap 读取器
/sqlHTTP 端点响应现在与/json/search响应相同- 新指令
access_plain_attrs、access_blob_attrs、access_doclists、access_hitlists - 复制设置中新指令
server_id
- 移除 HTTP
/search端点
read_buffer、ondisk_attrs、ondisk_attrs_default、mlock被access_*指令替代
- Commit 849c 允许选择列表中以数字开头的属性名
- Commit 48e6 修复 UDF 中的 MVA,修复 MVA 别名
- Commit 0555 修复 #187 使用 SENTENCE 查询时崩溃
- Commit 93bf 修复 #143 支持 MATCH() 周围的括号
- Commit 599e 修复 ALTER cluster 语句中集群状态保存
- Commit 230c 修复 ALTER index 时带有 blob 属性导致服务器崩溃
- Commit 5802 修复 #196 按 id 过滤
- Commit 25d2 丢弃模板索引上的搜索
- Commit 2a30 修复 SQL 回复中 id 列为常规 bigint 类型
- 新的索引存储。非标量属性不再限制每个索引最大 4GB 大小
- attr_update_reserve 指令
- 支持使用 UPDATE 更新字符串、JSON 和 MVA
- killlists 在索引加载时应用
- killlist_target 指令
- 多重 AND 搜索加速
- 更好的平均性能和内存使用
- 用于升级 2.x 创建的索引的转换工具
- CONCAT() 函数
- JOIN CLUSTER cluster AT 'nodeaddress:port'
- ALTER CLUSTER posts UPDATE nodes
- node_address 指令
- SHOW STATUS 中打印节点列表
- 对于带有 killlist 的索引,服务器不再按配置中定义的顺序轮换索引,而是遵循 killlist 目标链
- 搜索中索引的顺序不再定义 killlist 应用的顺序
- 文档 ID 现在为有符号大整数
- docinfo(现在始终为外部),inplace_docinfo_gap,mva_updates_pool
- Galera 复制用于 percolate 索引
- OPTION morphology
Cmake 最低版本现在为 3.13。编译需要 boost 和 libssl 开发库。
- Commit 6967 修复了在查询多个分布式索引时,选择列表中多个星号导致的崩溃问题
- Commit 36df 修复了 #177 通过 Manticore SQL 接口传输大数据包的问题
- Commit 5793 修复了 #170 在 RT 优化时更新 MVA 导致服务器崩溃的问题
- Commit edb2 修复了在 SIGHUP 配置重载后,RT 索引移除导致 binlog 移除时服务器崩溃的问题
- Commit bd3e 修复了 MySQL 握手认证插件的负载问题
- Commit 6a21 修复了 #172 RT 索引中的 phrase_boundary 设置问题
- Commit 3562 修复了 #168 在 ATTACH 索引自身时的死锁问题
- Commit 250b 修复了服务器崩溃后 binlog 保存空元数据的问题
- Commit 4aa6 修复了由于 RT 索引带磁盘块的字符串排序器导致的服务器崩溃问题
-
SUBSTRING_INDEX()
-
支持 percolate 查询的 SENTENCE 和 PARAGRAPH
-
Debian/Ubuntu 的 systemd 生成器;同时添加了 LimitCORE 以允许生成 core dump
-
Commit 84fe 修复了在匹配模式为 all 且全文查询为空时服务器崩溃的问题
-
Commit daa8 修复了删除静态字符串时的崩溃问题
-
Commit 2207 修复了 indextool 失败时的退出码问题(FATAL)
-
Commit 0721 修复了 #109 由于错误的精确形式检查导致前缀无匹配的问题
-
Commit 8af8 修复了 #161 RT 索引配置重载的问题
-
Commit e2d5 修复了访问大型 JSON 字符串时服务器崩溃的问题
-
Commit 75cd 修复了 JSON 文档中 PQ 字段被索引剥离器修改导致兄弟字段匹配错误的问题
-
Commit e2f7 修复了 RHEL7 构建中解析 JSON 时服务器崩溃的问题
-
Commit 3a25 修复了当斜杠位于边缘时 JSON 反转义崩溃的问题
-
Commit be9f 修复了选项 'skip_empty' 跳过空文档且不警告其非有效 JSON 的问题
-
Commit 266e 修复了 #140 当 6 位小数不足以精确时,浮点数输出 8 位数字的问题
-
Commit 3f6d 修复了空 jsonobj 创建的问题
-
Commit f3c7 修复了 #160 空 mva 输出 NULL 而非空字符串的问题
-
Commit 0afa 修复了在没有 pthread_getname_np 时构建失败的问题
-
Commit 9405 修复了带有 thread_pool 工作线程时服务器关闭崩溃的问题
-
percolate 索引的分布式索引支持
-
CALL PQ 新选项和变更:
- skip_bad_json
- mode(sparsed/sharded)
- JSON 文档可以作为 JSON 数组传递
- shift
- 列名 'UID'、'Documents'、'Query'、'Tags'、'Filters' 重命名为 'id'、'documents'、'query'、'tags'、'filters'
-
DESCRIBE pq TABLE
-
不再支持 SELECT FROM pq WHERE UID,改用 'id'
-
pq 索引上的 SELECT 与常规索引等效(例如,可以通过 REGEX() 过滤规则)
-
ANY/ALL 可用于 PQ 标签
-
表达式对 JSON 字段自动转换,无需显式类型转换
-
内置 'non_cjk' charset_table 和 'cjk' ngram_chars
-
内置 50 种语言的停用词集合
-
停用词声明中的多个文件也可以用逗号分隔
-
CALL PQ 可以接受 JSON 数组的文档
-
Commit a4e1 修复了与 csjon 相关的内存泄漏
-
Commit 28d8 修复了因 json 中缺失值导致的崩溃
-
Commit bf4e 修复了 RT 索引空元数据保存问题
-
Commit 33b4 修复了词形还原序列中丢失的形式标志(exact)
-
Commit 6b95 修复了字符串属性大于 4M 时使用饱和而非溢出
-
Commit 6214 修复了禁用索引时服务器在接收到 SIGHUP 信号崩溃的问题
-
Commit 3f7e 修复了服务器在同时执行 API 会话状态命令时崩溃的问题
-
Commit cd9e 修复了带字段过滤器的 RT 索引删除查询导致服务器崩溃的问题
-
Commit 9376 修复了对分布式索引执行 CALL PQ 时空文档导致服务器崩溃的问题
-
Commit 8868 修复了 Manticore SQL 错误信息超过 512 字符被截断的问题
-
Commit de9d 修复了无 binlog 时保存 percolate 索引导致崩溃的问题
-
Commit 2b21 修复了 OSX 上 http 接口无法工作的问题
-
Commit e92c 修复了 indextool 检查 MVA 时的错误提示
-
Commit 238b 修复了 FLUSH RTINDEX 时写锁问题,避免保存和定期刷新时锁定整个索引
-
Commit c26a 修复了 ALTER percolate 索引时卡在等待搜索加载的问题
-
Commit 9ee5 修复了 max_children 为 0 时应使用线程池默认工作线程数的问题
-
Commit 5138 修复了带有 index_token_filter 插件且 stopwords 和 stopword_step=0 的索引数据索引错误
-
Commit 2add 修复了索引定义中仍使用 aot 词形还原器时缺少 lemmatizer_base 导致崩溃的问题
-
REGEX 函数
-
json API 搜索的 limit/offset 支持
-
qcache 的性能分析点
-
Commit eb3c 修复了 FACET 多属性宽类型时服务器崩溃的问题
-
Commit d915 修复了 FACET 查询主选择列表中隐式 group by 问题
-
Commit 5c25 修复了带 GROUP N BY 查询时崩溃的问题
-
Commit 85d3 修复了内存操作崩溃处理时的死锁问题
-
Commit 8516 修复了 indextool 检查时的内存消耗问题
-
Commit 58fb 修复了不再需要 gmock 头文件的问题,上游已自行解决
-
远程分布式索引的 SHOW THREADS 显示原始查询而非 API 调用
-
SHOW THREADS 新增选项
format=sphinxql,以 SQL 格式打印所有查询 -
SHOW PROFILE 增加了
clone_attrs阶段的打印 -
Commit 4f15 修复了在无 malloc_stats、malloc_trim 的 libc 上构建失败的问题
-
Commit f974 修复了 CALL KEYWORDS 结果集中单词内特殊符号的问题
-
Commit 0920 修复了通过 API 调用分布式索引或远程代理的 CALL KEYWORDS 失效问题
-
Commit fd68 修复了分布式索引 agent_query_timeout 未正确传递给代理作为 max_query_time 的问题
-
Commit 4ffa 修复了磁盘块总文档计数被 OPTIMIZE 命令影响,导致权重计算错误的问题
-
Commit dcaf 修复了混合 RT 索引中多个尾部命中问题
-
Commit eee3 修复了轮换时的死锁问题
-
CALL KEYWORDS 的 sort_mode 选项
-
VIP 连接上的 DEBUG 可以执行 'crash
' 来在服务器上故意触发 SIGEGV 操作 -
DEBUG 可以执行 'malloc_stats' 来在 searchd.log 中转储 malloc 统计信息,'malloc_trim' 来执行 malloc_trim()
-
如果系统上存在 gdb,则改进了回溯功能
-
Commit 0f3c 修复了 Windows 上 rename 导致的崩溃或失败
-
Commit 1455 修复了 32 位系统上服务器崩溃的问题
-
Commit ad37 修复了空 SNIPPET 表达式导致的服务器崩溃或挂起
-
Commit b36d 修复了非渐进式优化的损坏,并修正了渐进式优化不为最旧磁盘块创建 kill-list 的问题
-
Commit 34b0 修复了线程池工作模式下 SQL 和 API 的 queue_max_length 错误回复
-
Commit ae4b 修复了向设置了 regexp 或 rlp 选项的 PQ 索引添加全扫描查询时的崩溃
-
Commit f80f 修复了连续调用多个 PQ 时的崩溃
-
Commit 9742 重构 AcquireAccum
-
Commit 39e5 修复了调用 pq 后的内存泄漏
-
Commit 21bc 美化重构(c++11 风格的构造函数、默认值、nullptr)
-
Commit 2d69 修复了尝试向 PQ 索引插入重复项时的内存泄漏
-
Commit 5ed9 修复了 JSON 字段 IN 语句中大值导致的崩溃
-
Commit 4a52 修复了对设置了扩展限制的 RT 索引执行 CALL KEYWORDS 语句时服务器崩溃
-
Commit 5526 修复了 PQ 匹配查询中的无效过滤器
-
Commit 204f 为 ptr 属性引入小对象分配器
-
Commit 2545 将 ISphFieldFilter 重构为引用计数版本
-
Commit 1366 修复了在非终止字符串上使用 strtod 导致的未定义行为/SIGSEGV
-
Commit 94bc 修复了 json 结果集处理中的内存泄漏
-
Commit e78e 修复了应用属性添加时对内存块末尾的越界读取
-
Commit fad5 重构 CSphDict 为引用计数版本
-
Commit fd84 修复了 AOT 内部类型外泄
-
Commit 5ee7 修复了分词器管理的内存泄漏
-
Commit 116c 修复了 grouper 中的内存泄漏
-
Commit 56fd 为 matches 中的动态指针提供特殊的释放/复制(grouper 内存泄漏)
-
Commit b1fc 修复了 RT 动态字符串的内存泄漏
-
Commit 517b 重构 grouper
-
Commit b1fc 小幅重构(c++11 构造函数,一些格式调整)
-
Commit 7034 将 ISphMatchComparator 重构为引用计数版本
-
Commit b1fc 私有化 cloner
-
Commit efbc 简化 MVA_UPSIZE、DOCINFO2ID_T、DOCINFOSETID 的本地小端处理
-
Commit 6da0 为 ubertests 添加 valgrind 支持
-
Commit 1d17 修复了连接上 'success' 标志的竞态导致的崩溃
-
Commit 5a09 将 epoll 切换为边缘触发模式
-
Commit 5d52 修复了表达式中 IN 语句格式类似过滤器时的问题
-
Commit bd8b 修复了在提交具有大 docid 的文档时 RT 索引崩溃的问题
-
Commit ce65 修复了 indextool 中无参数选项的问题
-
Commit 08c9 修复了扩展关键字的内存泄漏
-
Commit 30c7 修复了 json grouper 的内存泄漏
-
Commit 6023 修复了全局用户变量的泄漏
-
Commit 7c13 修复了早期拒绝匹配时动态字符串的泄漏
-
Commit 9154 修复了 length(
) 的泄漏 -
Commit 43fc 修复了 parser 中因 strdup() 导致的内存泄漏
-
Commit 71ff 重构表达式解析器以准确跟踪引用计数
-
与 MySQL 8 客户端兼容
-
支持带 RECONFIGURE 的 TRUNCATE
-
取消了 RT 索引的 SHOW STATUS 中的内存计数器
-
多代理的全局缓存
-
改进了 Windows 上的 IOCP
-
HTTP 协议的 VIP 连接
-
Manticore SQL 的 DEBUG 命令,可运行各种子命令
-
shutdown_token - 使用 DEBUG 命令调用
shutdown所需的密码 SHA1 哈希 -
新增 SHOW AGENT STATUS 的统计信息 (_ping, _has_perspool, _need_resolve)
-
indexer 的 --verbose 选项现在支持 [debugvv] 用于打印调试信息
-
Commit 3900 移除了 optimize 时的写锁
-
Commit 4c33 修复了重新加载索引设置时的写锁
-
Commit b5ea 修复了带 JSON 过滤器查询时的内存泄漏
-
Commit 930e 修复了 PQ 结果集中空文档的问题
-
Commit 53de 修复了因移除任务导致的任务混淆
-
Commit cad9 修复了远程主机计数错误
-
Commit 9000 修复了解析代理描述符的内存泄漏
-
Commit 978d 修复了搜索中的泄漏
-
Commit 0193 对显式/内联 c-trs,override/final 用法进行了美化修改
-
Commit 943e 修复了本地/远程 schema 中 json 的泄漏
-
Commit 02db 修复了本地/远程 schema 中 json 排序列表达式的泄漏
-
Commit c74d 修复了常量别名的泄漏
-
Commit 6e5b 修复了预读线程的泄漏
-
Commit 39c7 修复了因 netloop 中等待卡住导致退出卡死的问题
-
Commit adaf 修复了将 HA 代理改为普通主机时 'ping' 行为卡死的问题
-
Commit 32c4 为仪表盘存储分离了垃圾回收
-
Commit 511a 修复了引用计数指针的问题
-
Commit 32c4 修复了 indextool 在索引不存在时崩溃的问题
-
Commit 156e 修复了 xmlpipe 索引中超出属性/字段的输出名称
-
Commit cdac 修复了配置中无索引器段时默认索引器的值
-
Commit e61e 修复了服务器重启后 RT 索引磁盘块中错误嵌入的停用词
-
Commit 5fba 修复了跳过幽灵(已关闭但未从轮询器中最终删除)连接的问题
-
Commit f22a 修复了混合(孤立)网络任务
-
Commit 4689 修复了写入后读取操作崩溃的问题
-
Commit 03f9 修复了在 Windows 上运行测试时 searchd 崩溃的问题
-
Commit e925 修复了在常规 connect() 中处理 EINPROGRESS 代码的问题
-
Commit 248b 修复了使用 TFO 时的连接超时问题
-
改进了 PQ 上匹配多个文档时的通配符性能
-
支持 PQ 上的全扫描查询
-
支持 PQ 上的 MVA 属性
-
支持 percolate 索引的正则表达式和 RLP
-
Commit 6885 修复了查询字符串丢失的问题
-
Commit 0f17 修复了 SHOW THREADS 语句中信息为空的问题
-
Commit 53fa 修复了使用 NOTNEAR 操作符匹配时的崩溃
-
Commit 2602 修复了 PQ 删除时错误的过滤器错误信息
-
减少系统调用次数以避免 Meltdown 和 Spectre 补丁的影响
-
本地索引管理的内部重写
-
远程摘要重构
-
完整配置重载
-
所有节点连接现在都是独立的
-
协议改进
-
Windows 通信从 wsapoll 切换到 IO 完成端口
-
主节点和节点之间的通信可以使用 TFO
-
SHOW STATUS 现在输出服务器版本和 mysql_version_string
-
为 CALL PQ 中调用的文档添加了
docs_id选项 -
percolate 查询过滤器现在可以包含表达式
-
分布式索引可以与 FEDERATED 一起工作
-
虚拟的 SHOW NAMES COLLATE 和
SET wait_timeout(以更好地兼容 ProxySQL) -
Commit 5bcf 修复了 PQ 中添加的不等于标签
-
Commit 9ebc 修复了 CALL PQ 语句中添加文档 ID 字段到 JSON 文档的问题
-
Commit 8ae0 修复了 PQ 索引的刷新语句处理器
-
Commit c24b 修复了 PQ 对 JSON 和字符串属性的过滤
-
Commit 1b8b 修复了空 JSON 字符串的解析
-
Commit 1ad8 修复了多查询中带 OR 过滤器时的崩溃
-
Commit 69b8 修复了 indextool 使用配置公共部分(lemmatizer_base 选项)进行命令(dumpheader)
-
Commit 6dbe 修复了结果集和过滤器中的空字符串
-
Commit 39c4 修复了负文档 ID 值
-
Commit 266b 修复了非常长单词索引时的单词截断长度
-
Commit 4782 修复了 PQ 上通配符查询匹配多个文档的问题
-
MySQL FEDERATED 引擎支持
-
MySQL 数据包现在返回 SERVER_STATUS_AUTOCOMMIT 标志,增强了与 ProxySQL 的兼容性
-
listen_tfo - 为所有监听器启用 TCP Fast Open 连接
-
indexer --dumpheader 现在也可以从 .meta 文件中转储 RT 头信息
-
Ubuntu Bionic 的 cmake 构建脚本
-
Commit 355b 修复了 RT 索引的无效查询缓存条目;
-
Commit 546e 修复了无缝轮换后索引设置丢失的问题
-
Commit 0c45 修复了中缀与前缀长度设置问题;添加了对不支持中缀长度的警告
-
Commit 8054 修复了 RT 索引自动刷新顺序
-
Commit 705d 修复了多属性索引和多索引查询的结果集模式问题
-
Commit b0ba 修复了批量插入时文档重复导致部分命中丢失的问题
-
Commit 4510 修复了优化失败合并包含大量文档的 RT 索引磁盘块的问题
-
编译时使用 jemalloc。如果系统中存在 jemalloc,可以通过 cmake 标志
-DUSE_JEMALLOC=1启用 -
提交 85a6 修复了 Manticore SQL 查询日志中的 expand_keywords 选项
-
提交 caaa 修复了 HTTP 接口以正确处理大尺寸查询
-
提交 e386 修复了启用 index_field_lengths 时对 RT 索引执行 DELETE 导致服务器崩溃的问题
-
提交 cd53 修复了 cpustats searchd CLI 选项在不支持的系统上的工作问题
-
提交 8740 修复了定义了最小长度时 utf8 子串匹配的问题
-
在使用 NOT 操作符和批量文档时,改进了Percolate 查询的性能。
-
percolate_query_call 可以根据 dist_threads 使用多线程
-
新增全文匹配操作符 NOTNEAR/N
-
对 percolate 索引的 SELECT 支持 LIMIT
-
expand_keywords 可以接受 'start','exact'(其中 'start,exact' 与 '1' 效果相同)
-
对使用 sql_query_range 定义的范围查询的 joined fields 支持 ranged-main-query
-
提交 72dc 修复了搜索内存段时崩溃;双缓冲保存磁盘块时死锁;优化期间保存磁盘块时死锁
-
提交 3613 修复了索引器在 xml 嵌入式 schema 中属性名为空时崩溃的问题
-
提交 48d7 修复了错误地取消链接非拥有的 pid 文件的问题
-
提交 a556 修复了临时文件夹中有时遗留孤立 FIFO 的问题
-
提交 2376 修复了 FACET 结果集为空时错误的 NULL 行问题
-
提交 4842 修复了作为 Windows 服务运行服务器时索引锁损坏的问题
-
提交 be35 修复了 mac os 上错误的 iconv 库问题
-
提交 8374 修复了错误的 count(*) 计算
-
agent_retry_count 对于带镜像的代理,重试次数现在表示每个镜像的重试次数,总重试次数为 agent_retry_count*镜像数。
-
agent_retry_count 现在可以针对每个索引指定,覆盖全局值。新增别名 mirror_retry_count。
-
可以在代理定义中指定 retry_count,表示每个代理的重试次数
-
Percolate 查询现在支持 HTTP JSON API,路径为 /json/pq。
-
为可执行文件添加了 -h 和 -v 选项(帮助和版本)
-
morphology_skip_fields 支持实时索引
-
提交 a40b 修复了 ranged-main-query 在 MVA 字段使用 sql_range_step 时的正确工作
-
提交 f2f5 修复了黑洞系统循环挂起和黑洞代理似乎断开连接的问题
-
提交 84e1 修复了查询 ID 不一致,修复了存储查询的重复 ID
-
提交 1948 修复了服务器在各种状态下关闭时崩溃的问题
-
提交 3359 重构了基于 kqueue 的系统(Mac OS X,BSD)上的主代理网络轮询
-
HTTP JSON:JSON 查询现在可以对属性进行等值查询,MVA 和 JSON 属性可以用于插入和更新,通过 JSON API 可以对分布式索引执行更新和删除
-
移除了对 32 位 docid 的支持,同时移除了所有转换/加载带有 32 位 docid 的旧索引的代码。
-
仅对特定字段应用形态学。新增索引指令 morphology_skip_fields,允许定义不应用形态学的字段列表。
-
expand_keywords 现在可以通过 OPTION 语句设置为查询运行时指令
-
Commit 0cfa 修复了使用 rlp 构建时服务器调试版本崩溃(以及发布版本可能的未定义行为)
-
Commit 3242 修复启用 progressive 选项时 RT 索引优化合并 kill-list 顺序错误的问题
-
Commit ac0e mac 上的轻微崩溃修复
-
经过彻底的静态代码分析后修复了许多小问题
-
其他小的 bug 修复
在此版本中,我们更改了主节点和代理之间通信所使用的内部协议。如果您在分布式环境中运行 Manticoresearch 并有多个实例,请确保先升级代理,然后升级主节点。
-
HTTP API 协议 支持 JSON 查询。支持搜索、插入、更新、删除、替换操作。数据操作命令也可以批量执行,目前有一些限制,如 MVA 和 JSON 属性不能用于插入、替换或更新。
-
FLUSH LOGS 命令
-
SHOW THREADS 可以显示优化、轮换或刷新进度。
-
GROUP N BY 正确支持 MVA 属性
-
黑洞代理运行在独立线程,不再影响主查询
-
实现了索引的引用计数,避免轮换和高负载时的停顿
-
实现了 SHA1 哈希,尚未对外暴露
-
修复了在 FreeBSD、macOS 和 Alpine 上的编译问题
-
Commit 9897 修复了块索引的过滤回归问题
-
Commit b1c3 将 PAGE_SIZE 重命名为 ARENA_PAGE_SIZE 以兼容 musl
-
Commit f213 禁用 cmake 版本低于 3.1.0 的 googletests
-
Commit f30e 修复服务器重启时绑定套接字失败
-
Commit 0807 修复服务器关闭时崩溃
-
Commit 3e3a 修复系统黑洞线程的 show threads
-
Commit 262c 重构了 iconv 的配置检查,修复了 FreeBSD 和 Darwin 上的构建问题
- WHERE 子句中属性过滤器之间支持 OR 操作符
- 维护模式(SET MAINTENANCE=1)
- CALL KEYWORDS 支持分布式索引
- UTC 分组
- query_log_mode 支持自定义日志文件权限
- 字段权重可以为零或负数
- max_query_time 现在可以影响全扫描
- 新增 net_wait_tm、net_throttle_accept 和 net_throttle_action 用于网络线程的细粒度调优(当 workers=thread_pool 时)
- COUNT DISTINCT 支持 facet 搜索
- IN 可以用于 JSON 浮点数组
- 多查询优化不再被整数/浮点表达式破坏
- SHOW META 在使用多查询优化时显示
multiplier行
Manticore Search 使用 cmake 构建,最低 gcc 版本要求为 4.7.2。
-
Manticore Search 以
manticore用户身份运行。 -
默认数据文件夹现在是
/var/lib/manticore/。 -
默认日志文件夹现在是
/var/log/manticore/。 -
默认 pid 文件夹现在是
/var/run/manticore/。 -
Commit a58c 修复了导致 Java 连接器出错的 SHOW COLLATION 语句
-
Commit 631c 修复了处理分布式索引时的崩溃;为分布式索引哈希添加锁;移除了代理的移动和复制操作符
-
Commit 942b 修复了因并行重连导致的分布式索引处理崩溃
-
Commit e5c1 修复了在将查询存储到服务器日志时崩溃处理器崩溃的问题
-
Commit 4a4b 修复了多查询中使用池化属性时的崩溃
-
Commit 3873 通过防止索引页被包含进核心文件,减少了核心文件大小
-
Commit 11e6 修复了指定无效代理时 searchd 启动崩溃
-
Commit 4ca6 修复了索引器在 sql_query_killlist 查询中报告错误
-
Commit 123a 修复了 fold_lemmas=1 与命中计数的问题
-
Commit cb99 修复了 html_strip 行为不一致的问题
-
Commit e406 修复了优化 rt 索引时丢失新设置的问题;修复了带同步选项的优化锁泄漏;
-
Commit 86ae 修复了错误多查询的处理问题
-
Commit 2645 修复了结果集依赖于多查询顺序的问题
-
Commit 7239 修复了多查询中出现错误查询时服务器崩溃的问题
-
Commit f353 修复了从共享锁到独占锁的问题
-
Commit 3754 修复了无索引查询导致的服务器崩溃
-
Commit 29f3 修复了服务器死锁问题
-
Manticore 品牌标识
-
Manticore branding
不幸的是,Manticore 还没有达到 100% 无错误,尽管开发团队正在为此目标努力工作。您可能会不时遇到一些问题。 报告每个错误时尽可能多地提供信息对于有效修复错误至关重要。 要修复错误,必须重现并修复它,或者根据您提供的信息推断其原因。为此,请遵循以下说明。
错误和功能请求在 Github 上跟踪。欢迎您创建新工单,详细描述您的错误,以节省您和开发人员的时间。
文档的更新(您现在正在阅读的内容)也在 Github 上进行。
Manticore Search 是用 C++ 编写的,这是一种低级编程语言,允许与计算机直接通信以获得更快的性能。然而,这种方法有一个缺点,在极少数情况下,可能无法通过写错误日志并跳过导致问题的命令来优雅地处理错误。相反,程序可能会崩溃,导致完全停止并需要重新启动。
当 Manticore Search 崩溃时,重要的是通过在 GitHub 上提交错误报告或通过您私有帮助台中的 Manticore 专业服务让 Manticore 团队知道。Manticore 团队需要以下信息:
- searchd 日志
- coredump
- 查询日志
此外,如果您能做以下操作将会很有帮助:
- 运行 gdb 检查 coredump:
gdb /usr/bin/searchd </path/to/coredump> - 在 coredump 文件名中找到崩溃线程 ID(确保您在 /proc/sys/kernel/core_pattern 中有
%p),例如core.work_6.29050.server_name.1637586599表示 thread_id=29050 - 在 gdb 中运行:
set pagination off info threads # find thread number by it's id (e.g. for `LWP 29050` it will be thread number 8 thread apply all bt thread <thread number> bt full info locals quit - 提供输出结果
如果 Manticore Search 卡住,您需要收集一些可能有助于理解原因的信息。方法如下:
- 通过 VIP 端口 运行
show threads option format=all - 收集 lsof 输出,因为卡住可能是由过多连接或打开的文件描述符引起的。
lsof -p `cat /run/manticore/searchd.pid` - 转储 core:
gcore `cat /run/manticore/searchd.pid`(它会将转储保存到当前目录。)
- 安装并运行 gdb:
gdb /usr/bin/searchd `cat /run/manticore/searchd.pid`注意,这将暂停您正在运行的 searchd,但如果它已经卡住,这不应成为问题。
- 在 gdb 中运行:
set pagination off info threads thread apply all bt quit - 收集所有输出和文件,并在错误报告中提供。
对于专家:在此提交中添加的宏在调试时可能会有帮助。
- 确保您使用
--coredump运行 searchd。为了避免修改脚本,您可以使用 https://manual.manticoresearch.com/Starting_the_server/Linux#Custom-startup-flags-using-systemd 方法。例如:
[root@srv lib]# systemctl set-environment _ADDITIONAL_SEARCHD_PARAMS='--coredump'
[root@srv lib]# systemctl restart manticore
[root@srv lib]# ps aux|grep searchd
mantico+ 1955 0.0 0.0 61964 1580 ? S 11:02 0:00 /usr/bin/searchd --config /etc/manticoresearch/manticore.conf --coredump
mantico+ 1956 0.6 0.0 392744 2664 ? Sl 11:02 0:00 /usr/bin/searchd --config /etc/manticoresearch/manticore.conf --coredump
-
确保您的操作系统允许保存 core dump,检查
/proc/sys/kernel/core_pattern不为空。这是保存 core dump 的位置。要将 core dump 保存到如core.searchd.1773.centos-4gb-hel1-1.1636454937的文件,请运行以下命令:echo "/cores/core.%e.%p.%h.%t" > /proc/sys/kernel/core_pattern -
searchd 应该以
ulimit -c unlimited启动。如果您使用 systemctl 启动 Manticore,它会自动将限制设置为无限,如 manticore.service 文件中的以下行所示:[root@srv lib]# grep CORE /lib/systemd/system/manticore.service LimitCORE=infinity
Manticore Search 和 Manticore Columnar Library 是用 C++ 编写的,生成的二进制文件在您的操作系统上以最佳方式执行。然而,运行二进制文件时,系统无法完全访问变量、函数、方法和类的名称。这些信息包含在单独的“调试信息”或“符号包”中。
调试符号对于故障排除和调试至关重要,因为它们允许您在崩溃时可视化系统状态,包括函数名称。Manticore Search 在 searchd 日志中提供回溯,并在使用 --coredump 标志运行时生成 coredump。没有符号,您只能看到内部偏移量,难以或无法解码崩溃原因。如果您需要提交崩溃的错误报告,Manticore 团队通常需要调试符号来协助您。
要安装 Manticore Search/Manticore Columnar Library 的调试符号,您需要为 CentOS 安装 *debuginfo* 包,为 Ubuntu 和 Debian 安装 *dbgsym* 包,或为 Windows 和 macOS 安装 *dbgsymbols* 包。这些包应与已安装的 Manticore 版本相同。例如,如果您在 Centos 8 中从包 https://repo.manticoresearch.com/repository/manticoresearch/release/centos/8/x86_64/manticore-4.0.2_210921.af497f245-1.el8.x86_64.rpm 安装了 Manticore Search,则对应的符号包为 https://repo.manticoresearch.com/repository/manticoresearch/release/centos/8/x86_64/manticore-debuginfo-4.0.2_210921.af497f245-1.el8.x86_64.rpm
请注意,这两个包具有相同的提交 ID af497f245,对应于此版本构建所基于的提交。
如果您是从 Manticore APT/YUM 仓库安装的 Manticore,可以使用以下工具之一:
- CentOS 7 中的
debuginfo-install - CentOS 8 中的
dnf debuginfo-install - Debian 和 Ubuntu 中的
find-dbgsym-packages
来查找适合您的调试符号包。
- 在
file /usr/bin/searchd的输出中查找构建 ID:
[root@srv lib]# file /usr/bin/searchd
/usr/bin/searchd: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=2c582e9f564ea1fbeb0c68406c271ba27034a6d3, stripped
在此示例中,构建 ID 是 2c582e9f564ea1fbeb0c68406c271ba27034a6d3。
- 在
/usr/lib/debug/.build-id中找到如下符号:
[root@srv ~]# ls -la /usr/lib/debug/.build-id/2c/582e9f564ea1fbeb0c68406c271ba27034a6d3*
lrwxrwxrwx. 1 root root 23 Nov 9 10:42 /usr/lib/debug/.build-id/2c/582e9f564ea1fbeb0c68406c271ba27034a6d3 -> ../../../../bin/searchd
lrwxrwxrwx. 1 root root 27 Nov 9 10:42 /usr/lib/debug/.build-id/2c/582e9f564ea1fbeb0c68406c271ba27034a6d3.debug -> ../../usr/bin/searchd.debug
为了修复您的错误,开发人员通常需要在本地重现它。为此,他们需要您的配置文件、表文件、binlog(如果存在),有时还需要源数据(例如来自外部存储或 XML/CSV 文件的数据)和查询。
当您在 Github 上创建工单时,请附上您的数据。如果数据过大或敏感,您可以将其上传到我们的只写 S3 存储,地址为 s3://s3.manticoresearch.com/write-only/。
为了方便操作,我们提供了一个使用 Docker 镜像的上传机制。该镜像基于我们的开源仓库 github.com/manticoresoftware/s3-upload 构建,帮助您轻松上传数据到 Manticore 的只写 S3 存储。操作步骤如下:
- 进入包含您要上传文件的目录,运行:
docker run -it --rm -v $(pwd):/upload manticoresearch/upload - 该命令将会:
- 询问您输入相关问题的 URL/编号
- 上传当前目录下的所有文件到我们的只写 S3 存储
- 最后,您将看到一个上传路径。请将此路径分享给开发人员。
- Example
docker run -it --rm -v $(pwd):/upload manticoresearch/upload🚀 Welcome to Manticore Search Upload Tool! 🚀
📂 Files to be uploaded:
tt (800)
🔗 Please enter the related issue URL/number
(e.g., https://github.com/manticoresoftware/manticoresearch/issues/123 or just 123):
123
📤 Starting upload process...
INFO: Cache file not found or empty, creating/populating it.
INFO: Compiling list of local files...
INFO: Running stat() and reading/calculating MD5 values on 23 files, this may take some time...
INFO: Summary: 23 local files to upload
upload: './tt/tt.0.spa' -> 's3://write-only/issue-20250219-123/tt/tt.0.spa' [1 of 23]
40 of 40 100% in 2s 15.03 B/s done
upload: './tt/tt.0.spd' -> 's3://write-only/issue-20250219-123/tt/tt.0.spd' [2 of 23]
1 of 1 100% in 0s 1.99 B/s done
upload: './tt/tt.0.spe' -> 's3://write-only/issue-20250219-123/tt/tt.0.spe' [3 of 23]
1 of 1 100% in 0s 2.02 B/s done
upload: './tt/tt.0.sph' -> 's3://write-only/issue-20250219-123/tt/tt.0.sph' [4 of 23]
420 of 420 100% in 0s 895.32 B/s done
upload: './tt/tt.0.sphi' -> 's3://write-only/issue-20250219-123/tt/tt.0.sphi' [5 of 23]
66 of 66 100% in 0s 142.67 B/s done
upload: './tt/tt.0.spi' -> 's3://write-only/issue-20250219-123/tt/tt.0.spi' [6 of 23]
18 of 18 100% in 0s 39.13 B/s done
upload: './tt/tt.0.spidx' -> 's3://write-only/issue-20250219-123/tt/tt.0.spidx' [7 of 23]
145 of 145 100% in 0s 313.38 B/s done
upload: './tt/tt.0.spm' -> 's3://write-only/issue-20250219-123/tt/tt.0.spm' [8 of 23]
4 of 4 100% in 0s 8.36 B/s done
upload: './tt/tt.0.spp' -> 's3://write-only/issue-20250219-123/tt/tt.0.spp' [9 of 23]
1 of 1 100% in 0s 2.15 B/s done
upload: './tt/tt.0.spt' -> 's3://write-only/issue-20250219-123/tt/tt.0.spt' [10 of 23]
36 of 36 100% in 0s 78.35 B/s done
upload: './tt/tt.1.spa' -> 's3://write-only/issue-20250219-123/tt/tt.1.spa' [11 of 23]
48 of 48 100% in 0s 81.35 B/s done
upload: './tt/tt.1.spd' -> 's3://write-only/issue-20250219-123/tt/tt.1.spd' [12 of 23]
1 of 1 100% in 0s 1.65 B/s done
upload: './tt/tt.1.spe' -> 's3://write-only/issue-20250219-123/tt/tt.1.spe' [13 of 23]
1 of 1 100% in 0s 1.95 B/s done
upload: './tt/tt.1.sph' -> 's3://write-only/issue-20250219-123/tt/tt.1.sph' [14 of 23]
420 of 420 100% in 0s 891.58 B/s done
upload: './tt/tt.1.sphi' -> 's3://write-only/issue-20250219-123/tt/tt.1.sphi' [15 of 23]
82 of 82 100% in 0s 166.42 B/s done
upload: './tt/tt.1.spi' -> 's3://write-only/issue-20250219-123/tt/tt.1.spi' [16 of 23]
18 of 18 100% in 0s 39.46 B/s done
upload: './tt/tt.1.spidx' -> 's3://write-only/issue-20250219-123/tt/tt.1.spidx' [17 of 23]
183 of 183 100% in 0s 374.04 B/s done
upload: './tt/tt.1.spm' -> 's3://write-only/issue-20250219-123/tt/tt.1.spm' [18 of 23]
4 of 4 100% in 0s 8.42 B/s done
upload: './tt/tt.1.spp' -> 's3://write-only/issue-20250219-123/tt/tt.1.spp' [19 of 23]
1 of 1 100% in 0s 1.28 B/s done
upload: './tt/tt.1.spt' -> 's3://write-only/issue-20250219-123/tt/tt.1.spt' [20 of 23]
50 of 50 100% in 1s 34.60 B/s done
upload: './tt/tt.lock' -> 's3://write-only/issue-20250219-123/tt/tt.lock' [21 of 23]
0 of 0 0% in 0s 0.00 B/s done
upload: './tt/tt.meta' -> 's3://write-only/issue-20250219-123/tt/tt.meta' [22 of 23]
456 of 456 100% in 0s 923.34 B/s done
upload: './tt/tt.settings' -> 's3://write-only/issue-20250219-123/tt/tt.settings' [23 of 23]
3 of 3 100% in 0s 6.41 B/s done
✅ Upload complete!
📋 Please share this path with the developers:
issue-20250219-123
💡 Tip: Make sure to include this path when communicating with the Manticore team另外,您也可以使用 S3 的 Minio 客户端 或 Amazon 的 s3cmd 工具实现同样功能,例如:
- 安装客户端 https://min.io/docs/minio/linux/reference/minio-mc.html#install-mc
例如在 64 位 Linux 上:
curl https://dl.min.io/client/mc/release/linux-amd64/mc \ --create-dirs \ -o $HOME/minio-binaries/mc chmod +x $HOME/minio-binaries/mc export PATH=$PATH:$HOME/minio-binaries/ - 添加我们的 s3 主机(使用可执行文件的完整路径或切换到其目录):
cd $HOME/minio-binaries,然后执行./mc config host add manticore http://s3.manticoresearch.com:9000 manticore manticore - 复制您的文件(使用可执行文件的完整路径或切换到其目录):
cd $HOME/minio-binaries,然后执行./mc cp -r issue-1234/ manticore/write-only/issue-1234。确保文件夹名称唯一,最好与您在 GitHub 上描述该错误的问题编号对应。
DEBUG [ subcommand ]
DEBUG 语句设计供开发人员和测试人员调用各种内部或 VIP 命令。然而,它不适合生产环境使用,因为 subcommand 组件的语法可能在任何构建版本中自由更改。
要查看当前上下文中可用的有用命令和 DEBUG 语句子命令列表,只需调用不带任何参数的 DEBUG。
mysql> debug;
+-------------------------------------------------------------------------+----------------------------------------------------------------------------------------+
| command | meaning |
+-------------------------------------------------------------------------+----------------------------------------------------------------------------------------+
| flush logs | emulate USR1 signal |
| reload indexes | emulate HUP signal |
| debug token <password> | calculate token for password |
| debug malloc_stats | perform 'malloc_stats', result in searchd.log |
| debug malloc_trim | pefrorm 'malloc_trim' call |
| debug sleep <N> | sleep for <N> seconds |
| debug tasks | display global tasks stat (use select from @@system.tasks instead) |
| debug sched | display task manager schedule (use select from @@system.sched instead) |
| debug merge <TBL> [chunk] <X> [into] [chunk] <Y> [option sync=1,byid=0] | For RT table <TBL> merge disk chunk X into disk chunk Y |
| debug drop [chunk] <X> [from] <TBL> [option sync=1] | For RT table <TBL> drop disk chunk X |
| debug files <TBL> [option format=all|external] | list files belonging to <TBL>. 'all' - including external (wordforms, stopwords, etc.) |
| debug close | ask server to close connection from it's side |
| debug compress <TBL> [chunk] <X> [option sync=1] | Compress disk chunk X of RT table <TBL> (wipe out deleted documents) |
| debug split <TBL> [chunk] <X> on @<uservar> [option sync=1] | Split disk chunk X of RT table <TBL> using set of DocIDs from @uservar |
| debug wait <cluster> [like 'xx'] [option timeout=3] | wait <cluster> ready, but no more than 3 secs. |
| debug wait <cluster> status <N> [like 'xx'] [option timeout=13] | wait <cluster> commit achieve <N>, but no more than 13 secs |
| debug meta | Show max_matches/pseudo_shards. Needs set profiling=1 |
| debug trace OFF|'path/to/file' [<N>] | trace flow to file until N bytes written, or 'trace OFF' |
| debug curl <URL> | request given url via libcurl |
+-------------------------------------------------------------------------+----------------------------------------------------------------------------------------+
19 rows in set (0.00 sec)
VIP 连接中同样适用:
mysql> debug;
+-------------------------------------------------------------------------+----------------------------------------------------------------------------------------+
| command | meaning |
+-------------------------------------------------------------------------+----------------------------------------------------------------------------------------+
| flush logs | emulate USR1 signal |
| reload indexes | emulate HUP signal |
| debug shutdown <password> | emulate TERM signal |
| debug crash <password> | crash daemon (make SIGSEGV action) |
| debug token <password> | calculate token for password |
| debug malloc_stats | perform 'malloc_stats', result in searchd.log |
| debug malloc_trim | pefrorm 'malloc_trim' call |
| debug procdump | ask watchdog to dump us |
| debug setgdb on|off | enable or disable potentially dangerous crash dumping with gdb |
| debug setgdb status | show current mode of gdb dumping |
| debug sleep <N> | sleep for <N> seconds |
| debug tasks | display global tasks stat (use select from @@system.tasks instead) |
| debug sched | display task manager schedule (use select from @@system.sched instead) |
| debug merge <TBL> [chunk] <X> [into] [chunk] <Y> [option sync=1,byid=0] | For RT table <TBL> merge disk chunk X into disk chunk Y |
| debug drop [chunk] <X> [from] <TBL> [option sync=1] | For RT table <TBL> drop disk chunk X |
| debug files <TBL> [option format=all|external] | list files belonging to <TBL>. 'all' - including external (wordforms, stopwords, etc.) |
| debug close | ask server to close connection from it's side |
| debug compress <TBL> [chunk] <X> [option sync=1] | Compress disk chunk X of RT table <TBL> (wipe out deleted documents) |
| debug split <TBL> [chunk] <X> on @<uservar> [option sync=1] | Split disk chunk X of RT table <TBL> using set of DocIDs from @uservar |
| debug wait <cluster> [like 'xx'] [option timeout=3] | wait <cluster> ready, but no more than 3 secs. |
| debug wait <cluster> status <N> [like 'xx'] [option timeout=13] | wait <cluster> commit achieve <N>, but no more than 13 secs |
| debug meta | Show max_matches/pseudo_shards. Needs set profiling=1 |
| debug trace OFF|'path/to/file' [<N>] | trace flow to file until N bytes written, or 'trace OFF' |
| debug curl <URL> | request given url via libcurl |
+-------------------------------------------------------------------------+----------------------------------------------------------------------------------------+
24 rows in set (0.00 sec)
所有 debug XXX 命令都应视为不稳定,随时可能修改,因此如果它们发生变化,请不要感到惊讶。此示例输出可能不反映实际可用命令,建议您在自己的系统上尝试以查看实例中可用的命令。此外,除了这简短的“含义”列外,没有提供详细文档。
作为快速说明,下面描述了两个仅对 VIP 客户端可用的命令——shutdown 和 crash。两者都需要一个令牌,该令牌可以通过 debug token 子命令生成,并添加到配置文件 searchd 部分的 shutdown_token 参数中。如果不存在该部分,或者提供的密码哈希与配置中存储的令牌不匹配,则子命令不会执行任何操作。
mysql> debug token hello;
+-------------+------------------------------------------+
| command | result |
+-------------+------------------------------------------+
| debug token | aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d |
+-------------+------------------------------------------+
1 row in set (0,00 sec)
子命令 shutdown 会向服务器发送 TERM 信号,导致其关闭。这可能很危险,因为没人希望意外停止生产服务。因此,它需要 VIP 连接和密码才能使用。
子命令 crash 会导致服务器崩溃。它可用于测试目的,例如测试系统管理器如何维护服务的存活性,或测试跟踪核心转储的可行性。
如果某些命令在更广泛的上下文中被发现有用,它们可能会从调试子命令移至更稳定和通用的位置(如表中示例的 debug tasks 和 debug sched)。
- CREATE TABLE - 创建新表
- CREATE TABLE LIKE - 使用另一个表作为模板创建表
- CREATE TABLE LIKE ... WITH DATA - 复制一个表
- CREATE SOURCE - 创建 Kafka 消费者源
- CREATE MATERIALIZED VIEW - 从 Kafka 消息进行数据转换
- CREATE MV - 与前者相同
- DESCRIBE - 打印表的字段列表及其类型
- ALTER TABLE - 更改表的模式/设置
- ALTER TABLE REBUILD SECONDARY - 更新/恢复二级索引
- ALTER TABLE type='distributed' - 更新/恢复二级索引
- ALTER TABLE RENAME
- ALTER MATERIALIZED VIEW {name} suspended=1 - 暂停或恢复从 Kafka 源的消费
- DROP TABLE IF EXISTS - 删除表(如果存在)
- SHOW TABLES - 显示表列表
- SHOW SOURCES - 显示 Kafka 源列表
- SHOW MATERIALIZED VIEWS - 显示物化视图列表
- SHOW MVS - 前一命令的别名
- SHOW CREATE TABLE - 显示创建表的 SQL 命令
- SHOW TABLE INDEXES - 显示表的可用二级索引信息
- SHOW TABLE STATUS - 显示当前表状态信息
- SHOW TABLE SETTINGS - 显示表设置
- SHOW LOCKS - 显示冻结表的信息
- INSERT - 添加新文档
- REPLACE - 用新文档替换现有文档
- REPLACE .. SET - 替换表中的一个或多个字段
- UPDATE - 对文档进行原地更新
- DELETE - 删除文档
- TRUNCATE TABLE - 删除表中所有文档
- BACKUP - 备份表
- SELECT - 搜索
- WHERE - 过滤条件
- GROUP BY - 分组搜索结果
- GROUP BY ORDER - 分组排序
- GROUP BY HAVING - 过滤分组
- OPTION - 查询选项
- FACET - 分面搜索
- SUB-SELECTS - 关于使用 SELECT 子查询
- JOIN - SELECT 中的表连接
- EXPLAIN QUERY - 显示查询执行计划而不运行查询
- SHOW META - 显示已执行查询的扩展信息
- SHOW PROFILE - 显示已执行查询的性能分析信息
- SHOW PLAN - 显示查询执行计划(查询执行后)
- SHOW WARNINGS - 显示最近查询的警告
- FLUSH ATTRIBUTES - 强制将更新的属性刷新到磁盘
- FLUSH HOSTNAMES - 更新与代理主机名关联的 IP
- FLUSH LOGS - 重新打开 searchd 日志和查询日志文件(类似 USR1)
- FLUSH RAMCHUNK - 强制创建新的磁盘块
- FLUSH TABLE - 将实时表的 RAM 块刷新到磁盘
- OPTIMIZE TABLE - 将实时表加入优化队列
- ATTACH TABLE - 将数据从普通表移动到实时表
- IMPORT TABLE - 将先前创建的 RT 或 PQ 表导入到以 RT 模式运行的服务器
- JOIN CLUSTER - 加入复制集群
- ALTER CLUSTER - 向复制集群添加/删除表
- SET CLUSTER - 更改复制集群设置
- DELETE CLUSTER - 删除复制集群
- RELOAD TABLE - 旋转普通表
- RELOAD TABLES - 旋转所有普通表
- CALL SUGGEST, CALL QSUGGEST - 建议拼写更正的词
- CALL SNIPPETS - 从提供的数据和查询构建高亮结果片段
- CALL PQ - 运行一个渗透查询
- CALL KEYWORDS - 用于检查关键词的分词情况。也允许检索提供关键词的分词形式
- CALL AUTOCOMPLETE - 自动补全您的搜索查询
- CREATE FUNCTION - 安装用户自定义函数(UDF)
- DROP FUNCTION - 删除用户自定义函数(UDF)
- CREATE PLUGIN - 安装插件
- CREATE BUDDY PLUGIN - 安装 Buddy 插件
- DROP PLUGIN - 删除插件
- DROP BUDDY PLUGIN - 删除 Buddy 插件
- RELOAD PLUGINS - 从指定库重新加载所有插件
- ENABLE BUDDY PLUGIN - 重新激活之前禁用的 Buddy 插件
- DISABLE BUDDY PLUGIN - 禁用一个激活的 Buddy 插件
- SHOW STATUS - 显示多个有用的性能计数器
- SHOW THREADS - 列出所有当前活跃的客户端线程
- SHOW VARIABLES - 列出服务器范围的变量及其值
- SHOW VERSION - 提供实例各组件的详细版本信息
- /sql - 通过 HTTP JSON 执行 SQL 语句
- /cli - 提供 HTTP 命令行界面
- /insert - 向实时表插入文档
- /pq/tbl_name/doc - 向渗透表添加 PQ 规则
- /update - 更新实时表中的文档
- /replace - 替换实时表中已有的文档,若不存在则插入
- /pq/tbl_name/doc/N?refresh=1 - 替换渗透表中的 PQ 规则
- /delete - 从表中删除文档
- /bulk - 在一次调用中执行多个插入、更新或删除操作。更多关于批量插入的信息请参见这里。
- /search - 执行搜索
- /search -> knn - 执行 KNN 向量搜索
- /pq/tbl_name/search - 在渗透表中执行反向搜索
- /tbl_name/_mapping - 以 Elasticsearch 风格创建表模式
- access_plain_attrs
- access_blob_attrs
- access_doclists
- access_hitlists
- access_dict
- attr_update_reserve
- bigram_freq_words
- bigram_index
- blend_chars
- blend_mode
- charset_table
- dict
- docstore_block_size
- docstore_compression
- docstore_compression_level
- embedded_limit
- exceptions
- expand_keywords
- global_idf
- hitless_words
- html_index_attrs
- html_remove_elements
- html_strip
- ignore_chars
- index_exact_words
- index_field_lengths
- index_sp
- index_token_filter
- index_zones
- infix_fields
- inplace_enable
- inplace_hit_gap
- inplace_reloc_factor
- inplace_write_factor
- jieba_hmm
- jieba_mode
- jieba_user_dict_path
- killlist_target
- max_substring_len
- min_infix_len
- min_prefix_len
- min_stemming_len
- min_word_len
- morphology
- morphology_skip_fields
- ngram_chars
- ngram_len
- overshort_step
- path
- phrase_boundary
- phrase_boundary_step
- prefix_fields
- preopen
- read_buffer_docs
- read_buffer_hits
- regexp_filter
- stopwords
- stopword_step
- stopwords_unstemmed
- type
- wordforms
- local
- agent
- agent_connect_timeout
- agent_blackhole
- agent_persistent
- agent_query_timeout
- agent_retry_count
- ha_strategy
- mirror_retry_count
- rt_attr_bigint
- rt_attr_bool
- rt_attr_float
- rt_attr_float_vector
- rt_attr_json
- rt_attr_multi_64
- rt_attr_multi
- rt_attr_string
- rt_attr_timestamp
- rt_attr_uint
- rt_field
- rt_mem_limit
- diskchunk_flush_write_timeout
- diskchunk_flush_search_timeout
- OR
- MAYBE
- NOT - NOT 操作符
- @field - 字段搜索操作符
- @field[N] - 字段位置限制修饰符
- @(field1,field2,...) - 多字段搜索操作符
- @!field - 忽略字段搜索操作符
- @!(field1,field2,...) - 忽略多字段搜索操作符
- @* - 全字段搜索操作符
- "word1 word2 ... " - 短语搜索操作符
- "word1 word2 ... "~N - 接近搜索操作符
- "word1 word2 ... "/N - 法定人数匹配操作符
- word1 << word2 << word3 - 严格顺序操作符
- =word1 - 精确形式修饰符
- ^word1 - 字段起始修饰符
- word2$ - 字段结束修饰符
- word^N - 关键词 IDF 提升修饰符
- word1 NEAR/N word2 - NEAR,广义接近操作符
- word1 NOTNEAR/N word2 - NOTNEAR,否定断言操作符
- word1 PARAGRAPH word2 PARAGRAPH "word3 word4" - 段落操作符
- word1 SENTENCE word2 SENTENCE "word3 word4" - 句子操作符
- ZONE:(h3,h4) - 区域限制操作符
- ZONESPAN:(h2) - 区域跨度限制操作符
- @@relaxed - 抑制缺失字段的错误
- t?st - 通配符操作符
- REGEX(/pattern/) - 正则表达式操作符
- ABS() - 返回绝对值
- ATAN2() - 返回两个参数的反正切函数
- BITDOT() - 返回掩码每个位乘以其权重的乘积之和
- CEIL() - 返回大于或等于参数的最小整数值
- COS() - 返回参数的余弦值
- CRC32() - 返回参数的 CRC32 值
- EXP() - 返回参数的指数值
- FIBONACCI() - 返回第 N 个斐波那契数,其中 N 是整数参数
- FLOOR() - 返回小于或等于参数的最大整数值
- GREATEST() - 以 JSON/MVA 数组作为参数,返回该数组中的最大值
- IDIV() - 返回第一个参数除以第二个参数的整数除法结果
- LEAST() - 以 JSON/MVA 数组作为参数,返回该数组中的最小值
- LN() - 返回参数的自然对数
- LOG10() - 返回参数的常用对数
- LOG2() - 返回参数的二进制对数
- MAX() - 返回两个参数中较大的一个
- MIN() - 返回两个参数中较小的一个
- POW() - 返回第一个参数的第二个参数次幂
- RAND() - 返回 0 到 1 之间的随机浮点数
- SIN() - 返回参数的正弦值
- SQRT() - 返回参数的平方根
- BM25F() - 返回精确的 BM25F 公式值
- EXIST() - 用默认值替换不存在的列
- GROUP_CONCAT() - 生成组内所有文档属性值的逗号分隔列表
- HIGHLIGHT() - 高亮显示搜索结果
- MIN_TOP_SORTVAL() - 返回当前前 N 个匹配中最差元素的排序键值
- MIN_TOP_WEIGHT() - 返回当前前 N 个匹配中最差元素的权重
- PACKEDFACTORS() - 输出加权因子
- REMOVE_REPEATS() - 移除具有相同“列”值的重复调整行
- WEIGHT() - 返回全文匹配得分
- ZONESPANLIST() - 返回匹配区域跨度的对列表
- QUERY() - 返回当前全文查询
- BIGINT() - 强制将整数参数提升为 64 位类型
- DOUBLE() - 强制将给定参数提升为浮点类型
- INTEGER() - 强制将给定参数提升为 64 位有符号类型
- TO_STRING() - 强制将参数提升为字符串类型
- UINT() - 将给定参数转换为 32 位无符号整数类型
- UINT64() - 将给定参数转换为 64 位无符号整数类型
- SINT() - 将 32 位无符号整数解释为有符号 64 位整数
- ALL() - 如果数组中所有元素满足条件,则返回 1
- ANY() - 如果数组中任一元素满足条件,则返回 1
- CONTAINS() - 检查 (x,y) 点是否在给定多边形内
- IF() - 检查第一个参数是否等于 0.0,若不为零返回第二个参数,否则返回第三个参数
- IN() - 如果第一个参数等于其他任一参数,则返回 1,否则返回 0
- INDEXOF() - 遍历数组所有元素,返回第一个匹配元素的索引
- INTERVAL() - 返回小于第一个参数的参数的索引
- LENGTH() - 返回 MVA 中元素的数量
- REMAP() - 根据条件值允许对表达式值做一些例外处理
- NOW() - 返回当前时间戳,类型为 INTEGER
- CURTIME() - 返回本地时区的当前时间
- CURDATE() - 返回本地时区的当前日期
- UTC_TIME() - 返回 UTC 时区的当前时间
- UTC_TIMESTAMP() - 返回 UTC 时区的当前日期/时间
- SECOND() - 返回时间戳参数中的整数秒
- MINUTE() - 返回时间戳参数中的整数分钟
- HOUR() - 返回时间戳参数中的整数小时
- DAY() - 返回时间戳参数中的整数天
- MONTH() - 返回时间戳参数中的整数月
- QUARTER() - 返回时间戳参数中的整数季度
- YEAR() - 返回时间戳参数中的整数年
- DAYNAME() - 返回给定时间戳参数的星期名称
- MONTHNAME() - 返回给定时间戳参数的月份名称
- DAYOFWEEK() - 返回给定时间戳参数的整数星期索引
- DAYOFYEAR() - 返回给定时间戳参数的整数年内天数
- YEARWEEK() - 返回给定时间戳参数的整数年和当前周第一天的日期代码
- YEARMONTH() - 返回时间戳参数中的整数年和月代码
- YEARMONTHDAY() - 返回时间戳参数中的整数年、月和日代码
- TIMEDIFF() - 返回时间戳之间的差值
- DATEDIFF() - 返回两个给定时间戳之间的天数
- DATE() - 格式化时间戳参数中的日期部分
- TIME() - 格式化时间戳参数中的时间部分
- DATE_FORMAT() - 根据提供的日期和格式参数返回格式化字符串
- GEODIST() - 计算两个给定点之间的地球表面距离
- GEOPOLY2D() - 创建考虑地球曲率的多边形
- POLY2D() - 创建平面空间中的简单多边形
- CONCAT() - 连接两个或多个字符串
- REGEX() - 如果正则表达式匹配属性字符串则返回1,否则返回0
- SNIPPET() - 高亮显示搜索结果
- SUBSTRING_INDEX() - 返回指定分隔符出现次数之前的字符串子串
- CONNECTION_ID() - 返回当前连接ID
- KNN_DIST() - 返回KNN向量搜索距离
- LAST_INSERT_ID() - 返回当前会话中最后语句插入或替换的文档ID
- UUID_SHORT() - 返回一个“短”通用标识符,遵循与自动ID生成相同的算法。
放置于配置文件的 common {} 部分:
- lemmatizer_base - 词形还原字典基础路径
- progressive_merge - 定义实时表中磁盘块合并的顺序
- json_autoconv_keynames - 是否以及如何自动转换JSON属性中的键名
- json_autoconv_numbers - 自动检测并转换可能表示数字的JSON字符串为数值属性
- on_json_attr_error - 发现JSON格式错误时的处理方式
- plugin_dir - 动态库和UDF的位置
indexer 是一个用于创建 plain tables 的工具
放置于配置文件的 indexer {} 部分:
- lemmatizer_cache - 词形还原缓存大小
- max_file_field_buffer - 最大文件字段自适应缓冲区大小
- max_iops - 最大索引I/O操作次数每秒
- max_iosize - 最大允许的I/O操作大小
- max_xmlpipe2_field - XMLpipe2源类型允许的最大字段大小
- mem_limit - 索引使用的内存限制
- on_file_field_error - 如何处理文件字段中的IO错误
- write_buffer - 写缓冲区大小
- ignore_non_plain - 忽略关于非普通表的警告
indexer [OPTIONS] [indexname1 [indexname2 [...]]]
- --all - 从配置中重建所有表
- --buildstops - 分析表源,仿佛在索引数据,生成索引词列表
- --buildfreqs - 为 --buildstops 添加频率计数到表中
- --config, -c - 指定配置文件路径
- --dump-rows - 将SQL源检索的行转储到指定文件
- --help - 显示所有可用参数
- --keep-attrs - 允许在重新索引时重用现有属性
- --keep-attrs-names - 指定从现有表中重用哪些属性
- --merge-dst-range - 在合并时应用给定的过滤范围
- --merge-killlists - 更改合并表时的杀死列表处理
- --merge - 将两个普通表合并为一个
- --nohup - 启用此选项时,防止索引器发送SIGHUP信号
- --noprogress - 隐藏进度详情
- --print-queries - 输出索引器发送到数据库的SQL查询
- --print-rt - 显示从SQL源获取的数据作为实时表的INSERT语句
- --quiet - 抑制所有输出
- --rotate - 在所有表构建完成后启动表轮换
- --sighup-each - 在每个表构建完成后触发轮换
- -v - 显示索引器版本
index_converter 是一个工具,用于将使用 Sphinx/Manticore Search 2.x 创建的表转换为 Manticore Search 3.x 的表格式。
index_converter {--config /path/to/config|--path}
- --config, -c - 表配置文件路径
- --index - 指定要转换的表
- --path - 设置包含表的路径,替代配置文件
- --strip-path - 从表引用的文件名中移除路径
- --large-docid - 允许转换ID大于2^63的文档
- --output-dir - 将新文件写入指定文件夹
- --all - 转换配置文件/路径中的所有表
- --killlist-target - 设置应用杀死列表的目标表
searchd 是 Manticore 服务器。
放置在配置文件的 searchd {} 部分:
- access_blob_attrs - 定义如何访问表的blob属性文件
- access_doclists - 定义如何访问表的doclists文件
- access_hitlists - 定义如何访问表的hitlists文件
- access_plain_attrs - 定义搜索服务器如何访问表的普通属性
- access_dict - 定义如何访问表的字典文件
- agent_connect_timeout - 远程代理连接超时
- agent_query_timeout - 远程代理查询超时
- agent_retry_count - 指定 Manticore 尝试连接和查询远程代理的次数
- agent_retry_delay - 指定在查询远程代理失败时重试的延迟时间
- attr_flush_period - 设置刷新更新属性到磁盘的时间间隔
- binlog_flush - 二进制日志事务刷新/同步模式
- binlog_max_log_size - 最大二进制日志文件大小
- binlog_common - 所有表的公共二进制日志文件
- binlog_filename_digits - 二进制日志文件名中的数字位数
- binlog_flush - 二进制日志刷新策略
- binlog_path - 二进制日志文件路径
- client_timeout - 使用持久连接时请求之间的最大等待时间
- collation_libc_locale - 服务器 libc 区域设置
- collation_server - 默认服务器排序规则
- data_dir - Manticore 存储所有内容的数据目录路径(RT 模式)
- diskchunk_flush_write_timeout - 如果没有写入,自动刷新内存块的超时时间
- diskchunk_flush_search_timeout - 如果表中没有搜索,防止自动刷新内存块的超时时间
- docstore_cache_size - 文档存储中内存中保存的文档块的最大大小
- expansion_limit - 单个通配符展开的最大关键字数量
- grouping_in_utc - 启用使用 UTC 时区对时间字段进行分组
- ha_period_karma - 代理镜像统计窗口大小
- ha_ping_interval - 代理镜像 Ping 的间隔
- hostname_lookup - 主机名更新策略
- jobs_queue_size - 定义队列中允许的最大“作业”数量
- join_batch_size - 定义表连接的批处理大小以平衡性能和内存使用
- join_cache_size - 定义用于重用 JOIN 查询结果的缓存大小
- kibana_version_string – 服务器版本字符串,响应 Kibana 请求时发送
- listen - 指定 searchd 监听的 IP 地址和端口或 Unix 域套接字路径
- listen_backlog - TCP 监听队列长度
- listen_tfo - 为所有监听器启用 TCP_FASTOPEN 标志
- log - Manticore 服务器日志文件路径
- max_batch_queries - 限制每批查询的数量
- max_connections - 最大活动连接数
- max_filters - 每个查询允许的最大过滤器数量
- max_filter_values - 每个过滤器允许的最大值数量
- max_open_files - 服务器允许打开的最大文件数
- max_packet_size - 允许的最大网络数据包大小
- mysql_version_string - 通过 MySQL 协议返回的服务器版本字符串
- net_throttle_accept - 定义网络循环每次迭代接受的客户端数量
- net_throttle_action - 定义网络循环每次迭代处理的请求数量
- net_wait_tm - 控制网络线程的忙等待循环间隔
- net_workers - 网络线程数量
- network_timeout - 客户端请求的网络超时
- node_address - 指定节点的网络地址
- persistent_connections_limit - 远程持久代理的最大同时持久连接数
- pid_file - Manticore 服务器 pid 文件路径
- predicted_time_costs - 查询时间预测模型的成本
- preopen_tables - 决定是否在启动时强制预打开所有表
- pseudo_sharding - 启用对普通表和实时表的搜索查询伪分片
- qcache_max_bytes - 分配给缓存结果集的最大内存
- qcache_thresh_msec - 查询结果被缓存的最小墙时阈值
- qcache_ttl_sec - 缓存结果集的过期时间
- query_log - 查询日志文件路径
- query_log_format - 查询日志格式
- query_log_min_msec - 防止记录过快的查询
- query_log_mode - 查询日志文件权限模式
- read_buffer_docs - 每个关键字的文档列表读取缓冲区大小
- read_buffer_hits - 每个关键字的命中列表读取缓冲区大小
- read_unhinted - 未提示的读取大小
- rt_flush_period - Manticore 将实时表的内存块刷新到磁盘的频率
- rt_merge_iops - 实时块合并线程允许执行的最大 I/O 操作数(每秒)
- rt_merge_maxiosize - 实时块合并线程允许执行的最大 I/O 操作大小
- seamless_rotate - 防止在旋转大量数据的表以预缓存时 searchd 停顿
- secondary_indexes - 启用搜索查询使用二级索引
- server_id - 用作生成唯一文档 ID 种子的服务器标识符
- shutdown_timeout - Searchd
--stopwait超时时间 - shutdown_token - 从 VIP SQL 连接调用
shutdown命令所需密码的 SHA1 哈希 - snippets_file_prefix - 在
load_files模式生成片段时添加到本地文件名前缀 - sphinxql_state - 当前 SQL 状态序列化文件路径
- sphinxql_timeout - MySQL 客户端请求之间的最大等待时间
- ssl_ca - SSL 证书颁发机构证书文件路径
- ssl_cert - 服务器的 SSL 证书路径
- ssl_key - 服务器的 SSL 证书密钥路径
- subtree_docs_cache - 最大公共子树文档缓存大小
- subtree_hits_cache - 每查询最大公共子树命中缓存大小
- timezone - 日期/时间相关函数使用的时区
- thread_stack - 任务的最大堆栈大小
- unlink_old - 是否在成功旋转时取消链接 .old 表副本
- watchdog - 是否启用或禁用 Manticore 服务器看门狗
searchd [OPTIONS]
- --config, -c - 指定配置文件路径
- --console - 强制服务器以控制台模式运行
- --coredump - 启用崩溃时保存核心转储
- --cpustats - 启用 CPU 时间报告
- --delete - 从 Microsoft 管理控制台及其他服务注册位置移除 Manticore 服务
- --force-preread - 防止服务器在预读取表文件前服务传入连接
- --help, -h - 显示所有可用参数
- --table (--index) - 限制服务器仅服务指定表
- --install - 在 Microsoft 管理控制台安装 searchd 作为服务
- --iostats - 启用输入/输出报告
- --listen, -l - 覆盖配置文件中的 listen
- --logdebug, --logdebugv, --logdebugvv - 启用服务器日志中的额外调试输出
- --logreplication - 启用服务器日志中的额外复制调试输出
- --new-cluster - 初始化复制集群并将服务器设置为带有 集群重启 保护的参考节点
- --new-cluster-force - 初始化复制集群并将服务器设置为参考节点,绕过集群重启保护
- --nodetach - 使 searchd 保持在前台运行
- --ntservice - 由 Microsoft 管理控制台用于在 Windows 平台上以服务方式启动 searchd
- --pidfile - 覆盖配置文件中的pid_file
- --port, p - 指定 searchd 应监听的端口,忽略配置文件中指定的端口
- --replay-flags - 设置额外的二进制日志重放选项
- --servicename - 在安装或删除服务时为 searchd 指定名称,该名称显示在 Microsoft 管理控制台中
- --status - 查询正在运行的搜索服务以返回其状态
- --stop - 停止 Manticore 服务器
- --stopwait - 优雅地停止 Manticore 服务器
- --strip-path - 从表中引用的所有文件名中移除路径名
- -v - 显示版本信息
- MANTICORE_TRACK_DAEMON_SHUTDOWN - 启用 searchd 关闭期间的详细日志记录
各种有助于故障排除的表维护功能。
indextool <command> [options]
用于转储与物理表相关的各种调试信息。
indextool <command> [options]
- --config, -c - 指定配置文件路径
- --quiet, -q - 使 indextool 静默运行;无横幅输出等
- --help, -h - 列出所有可用参数
- -v - 显示版本信息
- Indextool - 验证配置文件
- --buildidf - 从一个或多个字典转储构建 IDF 文件
- --build-infixes - 为现有的 dict=keywords 表构建中缀
- --dumpheader - 快速转储提供的表头文件
- --dumpconfig - 以几乎兼容 manticore.conf 格式转储给定表头文件中的表定义
- --dumpheader - 通过表名转储表头,同时在配置文件中查找表头路径
- --dumpdict - 转储表字典
- --dumpdocids - 按表名转储文档 ID
- --dumphitlist - 转储指定表中给定关键字/ID 的所有出现
- --docextract - 对整个字典/文档/命中运行表检查,并收集属于请求文档的所有词和命中
- --fold - 基于表设置测试分词
- --htmlstrip - 使用指定表的 HTML 剥离器设置过滤 STDIN
- --mergeidf - 合并多个 .idf 文件为单个文件
- --morph - 对提供的 STDIN 应用形态学处理,并将结果输出到 stdout
- --check - 检查表数据文件的一致性
- --check-id-dups - 检查重复 ID
- --check-disk-chunk - 检查 RT 表的单个磁盘块
- --strip-path - 从表中引用的所有文件名中移除路径名
- --rotate - 使用
--check时确定是否检查等待旋转的表 - --apply-killlists - 对配置文件中列出的所有表应用 kill-lists
将复合词拆分为其组成部分。
wordbreaker [-dict path/to/dictionary_file] {split|test|bench}
- STDIN - 接受要拆分的字符串
- -dict - 指定要使用的字典文件
- split|test|bench - 指定命令
使用 ispell 或 MySpell 格式提取字典文件内容
spelldump [options] <dictionary> <affix> [result] [locale-name]
- dictionary - 主字典文件
- affix - 字典的词缀文件
- result - 指定字典数据的输出目标
- locale-name - 指定要使用的区域设置详情
Manticore SQL 语法中当前保留的关键字的完整字母顺序列表(因此不能用作标识符)。
AND, AS, BY, COLUMNARSCAN, DISTINCT, DIV, DOCIDINDEX, EXPLAIN, FACET, FALSE, FORCE, FROM, IGNORE, IN, INDEXES, INNER, IS, JOIN, KNN, LEFT, LIMIT, MOD, NOT, NO_COLUMNARSCAN, NO_DOCIDINDEX, NO_SECONDARYINDEX, NULL, OFFSET, ON, OR, ORDER, RELOAD, SECONDARYINDEX, SELECT, SYSFILTERS, TRUE
- 2.4.1
- 2.5.1
- 2.6.0
- 2.6.1
- 2.6.2
- 2.6.3
- 2.6.4
- 2.7.0
- 2.7.1
- 2.7.2
- 2.7.3
- 2.7.4
- 2.7.5
- 2.8.0
- 2.8.1
- 2.8.2
- 3.0.0
- 3.0.2
- 3.1.0
- 3.1.2
- 3.2.0
- 3.2.2
- 3.3.0
- 3.4.0
- 3.4.2
- 3.5.0
- 3.5.2
- 3.5.4
- 4.0.2
- 4.2.0
- 5.0.2. 安装页面
- 6.0.0. 安装页面
- 6.0.2. 安装页面
- 6.0.4. 安装页面
- 6.2.0. 安装页面
- 6.2.12. 安装页面
- 6.3.0. 安装页面
- 6.3.2. 安装页面
- 6.3.4. 安装页面
- 6.3.6. 安装页面
- 6.3.8. 安装页面
- 7.0.0. 安装页面
- 7.4.6. 安装页面
- 9.2.14. 安装页面
- 9.3.2. 安装页面
- 10.1.0. 安装页面
- 13.2.3. 安装页面
- 13.6.7. 安装页面
- 13.11.0. 安装页面
- 13.11.1. 安装页面
- 13.13.0. 安装页面
- 14.1.0. 安装页面
- 15.1.0. 安装页面
- CREATE TABLE - 创建新表
- CREATE TABLE LIKE - 使用另一个表作为模板创建表
- CREATE TABLE LIKE ... WITH DATA - 复制一个表
- CREATE SOURCE - 创建 Kafka 消费者源
- CREATE MATERIALIZED VIEW - 从 Kafka 消息进行数据转换
- CREATE MV - 与前者相同
- DESCRIBE - 打印表的字段列表及其类型
- ALTER TABLE - 更改表的模式/设置
- ALTER TABLE REBUILD SECONDARY - 更新/恢复二级索引
- ALTER TABLE type='distributed' - 更新/恢复二级索引
- ALTER TABLE RENAME
- ALTER MATERIALIZED VIEW {name} suspended=1 - 暂停或恢复从 Kafka 源的消费
- DROP TABLE IF EXISTS - 删除表(如果存在)
- SHOW TABLES - 显示表列表
- SHOW SOURCES - 显示 Kafka 源列表
- SHOW MATERIALIZED VIEWS - 显示物化视图列表
- SHOW MVS - 前一命令的别名
- SHOW CREATE TABLE - 显示创建表的 SQL 命令
- SHOW TABLE INDEXES - 显示表的可用二级索引信息
- SHOW TABLE STATUS - 显示当前表状态信息
- SHOW TABLE SETTINGS - 显示表设置
- SHOW LOCKS - 显示冻结表的信息
- INSERT - 添加新文档
- REPLACE - 用新文档替换现有文档
- REPLACE .. SET - 替换表中的一个或多个字段
- UPDATE - 对文档进行原地更新
- DELETE - 删除文档
- TRUNCATE TABLE - 删除表中所有文档
- BACKUP - 备份表
- SELECT - 搜索
- WHERE - 过滤条件
- GROUP BY - 分组搜索结果
- GROUP BY ORDER - 分组排序
- GROUP BY HAVING - 过滤分组
- OPTION - 查询选项
- FACET - 分面搜索
- SUB-SELECTS - 关于使用 SELECT 子查询
- JOIN - SELECT 中的表连接
- EXPLAIN QUERY - 显示查询执行计划而不运行查询
- SHOW META - 显示已执行查询的扩展信息
- SHOW PROFILE - 显示已执行查询的性能分析信息
- SHOW PLAN - 显示查询执行计划(查询执行后)
- SHOW WARNINGS - 显示最近查询的警告
- FLUSH ATTRIBUTES - 强制将更新的属性刷新到磁盘
- FLUSH HOSTNAMES - 更新与代理主机名关联的 IP
- FLUSH LOGS - 重新打开 searchd 日志和查询日志文件(类似 USR1)
- FLUSH RAMCHUNK - 强制创建新的磁盘块
- FLUSH TABLE - 将实时表的 RAM 块刷新到磁盘
- OPTIMIZE TABLE - 将实时表加入优化队列
- ATTACH TABLE - 将数据从普通表移动到实时表
- IMPORT TABLE - 将先前创建的 RT 或 PQ 表导入到以 RT 模式运行的服务器
- JOIN CLUSTER - 加入复制集群
- ALTER CLUSTER - 向复制集群添加/删除表
- SET CLUSTER - 更改复制集群设置
- DELETE CLUSTER - 删除复制集群
- RELOAD TABLE - 旋转普通表
- RELOAD TABLES - 旋转所有普通表
- CALL SUGGEST, CALL QSUGGEST - 建议拼写更正的词
- CALL SNIPPETS - 从提供的数据和查询构建高亮结果片段
- CALL PQ - 运行一个渗透查询
- CALL KEYWORDS - 用于检查关键词的分词情况。也允许检索提供关键词的分词形式
- CALL AUTOCOMPLETE - 自动补全您的搜索查询
- CREATE FUNCTION - 安装用户自定义函数(UDF)
- DROP FUNCTION - 删除用户自定义函数(UDF)
- CREATE PLUGIN - 安装插件
- CREATE BUDDY PLUGIN - 安装 Buddy 插件
- DROP PLUGIN - 删除插件
- DROP BUDDY PLUGIN - 删除 Buddy 插件
- RELOAD PLUGINS - 从指定库重新加载所有插件
- ENABLE BUDDY PLUGIN - 重新激活之前禁用的 Buddy 插件
- DISABLE BUDDY PLUGIN - 禁用一个激活的 Buddy 插件
- SHOW STATUS - 显示多个有用的性能计数器
- SHOW THREADS - 列出所有当前活跃的客户端线程
- SHOW VARIABLES - 列出服务器范围的变量及其值
- SHOW VERSION - 提供实例各组件的详细版本信息
- /sql - 通过 HTTP JSON 执行 SQL 语句
- /cli - 提供 HTTP 命令行界面
- /insert - 向实时表插入文档
- /pq/tbl_name/doc - 向渗透表添加 PQ 规则
- /update - 更新实时表中的文档
- /replace - 替换实时表中已有的文档,若不存在则插入
- /pq/tbl_name/doc/N?refresh=1 - 替换渗透表中的 PQ 规则
- /delete - 从表中删除文档
- /bulk - 在一次调用中执行多个插入、更新或删除操作。更多关于批量插入的信息请参见这里。
- /search - 执行搜索
- /search -> knn - 执行 KNN 向量搜索
- /pq/tbl_name/search - 在渗透表中执行反向搜索
- /tbl_name/_mapping - 以 Elasticsearch 风格创建表模式
- access_plain_attrs
- access_blob_attrs
- access_doclists
- access_hitlists
- access_dict
- attr_update_reserve
- bigram_freq_words
- bigram_index
- blend_chars
- blend_mode
- charset_table
- dict
- docstore_block_size
- docstore_compression
- docstore_compression_level
- embedded_limit
- exceptions
- expand_keywords
- global_idf
- hitless_words
- html_index_attrs
- html_remove_elements
- html_strip
- ignore_chars
- index_exact_words
- index_field_lengths
- index_sp
- index_token_filter
- index_zones
- infix_fields
- inplace_enable
- inplace_hit_gap
- inplace_reloc_factor
- inplace_write_factor
- jieba_hmm
- jieba_mode
- jieba_user_dict_path
- killlist_target
- max_substring_len
- min_infix_len
- min_prefix_len
- min_stemming_len
- min_word_len
- morphology
- morphology_skip_fields
- ngram_chars
- ngram_len
- overshort_step
- path
- phrase_boundary
- phrase_boundary_step
- prefix_fields
- preopen
- read_buffer_docs
- read_buffer_hits
- regexp_filter
- stopwords
- stopword_step
- stopwords_unstemmed
- type
- wordforms
- local
- agent
- agent_connect_timeout
- agent_blackhole
- agent_persistent
- agent_query_timeout
- agent_retry_count
- ha_strategy
- mirror_retry_count
- rt_attr_bigint
- rt_attr_bool
- rt_attr_float
- rt_attr_float_vector
- rt_attr_json
- rt_attr_multi_64
- rt_attr_multi
- rt_attr_string
- rt_attr_timestamp
- rt_attr_uint
- rt_field
- rt_mem_limit
- diskchunk_flush_write_timeout
- diskchunk_flush_search_timeout
- OR
- MAYBE
- NOT - NOT 操作符
- @field - 字段搜索操作符
- @field[N] - 字段位置限制修饰符
- @(field1,field2,...) - 多字段搜索操作符
- @!field - 忽略字段搜索操作符
- @!(field1,field2,...) - 忽略多字段搜索操作符
- @* - 全字段搜索操作符
- "word1 word2 ... " - 短语搜索操作符
- "word1 word2 ... "~N - 接近搜索操作符
- "word1 word2 ... "/N - 法定人数匹配操作符
- word1 << word2 << word3 - 严格顺序操作符
- =word1 - 精确形式修饰符
- ^word1 - 字段起始修饰符
- word2$ - 字段结束修饰符
- word^N - 关键词 IDF 提升修饰符
- word1 NEAR/N word2 - NEAR,广义接近操作符
- word1 NOTNEAR/N word2 - NOTNEAR,否定断言操作符
- word1 PARAGRAPH word2 PARAGRAPH "word3 word4" - 段落操作符
- word1 SENTENCE word2 SENTENCE "word3 word4" - 句子操作符
- ZONE:(h3,h4) - 区域限制操作符
- ZONESPAN:(h2) - 区域跨度限制操作符
- @@relaxed - 抑制缺失字段的错误
- t?st - 通配符操作符
- REGEX(/pattern/) - 正则表达式操作符
- ABS() - 返回绝对值
- ATAN2() - 返回两个参数的反正切函数
- BITDOT() - 返回掩码每个位乘以其权重的乘积之和
- CEIL() - 返回大于或等于参数的最小整数值
- COS() - 返回参数的余弦值
- CRC32() - 返回参数的 CRC32 值
- EXP() - 返回参数的指数值
- FIBONACCI() - 返回第 N 个斐波那契数,其中 N 是整数参数
- FLOOR() - 返回小于或等于参数的最大整数值
- GREATEST() - 以 JSON/MVA 数组作为参数,返回该数组中的最大值
- IDIV() - 返回第一个参数除以第二个参数的整数除法结果
- LEAST() - 以 JSON/MVA 数组作为参数,返回该数组中的最小值
- LN() - 返回参数的自然对数
- LOG10() - 返回参数的常用对数
- LOG2() - 返回参数的二进制对数
- MAX() - 返回两个参数中较大的一个
- MIN() - 返回两个参数中较小的一个
- POW() - 返回第一个参数的第二个参数次幂
- RAND() - 返回 0 到 1 之间的随机浮点数
- SIN() - 返回参数的正弦值
- SQRT() - 返回参数的平方根
- BM25F() - 返回精确的 BM25F 公式值
- EXIST() - 用默认值替换不存在的列
- GROUP_CONCAT() - 生成组内所有文档属性值的逗号分隔列表
- HIGHLIGHT() - 高亮显示搜索结果
- MIN_TOP_SORTVAL() - 返回当前前 N 个匹配中最差元素的排序键值
- MIN_TOP_WEIGHT() - 返回当前前 N 个匹配中最差元素的权重
- PACKEDFACTORS() - 输出加权因子
- REMOVE_REPEATS() - 移除具有相同“列”值的重复调整行
- WEIGHT() - 返回全文匹配得分
- ZONESPANLIST() - 返回匹配区域跨度的对列表
- QUERY() - 返回当前全文查询
- BIGINT() - 强制将整数参数提升为 64 位类型
- DOUBLE() - 强制将给定参数提升为浮点类型
- INTEGER() - 强制将给定参数提升为 64 位有符号类型
- TO_STRING() - 强制将参数提升为字符串类型
- UINT() - 将给定参数转换为 32 位无符号整数类型
- UINT64() - 将给定参数转换为 64 位无符号整数类型
- SINT() - 将 32 位无符号整数解释为有符号 64 位整数
- ALL() - 如果数组中所有元素满足条件,则返回 1
- ANY() - 如果数组中任一元素满足条件,则返回 1
- CONTAINS() - 检查 (x,y) 点是否在给定多边形内
- IF() - 检查第一个参数是否等于 0.0,若不为零返回第二个参数,否则返回第三个参数
- IN() - 如果第一个参数等于其他任一参数,则返回 1,否则返回 0
- INDEXOF() - 遍历数组所有元素,返回第一个匹配元素的索引
- INTERVAL() - 返回小于第一个参数的参数的索引
- LENGTH() - 返回 MVA 中元素的数量
- REMAP() - 根据条件值允许对表达式值做一些例外处理
- NOW() - 返回当前时间戳,类型为 INTEGER
- CURTIME() - 返回本地时区的当前时间
- CURDATE() - 返回本地时区的当前日期
- UTC_TIME() - 返回 UTC 时区的当前时间
- UTC_TIMESTAMP() - 返回 UTC 时区的当前日期/时间
- SECOND() - 返回时间戳参数中的整数秒
- MINUTE() - 返回时间戳参数中的整数分钟
- HOUR() - 返回时间戳参数中的整数小时
- DAY() - 返回时间戳参数中的整数天
- MONTH() - 返回时间戳参数中的整数月
- QUARTER() - 返回时间戳参数中的整数季度
- YEAR() - 返回时间戳参数中的整数年
- DAYNAME() - 返回给定时间戳参数的星期名称
- MONTHNAME() - 返回给定时间戳参数的月份名称
- DAYOFWEEK() - 返回给定时间戳参数的整数星期索引
- DAYOFYEAR() - 返回给定时间戳参数的整数年内天数
- YEARWEEK() - 返回给定时间戳参数的整数年和当前周第一天的日期代码
- YEARMONTH() - 返回时间戳参数中的整数年和月代码
- YEARMONTHDAY() - 返回时间戳参数中的整数年、月和日代码
- TIMEDIFF() - 返回时间戳之间的差值
- DATEDIFF() - 返回两个给定时间戳之间的天数
- DATE() - 格式化时间戳参数中的日期部分
- TIME() - 格式化时间戳参数中的时间部分
- DATE_FORMAT() - 根据提供的日期和格式参数返回格式化字符串
- GEODIST() - 计算两个给定点之间的地球表面距离
- GEOPOLY2D() - 创建考虑地球曲率的多边形
- POLY2D() - 创建平面空间中的简单多边形
- CONCAT() - 连接两个或多个字符串
- REGEX() - 如果正则表达式匹配属性字符串则返回1,否则返回0
- SNIPPET() - 高亮显示搜索结果
- SUBSTRING_INDEX() - 返回指定分隔符出现次数之前的字符串子串
- CONNECTION_ID() - 返回当前连接ID
- KNN_DIST() - 返回KNN向量搜索距离
- LAST_INSERT_ID() - 返回当前会话中最后语句插入或替换的文档ID
- UUID_SHORT() - 返回一个“短”通用标识符,遵循与自动ID生成相同的算法。
放置于配置文件的 common {} 部分:
- lemmatizer_base - 词形还原字典基础路径
- progressive_merge - 定义实时表中磁盘块合并的顺序
- json_autoconv_keynames - 是否以及如何自动转换JSON属性中的键名
- json_autoconv_numbers - 自动检测并转换可能表示数字的JSON字符串为数值属性
- on_json_attr_error - 发现JSON格式错误时的处理方式
- plugin_dir - 动态库和UDF的位置
indexer 是一个用于创建 plain tables 的工具
放置于配置文件的 indexer {} 部分:
- lemmatizer_cache - 词形还原缓存大小
- max_file_field_buffer - 最大文件字段自适应缓冲区大小
- max_iops - 最大索引I/O操作次数每秒
- max_iosize - 最大允许的I/O操作大小
- max_xmlpipe2_field - XMLpipe2源类型允许的最大字段大小
- mem_limit - 索引使用的内存限制
- on_file_field_error - 如何处理文件字段中的IO错误
- write_buffer - 写缓冲区大小
- ignore_non_plain - 忽略关于非普通表的警告
indexer [OPTIONS] [indexname1 [indexname2 [...]]]
- --all - 从配置中重建所有表
- --buildstops - 分析表源,仿佛在索引数据,生成索引词列表
- --buildfreqs - 为 --buildstops 添加频率计数到表中
- --config, -c - 指定配置文件路径
- --dump-rows - 将SQL源检索的行转储到指定文件
- --help - 显示所有可用参数
- --keep-attrs - 允许在重新索引时重用现有属性
- --keep-attrs-names - 指定从现有表中重用哪些属性
- --merge-dst-range - 在合并时应用给定的过滤范围
- --merge-killlists - 更改合并表时的杀死列表处理
- --merge - 将两个普通表合并为一个
- --nohup - 启用此选项时,防止索引器发送SIGHUP信号
- --noprogress - 隐藏进度详情
- --print-queries - 输出索引器发送到数据库的SQL查询
- --print-rt - 显示从SQL源获取的数据作为实时表的INSERT语句
- --quiet - 抑制所有输出
- --rotate - 在所有表构建完成后启动表轮换
- --sighup-each - 在每个表构建完成后触发轮换
- -v - 显示索引器版本
index_converter 是一个工具,用于将使用 Sphinx/Manticore Search 2.x 创建的表转换为 Manticore Search 3.x 的表格式。
index_converter {--config /path/to/config|--path}
- --config, -c - 表配置文件路径
- --index - 指定要转换的表
- --path - 设置包含表的路径,替代配置文件
- --strip-path - 从表引用的文件名中移除路径
- --large-docid - 允许转换ID大于2^63的文档
- --output-dir - 将新文件写入指定文件夹
- --all - 转换配置文件/路径中的所有表
- --killlist-target - 设置应用杀死列表的目标表
searchd 是 Manticore 服务器。
放置在配置文件的 searchd {} 部分:
- access_blob_attrs - 定义如何访问表的blob属性文件
- access_doclists - 定义如何访问表的doclists文件
- access_hitlists - 定义如何访问表的hitlists文件
- access_plain_attrs - 定义搜索服务器如何访问表的普通属性
- access_dict - 定义如何访问表的字典文件
- agent_connect_timeout - 远程代理连接超时
- agent_query_timeout - 远程代理查询超时
- agent_retry_count - 指定 Manticore 尝试连接和查询远程代理的次数
- agent_retry_delay - 指定在查询远程代理失败时重试的延迟时间
- attr_flush_period - 设置刷新更新属性到磁盘的时间间隔
- binlog_flush - 二进制日志事务刷新/同步模式
- binlog_max_log_size - 最大二进制日志文件大小
- binlog_common - 所有表的公共二进制日志文件
- binlog_filename_digits - 二进制日志文件名中的数字位数
- binlog_flush - 二进制日志刷新策略
- binlog_path - 二进制日志文件路径
- client_timeout - 使用持久连接时请求之间的最大等待时间
- collation_libc_locale - 服务器 libc 区域设置
- collation_server - 默认服务器排序规则
- data_dir - Manticore 存储所有内容的数据目录路径(RT 模式)
- diskchunk_flush_write_timeout - 如果没有写入,自动刷新内存块的超时时间
- diskchunk_flush_search_timeout - 如果表中没有搜索,防止自动刷新内存块的超时时间
- docstore_cache_size - 文档存储中内存中保存的文档块的最大大小
- expansion_limit - 单个通配符展开的最大关键字数量
- grouping_in_utc - 启用使用 UTC 时区对时间字段进行分组
- ha_period_karma - 代理镜像统计窗口大小
- ha_ping_interval - 代理镜像 Ping 的间隔
- hostname_lookup - 主机名更新策略
- jobs_queue_size - 定义队列中允许的最大“作业”数量
- join_batch_size - 定义表连接的批处理大小以平衡性能和内存使用
- join_cache_size - 定义用于重用 JOIN 查询结果的缓存大小
- kibana_version_string – 服务器版本字符串,响应 Kibana 请求时发送
- listen - 指定 searchd 监听的 IP 地址和端口或 Unix 域套接字路径
- listen_backlog - TCP 监听队列长度
- listen_tfo - 为所有监听器启用 TCP_FASTOPEN 标志
- log - Manticore 服务器日志文件路径
- max_batch_queries - 限制每批查询的数量
- max_connections - 最大活动连接数
- max_filters - 每个查询允许的最大过滤器数量
- max_filter_values - 每个过滤器允许的最大值数量
- max_open_files - 服务器允许打开的最大文件数
- max_packet_size - 允许的最大网络数据包大小
- mysql_version_string - 通过 MySQL 协议返回的服务器版本字符串
- net_throttle_accept - 定义网络循环每次迭代接受的客户端数量
- net_throttle_action - 定义网络循环每次迭代处理的请求数量
- net_wait_tm - 控制网络线程的忙等待循环间隔
- net_workers - 网络线程数量
- network_timeout - 客户端请求的网络超时
- node_address - 指定节点的网络地址
- persistent_connections_limit - 远程持久代理的最大同时持久连接数
- pid_file - Manticore 服务器 pid 文件路径
- predicted_time_costs - 查询时间预测模型的成本
- preopen_tables - 决定是否在启动时强制预打开所有表
- pseudo_sharding - 启用对普通表和实时表的搜索查询伪分片
- qcache_max_bytes - 分配给缓存结果集的最大内存
- qcache_thresh_msec - 查询结果被缓存的最小墙时阈值
- qcache_ttl_sec - 缓存结果集的过期时间
- query_log - 查询日志文件路径
- query_log_format - 查询日志格式
- query_log_min_msec - 防止记录过快的查询
- query_log_mode - 查询日志文件权限模式
- read_buffer_docs - 每个关键字的文档列表读取缓冲区大小
- read_buffer_hits - 每个关键字的命中列表读取缓冲区大小
- read_unhinted - 未提示的读取大小
- rt_flush_period - Manticore 将实时表的内存块刷新到磁盘的频率
- rt_merge_iops - 实时块合并线程允许执行的最大 I/O 操作数(每秒)
- rt_merge_maxiosize - 实时块合并线程允许执行的最大 I/O 操作大小
- seamless_rotate - 防止在旋转大量数据的表以预缓存时 searchd 停顿
- secondary_indexes - 启用搜索查询使用二级索引
- server_id - 用作生成唯一文档 ID 种子的服务器标识符
- shutdown_timeout - Searchd
--stopwait超时时间 - shutdown_token - 从 VIP SQL 连接调用
shutdown命令所需密码的 SHA1 哈希 - snippets_file_prefix - 在
load_files模式生成片段时添加到本地文件名前缀 - sphinxql_state - 当前 SQL 状态序列化文件路径
- sphinxql_timeout - MySQL 客户端请求之间的最大等待时间
- ssl_ca - SSL 证书颁发机构证书文件路径
- ssl_cert - 服务器的 SSL 证书路径
- ssl_key - 服务器的 SSL 证书密钥路径
- subtree_docs_cache - 最大公共子树文档缓存大小
- subtree_hits_cache - 每查询最大公共子树命中缓存大小
- timezone - 日期/时间相关函数使用的时区
- thread_stack - 任务的最大堆栈大小
- unlink_old - 是否在成功旋转时取消链接 .old 表副本
- watchdog - 是否启用或禁用 Manticore 服务器看门狗
searchd [OPTIONS]
- --config, -c - 指定配置文件路径
- --console - 强制服务器以控制台模式运行
- --coredump - 启用崩溃时保存核心转储
- --cpustats - 启用 CPU 时间报告
- --delete - 从 Microsoft 管理控制台及其他服务注册位置移除 Manticore 服务
- --force-preread - 防止服务器在预读取表文件前服务传入连接
- --help, -h - 显示所有可用参数
- --table (--index) - 限制服务器仅服务指定表
- --install - 在 Microsoft 管理控制台安装 searchd 作为服务
- --iostats - 启用输入/输出报告
- --listen, -l - 覆盖配置文件中的 listen
- --logdebug, --logdebugv, --logdebugvv - 启用服务器日志中的额外调试输出
- --logreplication - 启用服务器日志中的额外复制调试输出
- --new-cluster - 初始化复制集群并将服务器设置为带有 集群重启 保护的参考节点
- --new-cluster-force - 初始化复制集群并将服务器设置为参考节点,绕过集群重启保护
- --nodetach - 使 searchd 保持在前台运行
- --ntservice - 由 Microsoft 管理控制台用于在 Windows 平台上以服务方式启动 searchd
- --pidfile - 覆盖配置文件中的pid_file
- --port, p - 指定 searchd 应监听的端口,忽略配置文件中指定的端口
- --replay-flags - 设置额外的二进制日志重放选项
- --servicename - 在安装或删除服务时为 searchd 指定名称,该名称显示在 Microsoft 管理控制台中
- --status - 查询正在运行的搜索服务以返回其状态
- --stop - 停止 Manticore 服务器
- --stopwait - 优雅地停止 Manticore 服务器
- --strip-path - 从表中引用的所有文件名中移除路径名
- -v - 显示版本信息
- MANTICORE_TRACK_DAEMON_SHUTDOWN - 启用 searchd 关闭期间的详细日志记录
各种有助于故障排除的表维护功能。
indextool <command> [options]
用于转储与物理表相关的各种调试信息。
indextool <command> [options]
- --config, -c - 指定配置文件路径
- --quiet, -q - 使 indextool 静默运行;无横幅输出等
- --help, -h - 列出所有可用参数
- -v - 显示版本信息
- Indextool - 验证配置文件
- --buildidf - 从一个或多个字典转储构建 IDF 文件
- --build-infixes - 为现有的 dict=keywords 表构建中缀
- --dumpheader - 快速转储提供的表头文件
- --dumpconfig - 以几乎兼容 manticore.conf 格式转储给定表头文件中的表定义
- --dumpheader - 通过表名转储表头,同时在配置文件中查找表头路径
- --dumpdict - 转储表字典
- --dumpdocids - 按表名转储文档 ID
- --dumphitlist - 转储指定表中给定关键字/ID 的所有出现
- --docextract - 对整个字典/文档/命中运行表检查,并收集属于请求文档的所有词和命中
- --fold - 基于表设置测试分词
- --htmlstrip - 使用指定表的 HTML 剥离器设置过滤 STDIN
- --mergeidf - 合并多个 .idf 文件为单个文件
- --morph - 对提供的 STDIN 应用形态学处理,并将结果输出到 stdout
- --check - 检查表数据文件的一致性
- --check-id-dups - 检查重复 ID
- --check-disk-chunk - 检查 RT 表的单个磁盘块
- --strip-path - 从表中引用的所有文件名中移除路径名
- --rotate - 使用
--check时确定是否检查等待旋转的表 - --apply-killlists - 对配置文件中列出的所有表应用 kill-lists
将复合词拆分为其组成部分。
wordbreaker [-dict path/to/dictionary_file] {split|test|bench}
- STDIN - 接受要拆分的字符串
- -dict - 指定要使用的字典文件
- split|test|bench - 指定命令
使用 ispell 或 MySpell 格式提取字典文件内容
spelldump [options] <dictionary> <affix> [result] [locale-name]
- dictionary - 主字典文件
- affix - 字典的词缀文件
- result - 指定字典数据的输出目标
- locale-name - 指定要使用的区域设置详情
Manticore SQL 语法中当前保留的关键字的完整字母顺序列表(因此不能用作标识符)。
AND, AS, BY, COLUMNARSCAN, DISTINCT, DIV, DOCIDINDEX, EXPLAIN, FACET, FALSE, FORCE, FROM, IGNORE, IN, INDEXES, INNER, IS, JOIN, KNN, LEFT, LIMIT, MOD, NOT, NO_COLUMNARSCAN, NO_DOCIDINDEX, NO_SECONDARYINDEX, NULL, OFFSET, ON, OR, ORDER, RELOAD, SECONDARYINDEX, SELECT, SYSFILTERS, TRUE
- 2.4.1
- 2.5.1
- 2.6.0
- 2.6.1
- 2.6.2
- 2.6.3
- 2.6.4
- 2.7.0
- 2.7.1
- 2.7.2
- 2.7.3
- 2.7.4
- 2.7.5
- 2.8.0
- 2.8.1
- 2.8.2
- 3.0.0
- 3.0.2
- 3.1.0
- 3.1.2
- 3.2.0
- 3.2.2
- 3.3.0
- 3.4.0
- 3.4.2
- 3.5.0
- 3.5.2
- 3.5.4
- 4.0.2
- 4.2.0
- 5.0.2. 安装页面
- 6.0.0. 安装页面
- 6.0.2. 安装页面
- 6.0.4. 安装页面
- 6.2.0. 安装页面
- 6.2.12. 安装页面
- 6.3.0. 安装页面
- 6.3.2. 安装页面
- 6.3.4. 安装页面
- 6.3.6. 安装页面
- 6.3.8. 安装页面
- 7.0.0. 安装页面
- 7.4.6. 安装页面
- 9.2.14. 安装页面
- 9.3.2. 安装页面
- 10.1.0. 安装页面
- 13.2.3. 安装页面
- 13.6.7. 安装页面
- 13.11.0. 安装页面
- 13.11.1. 安装页面
- 13.13.0. 安装页面
- 14.1.0. 安装页面
- 15.1.0. 安装页面