您的位置:首页 > 教育 > 锐评 > 公众号免费模板_深圳龙华区邮政编码多少_百度投票人气排行榜入口_深圳百度首页优化

公众号免费模板_深圳龙华区邮政编码多少_百度投票人气排行榜入口_深圳百度首页优化

2025/3/18 23:53:27 来源:https://blog.csdn.net/hanyi_/article/details/146065105  浏览:    关键词:公众号免费模板_深圳龙华区邮政编码多少_百度投票人气排行榜入口_深圳百度首页优化
公众号免费模板_深圳龙华区邮政编码多少_百度投票人气排行榜入口_深圳百度首页优化

报错现象


[2025-03-06 10:49:52.221][ERROR][main][org.springframework.data.elasticsearch.repository.support.AbstractElasticsearchRepository][mainrace][TID: N/A][distribute-sale] - failed to load elasticsearch nodes : org.elasticsearch.ElasticsearchStatusException: Elasticsearch exception [type=illegal_argument_exception, reason=mapper [promoteType] cannot be changed from type [keyword] to [integer]]

错误原因分析

该错误是由于 Elasticsearch 的索引映射(Mapping)中字段 promoteType 的类型从 keyword 被尝试修改为 integer,而 Elasticsearch ​不允许直接修改已有字段的类型。在 Spring Boot 服务重启时,Spring Data Elasticsearch 可能尝试自动更新索引映射,导致此异常。

详细原因

  1. 字段类型冲突

    • 原有索引定义promoteType 字段类型为 keyword(通常对应 Java 的 String)。
    • 新的实体类定义:在 Spring Data Elasticsearch 的 @Document 类中,promoteType 字段类型被改为 Integer
    • 冲突触发:服务重启时,Spring Data Elasticsearch 检测到实体类字段类型变化,尝试更新 Elasticsearch 映射,但 Elasticsearch 拒绝此操作。
  2. Spring Data 的自动索引管理

    • 默认情况下,Spring Data Elasticsearch 会在应用启动时自动创建或更新索引(通过 spring.data.elasticsearch.repositories.enabled=true)。
    • 如果 @Document(createIndex = true) 且索引已存在,Spring Data 会尝试更新映射,但无法处理字段类型变更。

解决方案

1. 临时修复(快速恢复)​

禁用 Spring Data Elasticsearch 的自动索引更新功能,避免触发映射冲突:

# application.yml
spring:data:elasticsearch:repositories:enabled: false

或通过注解关闭自动创建索引:

@Document(indexName = "your_index", createIndex = false)
public class YourEntity {// 字段定义
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com