spring-data-elasticsearch 这个库刚开始出就开始用了,后来发现很多坑然后而且没法跟上 elasticsearch 的更新速度。后来我撸了个库(
https://github.com/javasec/javaweb-elasticsearch )解决高版本的 elasticsearch 无法使用 spring-data-elasticsearch 的问题。
你先在 elasticsearch 创建个 aliases 如 web-aliases,参考
https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-aliases.html在你的实体类上加这样的映射
@
Document(indexName = "web-aliases", type = "documents", indexStoreType = "memory", shards = 10, replicas = 0, refreshInterval = "-1")
还有,如果你的成员变量和 es 的字段不一致可用 fasterxml 的注解指定。
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
@
Field(type = FieldType.Nested)
@
JsonProperty("header_info")
private Map<String, Object> headerInfo;
@
Field(type = FieldType.Nested)
private Map<String, Object> location;
private Set<AppFeature> appFeatureList;
@
Field(type = Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss")
@
JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date ctime;
还有 id 的问题,如果你的 es 字段里 id 和_id 值不一样也没法映射。默认 id 和 documentId 的值都会被 Spring data 给强制设置为_id 。