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;相关资源: