ES搜索配置教程(待发布)

1. 环境要求

  • Elasticsearch8.x(建议 8.x)
  • PHP 8.2+,Composer 已安装
  • IK 分词器
    • 安装参考 ES 插件 analysis-ik,安装后需重启 ES

2. 配置 ES 连接

在项目根目录 .env 添加(按需修改不填则已有以下默认参数):

# ES 连接参数
ES_HOST=127.0.0.1
ES_PORT=9200
ES_USERNAME=
ES_PASSWORD=
ES_SSL_VERIFY=false
ES_TIMEOUT=30
ES_RETRIES=3

3. 启用 ES 搜索

  • 系统通过配置项 selectSeachType 控制搜索通道(es 或 mysql)。

4. 初始化索引与导入数据

  • 在商品管理 - 初始化ES搜索数据
    • 返回:
      • 立即返回“已触发ES全量初始化任务”,由队列后台处理

注意:

  • 生产环境需常驻队列消费者,确保同步任务执行
  • 常见启动方式(根据你们现有队列部署规范调整):
    • 前台运行(调试):php think queue:listen | cat
    • 守护进程:建议使用 Supervisor 或系统服务托管

5. 运行时数据一致性

以下操作会自动投递 ES 同步任务(无需手工触发):

  • 新增商品
  • 编辑商品
  • 上下架商品
  • 移入回收站/还原商品

要求队列消费者常驻运行,保证异步同步执行。


6. 常见问题与排查

  • 接口 setting/config/checkEsConnection 失败:
    • 核对 .env 的 ES 主机、端口、账号、密码是否正确
    • 检查网络连通性与防火墙
    • 如果启用 SSL,确认 ES_SSL_VERIFY 和证书配置
  • 中文检索效果差:
    • 安装 IK 分词器 analysis-ik,重启 ES
    • 确保初始化任务已执行,或重新触发初始化数据
  • 全量初始化未生效:
    • 确认队列消费者运行中
    • 查看队列失败任务(若使用 Redis/Database 队列)
  • 切回 MySQL 搜索:
    • selectSeachType 设置为 mysql

7. 快速检查清单

  • 已安装 elasticsearch/elasticsearch 依赖
  • .env 正确配置 ES 连接参数
  • 搜索配置已改为es搜索
  • 启动队列消费者
  • 触发全量导入
  • 前台搜索可用,且命中结果与排序符合预期
ES搜索配置教程(待发布)
大纲
1. 环境要求
2. 配置 ES 连接
3. 启用 ES 搜索
4. 初始化索引与导入数据
5. 运行时数据一致性
6. 常见问题与排查
7. 快速检查清单