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

ES 6.6.1使用Spark写入数据时报EsHadoopIllegalArgumentException错误如何解决

报错根因

ES 6.x及更早版本写入数据时强制要求同时指定索引名称和文档类型,格式要求为{索引名}/{类型名},你当前在save方法中仅传入了索引名my_index_name,缺少文档类型部分,因此触发参数校验异常。

解决方案

你可以任选以下一种方式修改代码即可解决问题:

  • 方式1:直接修改save方法的传入路径,补充文档类型
    你可以在原索引名后追加自定义的文档类型(例如通用的doc、_doc都可,也可根据业务自定义类型名),修改后的代码如下:
    df.write.format("org.elasticsearch.spark.sql")
      .option("es.mapping.id", "id")
      .mode("append").save("my_index_name/doc")
    
  • 方式2:通过option参数配置资源路径
    你也可以将索引和类型的配置放到es.resource参数中,无需在save方法中传参,代码如下:
    df.write.format("org.elasticsearch.spark.sql")
      .option("es.mapping.id", "id")
      .option("es.resource", "my_index_name/doc")
      .mode("append").save()
    

小提示:如果后续有升级ES到7.x及以上版本的计划,建议文档类型使用_doc,可以最大程度兼容高版本ES的默认配置,减少后续升级时的代码改动量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 00:24:03