
## prompt
参考 @docs/常用查询 - ES.md 帮我查询 tenant_Id=163的@search_products.json (1314-1332) 这些字段的统计分布，也就是这里每个字段的所有的值及其对应的文档数


已按 `docs/常用查询 - ES.md` 的写法，在索引 **`search_products_tenant_163`** 上做了 `terms` 聚合（租户已按索引拆分，用 `match_all` 即可，等价于只查 tenant 163）。集群在本机 `localhost:9200` 上执行成功。

## 结果概要

- **总文档数**：8977  
- 六个字段的 **`sum_other_doc_count` 均为 0**，在 `size: 20000` 下没有截断，即：**当前数据里每个字段的取值都已全部列出**。  
- **`__missing__`**：来自聚合里的 `"missing": "__missing__"`，表示该字段缺失或为空的文档数（便于和「有值」一起看）。  
- **`option1_values` / `option2_values`** 多为多值数组：同一篇文档可落入多个桶，因此 **各桶 `doc_count` 之和会大于 8977**（这是 ES `terms` 的正常语义，表示「含该取值的文档数」，不是互斥分区）。  
- **`option1_name` / `option2_name` / `option3_name`** 及 **`option3_values`** 的桶计数之和与文档关系更接近单值/稀疏（见下方校验）。

### `option1_name`（13 个取值）

| 值 | 文档数 |
|---:|---:|
| __missing__ | 4538 |
| Size | 2916 |
| Color | 1174 |
| 颜色 | 244 |
| COLOR | 56 |
| color | 16 |
| Colour | 15 |
| Variant | 9 |
| Style | 3 |
| Colors | 2 |
| Scent | 2 |
| Cup Size | 1 |
| Pattern Name | 1 |

### `option2_name`（13 个取值）

| 值 | 文档数 |
|---:|---:|
| __missing__ | 4666 |
| Color | 2879 |
| Size | 1134 |
| 尺码 | 244 |
| SIZE | 17 |
| size | 16 |
| Style | 12 |
| Cup Size | 4 |
| Item Package Quantity | 1 |
| Number of Items | 1 |
| Ring Size | 1 |
| Scent | 1 |
| Team Name | 1 |

### `option3_name`（11 个取值）

| 值 | 文档数 |
|---:|---:|
| __missing__ | 8831 |
| Fit Type | 52 |
| Special Size | 31 |
| Number of Items | 17 |
| Special Size Type | 16 |
| Team Name | 15 |
| Material Type | 8 |
| Style | 4 |
| Configuration | 1 |
| Hand Orientation | 1 |
| Pattern Name | 1 |

### `option1_values` / `option2_values`

- **桶数量**：`option1_values` **3463**，`option2_values` **3605**（完整列表过长，不宜贴在对话里）。  
- **文档中出现最多的取值（前 10）**  
  - **option1_values**：`__missing__` 4538，其后如 Medium 749、Black 653、Large 635、8/9/White/10/7/Small…  
  - **option2_values**：`__missing__` 4666，其后如 L 1161、M 1158、S 1064、XL 1036、Black 876…  

### `option3_values`（94 个桶，已全部枚举）

除 `__missing__` 8831 外，另有 93 个具体取值；上文 Markdown 表里已列全（从 Standard 到 `standard` 等）。

---

## 可复用的查询（与文档一致）

```bash
curl -sS -u 'saas:4hOaLaf41y2VuI8y' -X GET 'http://localhost:9200/search_products_tenant_163/_search?pretty' \
  -H 'Content-Type: application/json' -d '{
  "query": { "match_all": {} },
  "size": 0,
  "track_total_hits": true,
  "aggs": {
    "option1_name_dist": {
      "terms": { "field": "option1_name", "size": 20000, "order": { "_count": "desc" }, "missing": "__missing__" }
    },
    "option2_name_dist": {
      "terms": { "field": "option2_name", "size": 20000, "order": { "_count": "desc" }, "missing": "__missing__" }
    },
    "option3_name_dist": {
      "terms": { "field": "option3_name", "size": 20000, "order": { "_count": "desc" }, "missing": "__missing__" }
    },
    "option1_values_dist": {
      "terms": { "field": "option1_values", "size": 20000, "order": { "_count": "desc" }, "missing": "__missing__" }
    },
    "option2_values_dist": {
      "terms": { "field": "option2_values", "size": 20000, "order": { "_count": "desc" }, "missing": "__missing__" }
    },
    "option3_values_dist": {
      "terms": { "field": "option3_values", "size": 20000, "order": { "_count": "desc" }, "missing": "__missing__" }
    }
  }
}'
```

若某租户取值超过 2 万，需把 `size` 再加大或用 **composite** 分页扫完全部桶。

## 完整 JSON（含 3463 + 3605 条 value 分布）

已整理为：`/tmp/tenant163_option_fields_distribution.json`（约 620KB），结构为按字段分组的 `values: [{ "value", "doc_count" }, ...]`，便于你用脚本或表格工具打开。

如需去掉 `__missing__` 桶，从请求里删掉各聚合中的 `"missing": "__missing__"` 即可。