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

Elasticsearch 6.2 Java API如何实现自动生成文档ID?

实现Elasticsearch自动生成文档ID的修改方案

没问题,我帮你调整代码实现自动生成ID的需求~

你当前的代码里,IndexRequest构造方法的第三个参数user.username就是手动指定的文档ID,要让Elasticsearch自动生成ID,只需要移除这个ID参数即可,具体修改如下:

修改后的完整代码

java.util.Map<String, Object> jsonMap = new HashMap<String, Object>();
jsonMap.put("username", user.username);
jsonMap.put("password", user.password);
jsonMap.put("mail", user.mail);
jsonMap.put("friends", user.friends);
jsonMap.put("maps", user.maps);

// 移除构造方法里的第三个ID参数,ES会自动生成随机ID
IndexRequest indexRequest = new IndexRequest("users", "doc")
    .source(jsonMap)
    .opType(DocWriteRequest.OpType.CREATE);

关键说明

  • Elasticsearch在你不手动指定文档ID时,会自动生成一个长度为20的URL-safe Base64随机字符串作为ID,完全符合自动生成的需求。
  • 如果你需要在插入后获取这个自动生成的ID,可以在执行索引请求后通过响应对象获取:
    // 假设你已经有Elasticsearch Client实例client
    IndexResponse response = client.index(indexRequest, RequestOptions.DEFAULT);
    String autoGeneratedId = response.getId(); // 这里就是自动生成的文档ID
    

额外优化(针对ES7+版本)

从Elasticsearch 7.x开始,官方逐步废弃了文档类型(也就是你代码里的doc),如果你的ES版本是7及以上,推荐使用更简洁的构造方法:

IndexRequest indexRequest = new IndexRequest("users")
    .source(jsonMap)
    .opType(DocWriteRequest.OpType.CREATE);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:02:49