Spring Data Elasticsearch 4.1:实体如何声明含点的字段名?
解决Spring Data Elasticsearch 4.1映射带点扁平字段名的问题
你遇到的问题是因为Spring Data Elasticsearch会把@Field(value = "foo.bar")里的点解析成嵌套对象的路径(对应"foo": { "bar": "123" }这种结构),但你的实际字段是扁平的"foo.bar"字符串,所以得换个方式声明:
直接在字段上用@JsonProperty注解指定字面量的字段名,配合@Field配置字段类型(如果需要的话),示例代码:
@JsonProperty("foo.bar") @Field(type = FieldType.Keyword) // 按需调整字段类型,比如Text、Keyword等 private String fooBar;
原理是Spring Data Elasticsearch 4.x底层依赖Jackson做文档的序列化/反序列化,@JsonProperty会直接指定JSON输出的字段名,不会把点解析成嵌套路径,这样就能正确映射到你索引里的"foo.bar"字段了。
内容的提问来源于stack exchange,提问作者aslab0
相关产品推荐
相关产品推荐

