SpringBoot集成elasticsearch支持自动@Field别名存储问题
1、问题描述
Java代码属性字段多使用驼峰命名法,而mysql、elasticsearch等数据存储系统中字段多采用下划线命名法。mysql使用tk.mybatis+@Column注解即可轻松实现Java对象持久化存储字段映射,本文主要解决在elasticsearch集成过程中遇到的问题及如何字段映射
2、集成版本列表
SpringCloud、SpringBoot、elasticsearch版本依赖度很高,这也是这次集成遇到的大问题,且elasticsearch在3.2以后版本才引入了@Field的name属性,因此将此次的集成版本列出如下:
项目 | 版本 |
---|---|
SpringCloud | Greenwich.SR2 |
SpringBoot | 2.1.2 |
elasticsearch | 3.2.3 |
3、启动yml文件配置
spring:
data:
elasticsearch:
repositories:
enabled: true
cluster-name: "es-bigdata"
cluster-nodes: xx.xx.xx.xx:9300,xx.xx.xx.xx:9300,xx.xx.xx.xx:9300
4、SpringBoot启动类上需要加注解
@EnableElasticsearchRepositories(basePackages = "com.xx.xx.xx.repository")
5、Java持久化对象定义
package com.xx.xx.xx.model.es;
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch