Manticore Search 是一个使用 C++ 开发的高性能搜索引擎,创建于 2017 年,其前身是 Sphinx Search。Manticore Search 充分利用了 Sphinx,显着改进了它的功能,修复了数百个错误,几乎完全重写了代码并保持开源。这一切使 Manticore Search 成为一个现代,快速,轻量级和功能齐全的数据库,具有出色的全文搜索功能。
Manticore Search 目前在 GitHub 收获 7.4k star,拥有大批忠实用户。同时开源者在 GitHub 介绍中明确说明了该项目是 Elasticsearch 的良好替代品,在不久的将来就会取代 ELK 中的 E。
目前支持 在 Ubuntu、Debian、Centos、Windows 和 MacOS 下部署。
安装
更多安装方式,参见官方文档:https://manticoresearch.com/install/
yum 安装
sudo yum install https://repo.manticoresearch.com/manticore-repo.noarch.rpm sudo yum install manticore manticore-extra
如果从旧版本升级,建议先删除旧包,以避免更新后的包结构带来的冲突:
sudo yum --setopt=tsflags=noscripts remove 'manticore*'
常用命令
# 启动 Manticore sudo systemctl start manticore # 开机启动 sudo systemctl is-enabled manticore # 禁用 sudo systemctl disable manticore # 启用 sudo systemctl enable manticore # 查看日志 sudo journalctl -u manticore # 重启 systemctl restart manticore
通过 ps –no-headers -o comm 1 检测当前系统启动方式。
配置文件默认在 /etc/manticoresearch/manticore.conf
其中配置了端口、日志文件
searchd { listen = 127.0.0.1:9312 listen = 127.0.0.1:9306:mysql listen = 127.0.0.1:9308:http log = /var/log/manticore/searchd.log query_log = /var/log/manticore/query.log pid_file = /run/manticore/searchd.pid data_dir = /var/lib/manticore }
允许外部访问
将 127.0.0.1 改为 0.0.0.0,除非你知道自己在做什么,否则不要这么做。
如果修改了配置,需要重启以生效。
确定服务正常
curl -s "http://localhost:9308/search"
返回,
{"error":"unable to parse: "}
表明服务启动正常。
否则,使用 suto systemctl status manticore 查看当前状态。
也可以通过,/var/log/manticore/searchd.log 查看错误日志。
端口说明
9306,用于 MySQL 客户端
9308,用于 HTTP/HTTPS 连接
9312,用于来自其他 Manticore 节点和基于 Manticore 二进制 API 客户端的连接
MySQL 连接
mysql -h0 -P9306
常用 SQL 操作
# 查看所有表 SHOW TABLES; # 搜索表 SHOW TABLES LIKE 'pro%'; # 创建产品表 create table products(title text, price float) morphology='stem_en'; # 查看表结构 DESC products; # 显示表 SQL SHOW CREATE TABLE products; # 写入数据 insert into products(title,price) values ('华为 Mate 60', 6999.99), ('Xiaomi 13', 3999.99), ('vivo S18', 3199.99); # 搜索 select id, highlight(), price from products where match('mate'); # 更新 update products set price=6999.12 where id = 7640571067961966596; # 删除 delete from products where price < 10; # 导入表 source /sandbox.sql # 清空表 TRUNCATE TABLE products; # 清空并重置表 # Manticore 会在清空表之前应用新的分词器、形态学和其他文本处理设置。 # 如果不使用 with reconfigure 参数,则需要在清空表后手动重新配置表。 TRUNCATE TABLE products with reconfigure; # 删除表 DROP TABLE IF EXISTS products;
相关资源: