Yii2.0.55 Elasticsearch全文搜索配置【检索】

夜宇吖_5225

夜宇吖_5225

2026-08-08

256人浏览

原创

Yii Framework 2.0.51
Yii Framework 2.0.51

Yii Framework 2.0.51 官方 Basic 应用模板,适合旧项目兼容、升级验证和开发测试。

下载
在 yii2.0.55 中启用 elasticsearch 全文搜索需完成四步:配置 elasticsearch 组件(键名必须为 elasticsearch)、定义带中文分词器(如 ik_max_word)的 mapping、创建索引并写入数据后调用 refresh()、最后通过 query() 或 rawquery() 执行检索。

yii2.0.55 elasticsearch全文搜索配置【检索】

在 Yii2.0.55 项目中启用 Elasticsearch 全文搜索功能,需完成客户端连接、索引映射定义、文档写入与基础检索逻辑四步闭环,缺一不可;若跳过 mapping 显式声明或忽略 analyzer 配置,中文字段将无法被分词,导致搜索完全失效。

配置 Elasticsearch 连接

打开 config/web.phpconfig/main.php,在 components 数组中添加 elasticsearch 组件:

【必须使用 elasticsearch 键名】 Yii2 的 ActiveRecord 默认只识别该键名,否则后续调用 Elasticsearch::getDb() 会抛出未定义连接异常。

添加如下配置:

'elasticsearch' => [<br>    'class' => 'yii\elasticsearch\Connection',<br>    'nodes' => [<br>        ['http_address' => '127.0.0.1:9200'],<br>    ],<br>],

确保 Elasticsearch 服务已在本地 9200 端口运行,且未被防火墙拦截;若使用远程节点,请替换 http_address 并确认跨域策略已放开。

定义 Elasticsearch 模型类

创建 common/models/ArticleSearch.php(路径可自定),继承 yii\elasticsearch\ActiveRecord

类内必须重写 getDb() 方法,返回全局 elasticsearch 组件实例:

public static function getDb() {<br>    return \Yii::$app->get('elasticsearch');<br>}

接着定义 mapping() 方法——这是全文搜索生效的核心。若省略此方法,Elasticsearch 将使用动态 mapping,中文字段默认为 text 类型但无分词器,搜索时无法匹配单字或词组。

示例(适配中文 IK 分词器):

public static function mapping() {<br>    return [<br>        'properties' => [<br>            'title' => ['type' => 'text', 'analyzer' => 'ik_max_word', 'search_analyzer' => 'ik_smart'],<br>            'content' => ['type' => 'text', 'analyzer' => 'ik_max_word', 'search_analyzer' => 'ik_smart'],<br>            'status' => ['type' => 'integer'],<br>        ],<br>    ];<br>}

注意:ik_max_word 用于索引阶段切分出尽可能多的词,ik_smart 用于搜索阶段减少误匹配;若未安装 ik 插件,此配置将导致索引创建失败。

创建索引并写入测试数据

在控制器或命令行中执行以下操作:

第一步:调用 ArticleSearch::createIndex() 创建索引(自动应用 mapping);

第二步:使用 save() 写入文档,例如:

$model = new ArticleSearch();<br>$model->title = 'Yii2 集成 Elasticsearch 全文检索';<br>$model->content = '本教程演示如何在 Yii2.0.55 中配置 Elasticsearch 实现中文搜索';<br>$model->status = 1;<br>$model->save();

第三步:强制刷新索引使文档立即可查:ArticleSearch::refresh(); —— 不执行这一步,新写入文档可能延迟数秒才被检索到。

执行全文检索查询

方法一:使用 query() 构建 DSL 查询

$query = ArticleSearch::find()<br>    ->query(['match' => ['title' => 'Yii2']])<br>    ->limit(10);<br>$models = $query->all();

方法二:使用 rawQuery() 直接传入完整 JSON DSL(适合复杂条件)

$dsl = [<br>    'query' => [<br>        'multi_match' => [<br>            'query' => '全文检索',<br>            'fields' => ['title^3', 'content']<br>        ],<br>    ],<br>    'highlight' => [<br>        'fields' => ['title' => new \stdClass(), 'content' => new \stdClass()]<br>    ],<br>];<br>$models = ArticleSearch::find()->rawQuery($dsl)->all();

注意:highlight 字段需传入空对象而非空数组,否则高亮不生效;multi_match 中的 ^3 表示 title 字段权重是 content 的三倍

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
PHP Yii框架专题
PHP Yii框架专题

本专题专注于PHP主流框架Yii的应用,系统讲解MVC架构、路由机制、数据库操作、表单处理、安全验证与RESTful API 开发等核心内容。通过电商网站、后台管理系统与内容管理平台等实战项目,帮助学员快速掌握Yii框架的开发技巧与实战经验。

2025.09.04

2750

22

Elasticsearch 从入门到搜索引擎实战
Elasticsearch 从入门到搜索引擎实战

本专题带你从零掌握 Elasticsearch 分布式搜索引擎。深入解析倒排索引核心原理,涵盖单机与 Docker 环境搭建、IK 中文分词器配置及索引文档的 CRUD 操作。通过丰富的 Query DSL 实战案例,详解布尔查询、聚合分析与高亮显示,助你快速构建毫秒级响应的企业级高性能搜索服务。

2026.05.12

39

10

Elasticsearch 高级查询与性能优化
Elasticsearch 高级查询与性能优化

本专题深入解析 Elasticsearch 高级查询与性能优化实战。详解 Bool 复合查询、复杂过滤及聚合分析技巧,解决多条件精准检索难题。从索引设计、JVM 调优到硬件规划,全方位分享 Filter 缓存、深分页优化及集群架构调优策略,助你突破性能瓶颈,打造毫秒级响应的高并发企业级搜索服务。

2026.05.12

64

10

Elasticsearch 企业级开发与运维实践专题
Elasticsearch 企业级开发与运维实践专题

本专题聚焦 Elasticsearch 企业级开发与运维实战。深入解析生产环境集群架构规划、节点角色分离及冷热数据分层策略。涵盖索引生命周期管理(ILM)、安全权限控制、快照备份及全链路监控告警体系搭建。通过分享高可用部署与故障排查经验,助你构建安全、稳定且可扩展的企业级分布式搜索平台。

2026.05.12

41

10

NumPy性能优化版本更新与常见报错排查
NumPy性能优化版本更新与常见报错排查

本专题整理 NumPy 性能优化、版本更新与常见报错排查相关教程,覆盖向量化计算、广播性能、内存布局、NumPy 2.0 升级、版本兼容冲突、安装导入报错、dtype 溢出、矩阵运算异常和 broadcasting 报错修复,帮助读者系统掌握 NumPy 性能调优与问题定位方法。

2026.09.22

0

25

Vibeknow在线使用入口合集
Vibeknow在线使用入口合集

本专题汇总了Vibeknow在线创作视频的官方入口及网页版使用教程,涵盖PPT、PDF、Word等文档一键转讲解视频的核心操作,并整理了免费版水印规则与手机端浏览器访问指南,助你快速将知识内容视频化。

2026.09.21

20

20

NumPy随机数文件读写与dtype数据类型
NumPy随机数文件读写与dtype数据类型

本专题整理 NumPy 随机数、文件读写与 dtype 数据类型相关教程,覆盖 Generator/random、随机数种子、正态分布采样、npy/npz/CSV/TXT 保存读取、loadtxt/savetxt、memmap、大文件处理、astype 类型转换、结构化 dtype、整数溢出和精度丢失等场景。

2026.09.21

20

24

NumPy矩阵运算与线性代数计算
NumPy矩阵运算与线性代数计算

本专题整理 NumPy 矩阵运算与线性代数计算相关教程,覆盖矩阵乘法、dot 与 @ 运算符、逆矩阵、行列式、特征值与特征向量、SVD、线性方程组、欧氏距离、矩阵分解和大规模矩阵性能优化等内容,帮助读者掌握 np.linalg 与矩阵计算实战。

2026.09.21

0

20

NumPy广播机制数学运算与统计分析
NumPy广播机制数学运算与统计分析

本专题整理 NumPy 广播机制、数组数学运算与统计分析相关教程,覆盖广播规则、维度对齐、矩阵与数组加减除法、向量化计算、均值方差、分位数、中位数、直方图和 unique 频次统计等场景,帮助读者掌握 ndarray 高效计算与统计处理方法。

2026.09.21

0

17

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Yii Framework 2.0 API 官方文档
Yii Framework 2.0 API 官方文档

共0课时 | 0人学习

Yii2.0框架开发实战视频教程
Yii2.0框架开发实战视频教程

共22课时 | 9.2万人学习