在 ThinkPHP 中集成 Elasticsearch,主要通过官方 PHP 客户端 elasticsearch/elasticsearch 实现。以下是关键步骤和注意事项:
核心步骤
安装 Elasticsearch PHP 客户端
使用 Composer 安装官方客户端:composer require elasticsearch/elasticsearch
配置连接信息
根据 ThinkPHP 版本(如 TP5、TP6、TP8),在配置文件(如config/elasticsearch.php)中设置节点地址:return [ 'hosts' => ['127.0.0.1:9200'], // 本地默认端口 'username' => '', // 若启用安全认证则填写 'password' => '', ];
初始化客户端
在控制器或服务中创建客户端实例:use Elasticsearch\ClientBuilder;$client = ClientBuilder::create() ->setHosts(config('elasticsearch.hosts')) ->build();执行常见操作
创建索引:
$client->indices()->create(['index' => 'my_index'])添加文档:
$client->index(['index' => 'my_index', 'body' => ['title' => 'test']])搜索:
$client->search(['index' => 'my_index', 'body' => ['query' => ['match_all' => []]]])
版本兼容性注意
Elasticsearch 8.x+ 不再支持 URL 中的
type参数(如_doc已默认)2。若使用 ES 7.x,需设置
'include_type_name' => true9。推荐使用 Elasticsearch 7.17 或 8.11+,与主流 PHP 版本兼容性较好 43。
推荐实践方案
ThinkPHP 6/8:建议封装为 Service 类,通过依赖注入管理客户端 59。
复杂查询:可使用链式操作封装库(如 xiaosongshu/elasticsearch)简化开发 3。
中文分词:安装 IK Analyzer 插件,并在映射中指定
analyzer => 'ik_max_word'1112。
参考资源
提示:确保 Elasticsearch 服务已启动,并开放对应端口(默认 9200)。生产环境建议启用 HTTPS 和认证。