# OpenSearch 索引初始化脚本

## 脚本路径

```text
scripts/setup_opensearch.php
```

## 脚本作用

创建或确认 Proof DB 使用的 OpenSearch chunk 索引，并同步缺失的增量 mapping 字段。

当前版本会确保：

- `proofdb_chunks` 索引存在。
- BM25 全文字段 mapping 已建立。
- 已存在索引上的缺失字段 mapping 会被补齐，例如后续新增的 `summary`。
- `embedding` 字段为 `knn_vector`。
- 向量维度与当前配置一致。

## 运行前提

- OpenSearch 服务已经启动。
- 当前环境中的 OpenSearch 配置可用。
- 项目依赖已安装完成。
- 从项目根目录执行命令。

如果本地 OpenSearch 使用 HTTPS 且证书是自签名：

```bash
OPENSEARCH_SSL_VERIFY=false php scripts/setup_opensearch.php
```

## 运行命令

```bash
php scripts/setup_opensearch.php
```

## 成功输出示例

```text
OpenSearch chunk index initialized: proofdb_chunks
Vector dimensions: 2048
```

## 适用场景

- OpenSearch 首次初始化。
- `proofdb_chunks` 被删除后重建。
- 增加了新的文档字段，例如 `summary`。
- 调整了索引 mapping 或向量维度后重新准备索引。

## 常见失败信号

- `NoNodesAvailableException`
  说明 host、协议、端口、SSL 校验或服务状态不对。
- 鉴权失败
  说明 `OPENSEARCH_USERNAME` / `OPENSEARCH_PASSWORD` 不正确。
