直接用 composer require meilisearch/meilisearch-php 安装 sdk 后无法直接搜索,必须先启动 meilisearch 服务(如 docker 运行 docker run -it -d -p 7700:7700 -v $(pwd)/data:/data.ms getmeili/meilisearch:latest),确保 php 能访问 http://127.0.0.1:7700,并在 client 初始化时传入正确 master key,且需显式设置 searchableattributes 并等待生效。

直接用 composer require meilisearch/meilisearch-php 就能装上官方 SDK,但装完不能直接搜——得先确认 MeiliSearch 服务在跑,且 PHP 能连上它。
安装前必须确认 MeiliSearch 服务已启动
很多人执行 composer require 后立刻调用 new Client() 却报 cURL error 7 或 Connection refused,本质是本地没起 MeiliSearch。它不是 Composer 包的一部分,而是独立服务。
- 推荐用 Docker 启动:
docker run -it -d --name meilisearch -p 7700:7700 -v $(pwd)/data:/data.ms getmeili/meilisearch:latest - 若用二进制,确保
meilisearch进程在监听http://127.0.0.1:7700(默认地址) - PHP 脚本里访问的 host 必须和实际服务地址一致,Docker 容器内 PHP 调用时别写
localhost,改用host.docker.internal(Mac/Windows)或宿主机 IP(Linux)
初始化 Client 时传参容易漏掉 API key
MeiliSearch 默认开启 API key 验证(MEILI_MASTER_KEY 环境变量设置后强制校验),但 PHP SDK 的 Client 构造函数第二个参数是可选的,不传就默认用空 key,结果抛出 401 Unauthorized。
- 正确写法:
$client = new \MeiliSearch\Client('http://127.0.0.1:7700', 'masterKey123'); - 如果服务启用了 master key 但代码里没传,会卡在
createIndex()或search()报错,而不是安装阶段 - 开发环境可临时关 key 验证:启动时加
--no-master-key参数(仅限测试)
索引数据前记得先创建 index 并设置 searchableAttributes
刚装完 SDK 直接 index->addDocuments() 会成功,但后续 search() 返回空结果——因为 MeiliSearch 默认只对 id 字段做搜索,其他字段需显式声明为可搜索。
- 创建索引:
$index = $client->createIndex('products'); - 设可搜索字段:
$index->updateSearchableAttributes(['name', 'description']); - 注意:这个操作是异步的,返回的是任务 ID,要用
$client->waitForTask()等生效,否则立刻搜可能查不到 - 字段名必须和文档中键名完全一致,大小写敏感,比如文档里是
product_name,就不能在searchableAttributes里写name
真正麻烦的不是装包,是服务地址、key、字段配置这三处细节一错就得来回查日志;尤其 searchableAttributes 不生效时,返回结果永远为空,但 HTTP 状态码还是 200,很容易误判成数据没写进去。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











