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

如何创建仅含tip UUID的Elasticsearch JSON记录并适配后续映射字段扩容?

Elasticsearch 可扩容存储方案落地分步指引

前置说明

默认你已经掌握ES基础操作、Java ES客户端调用能力,以下内容直接针对需求落地,跳过环境安装、基础API调用等入门内容。


步骤1:ES侧配置可扩容索引模板(核心解决字段扩容需求)

提前配置索引模板可以避免后续新增字段时反复手动修改索引Mapping,同时保证同业务线索引配置统一:

PUT _index_template/tip_data_template
{
  "index_patterns": ["tip_data-*"],
  "template": {
    "settings": {
      "number_of_shards": 3,
      "number_of_replicas": 1,
      "dynamic": "true"
    },
    "mappings": {
      "dynamic_templates": [
        {
          "string_fields": {
            "match_mapping_type": "string",
            "mapping": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        {
          "numeric_fields": {
            "match_mapping_type": "long",
            "mapping": {
              "type": "long"
            }
          }
        }
        // 后续新增日期、嵌套对象等字段类型,直接在此补充动态模板规则即可
      ],
      "properties": {
        "tip_uuid": {
          "type": "keyword",
          "index": true
        }
      }
    }
  },
  "priority": 200
}

以上配置说明:

  • 所有命名符合tip_data-*规则的索引都会自动继承该模板配置
  • 初始仅定义tip_uuid字段,符合第一阶段写入需求
  • 开启动态映射+提前约定动态类型规则,后续新增字段无需手动修改Mapping,ES会自动按规则生成对应字段配置

步骤2:初始化业务索引

直接调用ES API创建索引即可,无需额外传Mapping配置,会自动继承步骤1的模板:

PUT tip_data-202406

可根据业务数据量选择按日/月/季度拆分索引,命名符合tip_data-*规则即可


步骤3:Java侧实现基础写入逻辑

不管使用Spring Data Elasticsearch还是RestHighLevelClient,都可以直接实现仅含tip_uuid的JSON写入,以下是RestHighLevelClient的示例代码:

// 构造索引请求,指定要写入的索引名
IndexRequest indexRequest = new IndexRequest("tip_data-202406");
// 可选:直接用tip_uuid作为文档ID,避免重复写入
String tipUuid = UUID.randomUUID().toString();
indexRequest.id(tipUuid);
// 构造仅含tip_uuid的JSON数据
Map<String, Object> data = new HashMap<>();
data.put("tip_uuid", tipUuid);
indexRequest.source(data, XContentType.JSON);
// 执行写入
client.index(indexRequest, RequestOptions.DEFAULT);

该写入逻辑支持除tip_uuid外无任何字段的JSON写入,满足第一阶段需求。


步骤4:后续字段扩容操作

需要新增字段时无需修改现有索引配置,仅需两步即可完成:

  • 如果新增字段类型不在现有动态模板规则内,先更新索引模板的dynamic_templates配置,新规则会自动适配所有新写入的字段
  • Java侧直接在实体类新增对应字段属性,写入时给字段赋值即可,ES会自动生成对应字段的Mapping,不会影响存量数据

可选优化项

  • 数据量较大时可配置索引生命周期策略,自动冷热归档、删除历史数据,降低存储成本
  • 不需要检索的字段可以在动态模板中配置"index": false,节省存储空间
  • 对查询性能要求高的场景可将tip_uuid设置为路由键,同UUID的数据落到同一个分片,提升查询效率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:09:02