
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Manticore Search是一款易于使用的开源快速搜索数据库,帮助从小型到大型的数千家公司(如Craigslist)在单个或数百个节点上搜索和过滤PB级文本数据,实现流全文过滤,为网站和应用添加自动补全、拼写纠错、相似推荐、分面搜索等搜索相关技术。
默认配置包含示例实时索引,并监听以下默认端口:
9306:用于MySQL客户端连接9308:用于HTTP协议连接9312:用于二进制协议连接(如集群环境)该镜像内置库,可轻松从MySQL、PostgreSQL、XML和CSV文件索引数据。
Dockerfile链接历史版本:
适用于各种规模的企业,包括:
以下是启动Manticore容器并通过MySQL客户端登录的最简单方式:
bashdocker run --name manticore --rm -d manticoresearch/manticore && echo "等待Manticore容器启动。考虑映射数据目录以加快下次启动速度" && 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
注意:退出MySQL客户端后,Manticore容器将停止并删除,数据不会保留。生产环境使用方法见下文。
镜像包含示例表,可通过以下命令加载:
sqlmysql> source /sandbox.sql
MySQL客户端历史记录中包含示例查询,可通过上下方向键查看和运行。
端口和挂载点
为实现数据持久化,需将/var/lib/manticore/目录挂载到本地存储或其他存储引擎。
容器内配置文件路径为/etc/manticoresearch/manticore.conf,如需自定义配置,需将该文件挂载到本地配置文件。此外,可通过环境变量设置配置参数。
重要:通过环境变量设置的参数优先级更高。例如,若通过环境变量
-e searchd_listen='19306:mysql'和配置文件中listen = 9306:mysql同时设置,最终SQL连接将监听***端口。
默认端口9306(SQL)、9308(HTTP)、9312(二进制),根据使用需求暴露端口。示例:
bashdocker 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
或使用自定义配置文件:
bashdocker run --name manticore -v $(pwd)/manticore.conf:/etc/manticoresearch/manticore.conf -v $(pwd)/data:/var/lib/manticore/ -p 127.0.0.1:9306:9306 -p 127.0.0.1:9308:9308 -d manticoresearch/manticore
若需外部主机访问端口,移除
127.0.0.1:前缀。
Manticore Search Docker镜像预装了https://github.com/manticoresoftware/columnar%E5%92%8Chttps://github.com/manticoresoftware/manticoresearch-buddy%E3%80%82
Docker Compose配置
在多容器环境中,可通过Docker Compose配置Manticore。以下是推荐的基础配置:
yamlversion: '2.2' services: manticore: container_name: manticore image: manticoresearch/manticore restart: always ports: - 127.0.0.1:9306:9306 - 127.0.0.1:9308:9308 ulimits: nproc: 65535 nofile: soft: 65535 hard: 65535 memlock: soft: -1 hard: -1 volumes: - ./data:/var/lib/manticore # - ./manticore.conf:/etc/manticoresearch/manticore.conf # 如需自定义配置,取消注释此行
除暴露9306和9308端口外,可通过docker-compose exec manticore mysql登录容器。
HTTP协议使用
HTTP协议监听9308端口,映射端口后可通过curl访问:
bashdocker run --name manticore -p 9308:9308 -d manticoresearch/manticore
创建表:
bashcurl -X POST 'http://127.0.0.1:9308/sql' -d 'mode=raw&query=CREATE TABLE testrt ( title text, content text, gid integer)'
插入文档:
bashcurl -X POST 'http://127.0.0.1:9308/json/insert' -d'{"index":"testrt","id":1,"doc":{"title":"Hello","content":"world","gid":1}}'
执行搜索:
bashcurl -X POST 'http://127.0.0.1:9308/json/search' -d '{"index":"testrt","query":{"match":{"*":"hello world"}}}'
日志查看
默认情况下,服务器日志输出到/dev/stdout,可通过以下命令从主机查看:
bashdocker logs manticore
通过设置环境变量QUERY_LOG_TO_STDOUT=true,可将查询日志重定向到Docker日志。
多节点集群与复制
以下是定义双节点集群的简单docker-compose.yml:
yamlversion: '2.2' services: manticore-1: image: manticoresearch/manticore restart: always ulimits: nproc: 65535 nofile: soft: 65535 hard: 65535 memlock: soft: -1 hard: -1 networks: - manticore manticore-2: image: manticoresearch/manticore restart: always ulimits: nproc: 65535 nofile: soft: 65535 hard: 65535 memlock: soft: -1 hard: -1 networks: - manticore networks: manticore: driver: bridge
操作步骤:
启动集群:docker-compose up
在节点1创建集群:
sql$ docker-compose exec manticore-1 mysql mysql> CREATE TABLE testrt ( title text, content text, gid integer); mysql> CREATE CLUSTER posts; Query OK, 0 rows affected (0.24 sec) mysql> ALTER CLUSTER posts ADD testrt; Query OK, 0 rows affected (0.07 sec) mysql> exit
sql$ docker-compose exec manticore-2 mysql mysql> JOIN CLUSTER posts AT 'manticore-1:9312'; mysql> INSERT INTO posts:testrt(title,content,gid) VALUES('hello','world',1); Query OK, 1 row affected (0.00 sec) mysql> exit
sql$ docker-compose exec manticore-1 mysql MySQL [(none)]> select * from testrt; +---------------------+------+-------+---------+ | id | gid | title | content | +---------------------+------+-------+---------+ | 3891565839006040065 | 1 | hello | world | +---------------------+------+-------+---------+ 1 row in set (0.00 sec) mysql> exit
推荐覆盖Docker默认ulimit设置:
bash--ulimit nofile=65536:65536
为获得最佳性能,可将表组件"mlocked"到内存中。在Docker中运行时,需添加以下参数以允许内存锁定:
bash--cap-add=IPC_LOCK --ulimit memlock=-1:-1
如需使用包含表定义的自定义配置,需挂载配置文件:
bashdocker run --name manticore -v $(pwd)/manticore.conf:/etc/manticoresearch/manticore.conf -v $(pwd)/data/:/var/lib/manticore -p
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务