本手册的编排旨在反映您最可能使用 Manticore 的方式:
- 从关于它的基本信息以及如何安装和连接开始
- 添加文档和运行搜索等基本操作
- 性能优化技巧、窍门,以及借助插件和自定义函数扩展 Manticore
为了方便起见,手册的关键部分在菜单中用 1️⃣、2️⃣、3️⃣ 等标记,因为它们对应的功能最常用。如果您是 Manticore 的新手,我们强烈建议不要跳过它们。
如果您想快速了解 Manticore 的一般工作原理,⚡ 快速入门指南 是一个很好的起点。
每个查询示例的右上角都有一个小图标 📋:

您可以使用它将示例复制到剪贴板。如果查询是 HTTP 请求,它将被复制为 CURL 命令。您可以按 ⚙️ 配置主机/端口。
我们热爱搜索,并已尽最大努力使在本手册中搜索尽可能方便。当然,它由 Manticore Search 提供支持。除了使用需要先打开手册的搜索栏外,还有一种非常简单的方法可以找到某些内容,只需打开 mnt.cr/您的搜索关键词:

关于 Manticore Search,有几件事您需要了解,这有助于您遵循使用它的最佳实践。
- 实时表 允许添加、更新和删除文档,并且更改立即可用。
- 普通表 是一种基本不可变的数据结构,也是实时表使用的基本元素。普通表存储一组文档、它们的公共字典和索引设置。一个实时表可以由多个普通表(块)组成,但除此之外,Manticore 提供了使用工具 indexer 直接构建普通表的途径。当您的数据基本不可变时,这样做是有意义的,因此您不需要为此使用实时表。
Manticore Search 在两种模式下工作:
- 实时模式(RT 模式)。这是默认模式,允许命令式管理您的数据模式:
- 允许使用 SQL 命令
CREATE/ALTER/DROP TABLE及其在非 SQL 客户端中的等效命令在线管理您的数据模式 - 在配置文件中,您只需要定义与服务器相关的设置,包括 data_dir
- 允许使用 SQL 命令
- 普通模式 允许在配置文件中定义您的数据模式,即提供声明式的模式管理。这在三种情况下有意义:
- 当您只处理普通表时
- 或者当您的数据模式非常稳定且不需要复制时(因为复制仅在 RT 模式下可用)
- 当您需要使您的数据模式可移植时(例如,为了更容易地在新服务器上部署)
您不能混合使用这两种模式,需要通过指定配置文件中的 data_dir 来决定要遵循哪种模式(这是默认行为)。如果您不确定,我们的建议是遵循 RT 模式,因为即使您需要一个普通表,您也可以使用单独的普通表配置构建它,并导入到您的主 Manticore 实例中。
实时表可以在 RT 模式和普通模式下使用。在 RT 模式下,实时表使用 CREATE TABLE 命令定义,而在普通模式下,它在配置文件中定义。普通(离线)表仅在普通模式下受支持。普通表不能在 RT 模式下创建,但在普通模式下创建的现有普通表可以转换为实时表并在 RT 模式下导入。
Manticore 提供了多种方式和接口来管理您的模式和数据,但两个主要的是:
- SQL。这是 Manticore 的原生语言,支持 Manticore 的所有功能。最佳实践是使用 SQL 来:
- 管理您的模式并执行其他 DBA 例程,因为这是最简单的方法
- 设计您的查询,因为 SQL 比 JSON DSL 更接近自然语言,这在您设计新内容时很重要。您可以通过任何 MySQL 客户端或 /sql 使用 Manticore SQL。
- JSON。大多数功能也可以通过 JSON 领域特定语言使用。当您将 Manticore 集成到您的应用程序中时,这尤其有用,因为使用 JSON 可以比使用 SQL 更以编程方式实现。最佳实践是首先探索如何通过 SQL 完成某些操作,然后使用 JSON 将其集成到您的应用程序中。
- RHEL, Centos, Alma, Amazon, Oracle
- Debian, Ubuntu, Mint
- MacOS
- Windows
- Docker
- Kubernetes
sudo yum install https://repo.manticoresearch.com/manticore-repo.noarch.rpm
sudo yum install manticore manticore-extra如果您是从旧版本升级,建议先移除旧包,以避免因包结构更新导致的冲突:
sudo yum --setopt=tsflags=noscripts remove manticore*这不会删除您的数据。如果您更改了配置文件,它会被保存到 /etc/manticoresearch/manticore.conf.rpmsave。
如果您需要单独的安装包,请在这里查找。
有关安装的更多详情,请参见下文。
wget https://repo.manticoresearch.com/manticore-repo.noarch.deb
sudo dpkg -i manticore-repo.noarch.deb
sudo apt update
sudo apt install manticore manticore-extra如果您是从旧版本升级到 Manticore 6,建议先移除旧包,以避免因包结构更新导致的冲突:
sudo apt remove manticore*这不会删除您的数据或配置文件。
如果您需要单独的安装包,请在这里查找。
有关安装的更多详情,请参见下文。
brew install manticoresoftware/tap/manticoresearch manticoresoftware/tap/manticore-extra有关安装的更多详情,请参见下文。
- 下载 Manticore Search 安装程序 并运行,按照安装提示操作。
- 选择安装目录。
- 选择您想安装的组件。我们推荐全部安装。
- Manticore 附带一个预配置的
manticore.conf文件,处于 RT 模式。无需额外配置。
有关安装的更多详情,请参见下文。
一个用于沙箱测试的单行命令(不推荐用于生产环境):
docker run --name manticore --rm -d manticoresearch/manticore && echo "Waiting for Manticore docker to start. Consider mapping the data_dir to make it start faster next time" && until docker logs manticore 2>&1 | grep -q "accepting connections"; do sleep 1; echo -n .; done && echo && docker exec -it manticore mysql && docker stop manticore此命令运行 Manticore 容器并等待其启动。启动后,它会开启一个 MySQL 客户端会话。当您退出 MySQL 客户端时,Manticore 容器停止运行并被删除,不会留下任何数据。关于如何在生产环境中使用 Manticore,请参见下一节。
用于生产环境:
docker run --name manticore -v $(pwd)/data:/var/lib/manticore -p 127.0.0.1:9306:9306 -p 127.0.0.1:9308:9308 -d manticoresearch/manticore此配置将启用 Manticore 列存库和 Manticore Buddy,并使用 ./data/ 作为指定数据目录,把 Manticore 运行在 9306 端口用于 MySQL 连接,9308 端口用于其他所有连接。
更多关于生产环境使用信息,请阅读文档。
helm repo add manticoresearch https://helm.manticoresearch.com
# Update values.yaml if needed
helm install manticore -n manticore --create-namespace manticoresearch/manticoresearch您可以在文档中找到有关安装 Helm Chart 的更多信息。
Manticore Search 的 Docker 镜像可在 Docker Hub 公共访问,镜像由 Manticore Search docker GitHub 仓库 构建。
要拉取 Manticore 镜像,请运行以下命令:
docker pull manticoresearch/manticore
有关在 Docker 中使用 Manticore 的更多信息,请参见 在 Docker 中使用 Manticore 部分。
- CentOS 8, RHEL 8, Oracle Linux 8, CentOS Stream 8
- Amazon Linux 2
- CentOS 9, RHEL 9, AlmaLinux 9
- AlmaLinux 10, 其他基于 RHEL 10 的发行版
在 RedHat/CentOS 上安装 Manticore 最简单的方法是使用我们的 YUM 软件仓库:
安装软件仓库:
sudo yum install https://repo.manticoresearch.com/manticore-repo.noarch.rpm
然后安装 Manticore Search:
sudo yum install manticore manticore-extra
如果您正在从旧版本升级到 Manticore 6,建议先移除旧的软件包,以避免因更新的软件包结构导致的冲突:
sudo yum remove manticore*
这不会移除您的数据和配置文件。
如果您偏好使用“Nightly”(开发)版本,请执行:
sudo yum -y install https://repo.manticoresearch.com/manticore-repo.noarch.rpm && \
sudo yum -y --enablerepo manticore-dev install manticore manticore-extra manticore-common manticore-server manticore-server-core manticore-tools manticore-executor manticore-buddy manticore-backup manticore-columnar-lib manticore-server-core-debuginfo manticore-tools-debuginfo manticore-columnar-lib-debuginfo manticore-icudata manticore-galera manticore-galera-debuginfo manticore-language-packs manticore-load
要从 Manticore 软件仓库下载独立的 RPM 文件,请按照 https://manticoresearch.com/install/ 上的说明操作。
如果您计划使用 indexer 从外部源创建表,您需要确保已安装相应的客户端库,以便您想要使用的索引源可用。下面这行命令将一次性安装所有库;您可以原样使用它,或者缩减它只安装您需要的库(对于仅 MySQL 源 - 仅 mysql-libs 应该就足够了,并且 unixODBC 不是必需的)。
sudo yum install mysql-libs postgresql-libs expat unixODBC
在 CentOS Stream 8 中,您可能需要运行:
dnf install mariadb-connector-c
如果您在尝试从 MySQL 构建普通表时遇到错误 sql_connect: MySQL source wasn't initialized. Wrong name in dlopen?。
该词形还原器需要 Python 3.9+。请确保您已安装它,并且它是使用 --enable-shared 配置的。
以下是在 Centos 8 中安装 Python 3.9 和乌克兰语词形还原器的方法:
# install Manticore Search and UK lemmatizer from YUM repository
yum -y install https://repo.manticoresearch.com/manticore-repo.noarch.rpm
yum -y install manticore manticore-lemmatizer-uk
# install packages needed for building Python
yum groupinstall "Development Tools" -y
yum install openssl-devel libffi-devel bzip2-devel wget -y
# download, build and install Python 3.9
cd ~
wget https://www.python.org/ftp/python/3.9.2/Python-3.9.2.tgz
tar xvf Python-3.9.2.tgz
cd Python-3.9*/
./configure --enable-optimizations --enable-shared
make -j8 altinstall
# update linker cache
ldconfig
# install pymorphy2 and UK dictionary
pip3.9 install pymorphy2[fast]
pip3.9 install pymorphy2-dicts-uk