Data Caching Infrastructure
FastAPI → OpenSearch 网关
🌐 客户端请求
📦 API 层
入口文件
- main.py - 入口点,
/和/health路由 + 异常处理 - application.py - FastAPI 工厂,配置中间件和路由
- lifecycle.py - startup/shutdown 生命周期管理
API v1 路由 /api/v1/search
| 端点 | 功能 |
|---|---|
POST /hybrid |
混合搜索 |
POST /batch/ids |
批量 ID 查询 |
POST /elasticsearch/dsl |
DSL 高级搜索 |
⚙️ 服务层
search/manager.py
- SearchBackend 检测「local_118 或 aws」
- 索引名称解析与别名映射
- Shopify 代理转发逻辑
- 结果格式化与排序
opensearch/service.py
- 单例模式 - 客户端生命周期管理
- 自动重试 - 3次指数退避「2s → 4s → 8s」
- 连接池管理 - 3分钟或500请求后重置
- 并发控制 - 信号量限制100并发
🔀 环境路由
🖥️ 本地 OpenSearch
ENVIRONMENT=local_118
192.168.10.118:9200
用户名/密码认证
☁️ AWS OpenSearch
ENVIRONMENT=aws
AWS OpenSearch Service
SigV4 认证
🛒 Shopify 特殊处理
当满足以下条件时:
platform = shopifySHOPIFY_PROXY_LOCAL = true
转发到内网穿透地址
http://18.208.13.29:7101
📜 离线脚本
scripts/sync/
├─ linkedin_company/
│ ├─ create_index.py
│ └─ data_loaders.py
├─ linkedin_user/
└─ shopify/
├─ create_index.py
└─ data_processor.py
数据导入到 OpenSearch
📚 共享库
lib/indexing/
├─ mappings/ # 索引映射
├─ settings/ # 索引设置
└─ processors/ # 数据转换