Elasticsearch重新指定id字段失败

为增加查询速度,在项目中集成了Elasticsearch,但是在删掉旧的索引,重新建立新的索引时确报错提示说,唯一id已被指定,重新指定id失效(但是此时旧的索引已经被删掉了,新的索引还没创建,所以是否有持久化的配置没有清除掉?);报错详情如图所示:
有相关经验的同学可以帮忙解答一下么,不胜感激~

我是使用的javaAPI操作的es,操作顺序与详情如下:

操作1.使用 ElasticsearchRestTemplate#createIndex(Class<?> clazz )方法创建的索引,代码如下

    /**
     * 创建索引
     */
    @Test
    void creatIndex() throws IOException {
        //创建索引
        boolean result = elasticsearchRestTemplate.createIndex(UserCommentDO.class);
        //boolean result = elasticsearchOperations.createIndex(UserCommentDO.class);
        //构建映射
        elasticsearchRestTemplate.putMapping(UserCommentDO.class);
        System.out.println("创建索引结果: " + result);

    }

此时旧的索引的结构如下(此时@Id注解标识在 id 字段上,即指定id字段为es的唯一索引)

@Data
@EqualsAndHashCode(callSuper = false)
@TableName("pd_cmtmgr_usercomments")
@Document(indexName = "comment", shards = 5, replicas = 1)
public class UserCommentDO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 自增id
     */
    @Id
    @Field(type = FieldType.Keyword)
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 评价来源(1:三方,2:企迈,3:饿了么,4:美团,5:自研小程序)
     */
    @Field(type = FieldType.Keyword)
    @TableField("type_id")
    private Integer typeId;
  ...
}

操作2.随后我使用api将此索引删除掉,意图将es的唯一标识更换到新的字段上;操作删除es索引的代码如下:

    /**
     * 删除 索引
     */
    @Test
    void deleteIndex() {
        //删除索引
        boolean result = elasticsearchRestTemplate.deleteIndex(UserCommentDO.class);
        System.out.println("删除索引结果: " + result);

    }

操作3.将@Id字段标识到新创建的字段上,代码如下:(指定esUniqueId字段为es的唯一索引)

@Data
@EqualsAndHashCode(callSuper = false)
@TableName("pd_cmtmgr_usercomments")
@Document(indexName = "comment", shards = 5, replicas = 1)
public class UserCommentDO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 自增id
     */
    @Field(type = FieldType.Keyword)
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * es中的唯一索引
     */
    @Id
    @Field(type = FieldType.Keyword)
    private String esUniqueId;

操作4.重新执行创建es索引的代码(代码和操作1相同),此时es报错提示,唯一索引id已经被指定到字段id上,重新设置id字段失败。报错详情如下:

org.springframework.data.mapping.MappingException: Attempt to add id property private java.lang.String com.pindao.comment.api.pojo.domain.UserCommentDO.esUniqueId but already have property private java.lang.Long com.pindao.comment.api.pojo.domain.UserCommentDO.id registered as id. Check your mapping configuration!

    at org.springframework.data.mapping.model.BasicPersistentEntity.returnPropertyIfBetterIdPropertyCandidateOrNull(BasicPersistentEntity.java:266)
    at org.springframework.data.mapping.model.BasicPersistentEntity.addPersistentProperty(BasicPersistentEntity.java:218)
    at org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchPersistentEntity.addPersistentProperty(SimpleElasticsearchPersistentEntity.java:210)
    at org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchPersistentEntity.addPersistentProperty(SimpleElasticsearchPersistentEntity.java:60)

所以有遇到相同情况的同学么,麻烦帮忙解答一下~