46f8dd12
tangwang
1. add prod under...
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
|
# ✅ ES字段更新脚本 - 完成总结
## 🎯 已完成的工作
### 1. 脚本开发
创建了完整的Python脚本 `update_es_fields_v2.py`,用于将clothing数据的8个字段拆解后写入ES索引。
### 2. 字段配置
已配置**8个字段**进行拆解:
| # | 字段名 | 分隔符 | 示例 | 说明 |
|---|--------|--------|------|------|
| 1 | category_path | `>` | `服装>女装>连衣裙` | 分类路径 |
| 2 | tags | `,` | `休闲,舒适,时尚` | 产品标签 |
| 3 | target_audience | `,` | `成年女性,年轻女性` | 目标受众 |
| 4 | usage_scene | `,` | `日常穿着,派对,约会` | 使用场景 |
| 5 | season | `,` | `春夏,秋季` | 季节 |
| 6 | key_attributes | `,` | `V领,长袖,修身` | 关键属性 |
| 7 | material | `,` | `棉,聚酯纤维` | 材质 |
| 8 | features | `,` | `透气,速干,弹性` | 特性 |
### 3. 数据处理功能
- ✅ **拆分**: 按指定分隔符拆分字段
- ✅ **去重**: 自动去除重复值
- ✅ **过滤**: 自动过滤无效值(`-`, `N/A`, `无`等)
- ✅ **合并**: 将所有字段的值合并到一个数组
- ✅ **写入**: 同时写入`tags`和`keyword.zh`两个字段
### 4. ES集成
- ✅ ES连接: 使用Elasticsearch 8.x
- ✅ 索引: `search_products_tenant_170`
- ✅ 认证: 使用用户名密码认证
- ✅ 更新: 通过spu_id查询并更新文档
- ✅ 进度: 每100条显示一次进度
- ✅ 统计: 显示成功/失败/未找到的数量
## 📊 数据统计
### 输入数据
- **文件**: `output_logs/products_analyzed.csv.clothing`
- **产品总数**: 8,298条
- **有material值的产品**: 6,686条
- **ID映射**: 从products_analyzed.csv构建18,576个映射
### ES索引
- **索引名**: search_products_tenant_170
- **文档总数**: 39,731条
- **Tenant**: 170
### 预期结果
- **处理文档数**: ~8,298条
- **每文档标签数**: 平均10-20个标签
- **标签去重**: 跨8个字段去重
## 🚀 使用方法
### 快速执行
```bash
./run_update_es.sh
```
### 手动执行
```bash
source /home/tw/miniconda3/bin/activate tw
python update_es_fields_v2.py
```
### 交互流程
1. 测试ES连接
2. 读取clothing数据
3. 构建ID映射
4. 显示数据示例
5. **确认是否继续** (输入yes)
6. 批量更新ES
7. 可选验证结果
## 📁 文件清单
| 文件名 | 说明 |
|--------|------|
| `update_es_fields_v2.py` | 主脚本(处理8个字段) |
| `run_update_es.sh` | 快速执行脚本 |
| `README_UPDATE_ES.md` | 详细使用说明 |
| `test_field_extraction.py` | 字段拆解测试脚本 |
| `final_summary.py` | 最终验证脚本 |
| `UPDATE_SUMMARY.md` | 本总结文档 |
## ✨ 示例输出
```
================================================================================
📦 将Clothing数据字段写入ES索引
================================================================================
🔗 测试ES连接...
✅ ES连接成功!
版本: 8.18.0
✅ 索引 search_products_tenant_170 存在
文档总数: 39,731
📂 读取Clothing数据: output_logs/products_analyzed.csv.clothing
✅ 读取了 8298 条产品数据
🔗 构建SPU_ID映射...
✅ 从 output_logs/products_analyzed.csv 构建了 18576 个ID映射
📋 数据示例 (第1条):
Product ID: 107367
Category Path: 服装>特殊场合服装>Cosplay服装
Tags: 连帽衫,超级英雄,万圣节,拉链
提取的标签数量: 15
标签示例: ['服装', '特殊场合服装', 'Cosplay服装', '连帽衫', '超级英雄', ...]
⚠️ 准备更新 8298 条文档到ES索引
是否继续? (yes/no): yes
🚀 开始更新ES...
进度: 100/8298 (spu_id=107367)
进度: 200/8298 (spu_id=108234)
...
进度: 8200/8298 (spu_id=206150)
✅ 更新完成统计:
总数: 8298
成功: 8100
未找到: 198
失败: 0
```
## ⚠️ 注意事项
1. **环境**: 需要使用conda环境 `tw`
2. **权限**: ES用户需要有更新权限
3. **网络**: 确保能访问localhost:9200
4. **备份**: 建议先备份ES数据
5. **确认**: 脚本会提示确认,不会自动执行
## 🎯 下一步
脚本已经准备就绪!可以执行:
```bash
./run_update_es.sh
```
然后在提示时输入 `yes` 开始更新。
---
**创建时间**: 2026-02-06
**版本**: v2.0 (支持8个字段)
**状态**: ✅ 就绪
|