Spring Data Elasticsearch如何全局配置snake_case字段命名策略
解决方案
你只需要在现有继承了AbstractElasticsearchConfiguration的配置类中,重写fieldNamingStrategy方法,返回官方内置的SnakeCaseFieldNamingStrategy实例即可完成全局配置。
完整配置示例
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.elasticsearch.config.AbstractElasticsearchConfiguration; import org.springframework.data.elasticsearch.core.mapping.FieldNamingStrategy; import org.springframework.data.elasticsearch.core.mapping.SnakeCaseFieldNamingStrategy; import org.springframework.data.elasticsearch.client.ClientConfiguration; import org.springframework.data.elasticsearch.client.RestClients; import org.elasticsearch.client.RestHighLevelClient; @Configuration public class RestClientConfig extends AbstractElasticsearchConfiguration { @Override @Bean public RestHighLevelClient elasticsearchClient() { final ClientConfiguration clientConfiguration = ClientConfiguration.builder() .connectedTo("localhost:9200") .build(); return RestClients.create(clientConfiguration).rest(); } // 全局snake_case字段命名策略配置 @Override public FieldNamingStrategy fieldNamingStrategy() { return new SnakeCaseFieldNamingStrategy(); } }
注意事项
- 配置生效后,所有实体类的驼峰属性会自动映射为ES中的蛇形字段,比如
sampleProperty会自动转为sample_property - 单个字段依然可以通过
@Field(name = "自定义名称")的方式覆盖全局策略,自定义字段名优先级更高 - 若之前已创建过索引,需要删除旧索引后重新触发映射初始化,已存在的索引字段不会自动变更命名格式
内容的提问来源于stack exchange,提问作者m.delloso
相关产品推荐
相关产品推荐

