You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Elasticsearch API合并同年度的payload.YYYY-MM索引

Elasticsearch v7.12.0 合并同年度索引实现方案

要将payload.YYYY-MM格式的月度索引合并为payload.YYYY年度索引,可通过Elasticsearch的_reindex API完成,以下是具体操作步骤:

1. 预创建目标年度索引(推荐)

为保证目标索引的mapping和settings与源索引一致,建议先基于某一个月度索引的配置创建年度索引:

# 获取月度索引的settings和mapping
GET payload.2023-01/_settings,_mappings

# 创建年度索引,填入上述获取到的配置
PUT payload.2023
{
  "settings": {
    # 粘贴获取到的settings内容
  },
  "mappings": {
    # 粘贴获取到的mappings内容
  }
}

2. 使用_reindex API迁移数据

针对每一年份,执行_reindex将该年度下所有月度索引的数据迁移到对应年度索引:

POST _reindex
{
  "source": {
    "index": "payload.2023-*"  # 匹配2023年所有月度索引
  },
  "dest": {
    "index": "payload.2023"     # 目标年度索引
  },
  "conflicts": "proceed"        # 遇到文档ID冲突时继续执行(可根据需求调整)
}

异步执行(大数据量场景适用)

如果待迁移数据量较大,建议开启异步执行避免请求超时:

POST _reindex?wait_for_completion=false
{
  "source": {
    "index": "payload.2023-*"
  },
  "dest": {
    "index": "payload.2023"
  },
  "conflicts": "proceed"
}

执行后会返回任务ID,可通过以下命令查看迁移进度:

GET _tasks/{task_id}

3. 验证迁移结果

数据迁移完成后,对比源索引和目标索引的文档数,确认数据完整:

# 统计源索引总文档数
GET payload.2023-*/_count

# 统计目标索引文档数
GET payload.2023/_count

4. 删除原月度索引

确认数据无误后,删除原有月度索引:

DELETE payload.2023-*

注意事项

  • 迁移过程中若源索引仍有写入,建议暂停写入或通过source.query过滤新增数据,避免遗漏。
  • 多年度合并重复上述步骤即可。

内容的提问来源于stack exchange,提问作者Maxime Dousselaere

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 12:16:02