Spring Elastic Search 自定义字段名称

12

我是Elastic Search的新手,正在尝试使用Spring-data-elasticsearch实现它。

在我们的Elastic Search文档中,有一些字段名称,例如“Transportation”、“Telephone_Number”等。

当我尝试将@Domain对象字段与这些字段映射时,我无法得到任何这些字段的数据,因为我无法成功映射这些字段。

尝试使用@Field时,很失望,因为它没有“name”属性来映射自定义字段名称。

尝试使用不同变体的GETTER函数,但似乎都无法映射到那些字段。

我开始想知道是否有什么东西我错过了。 应该如何看待一个领域对象字段,以便映射到类似“Transportation”这样的字段?

非常感谢任何帮助。

1个回答

17

您可以使用自定义名称。Spring Data ES使用Jackson,因此您可以使用@JsonProperty("your_custom_name")在ES映射中启用自定义名称。

例如:

@Document(indexName = "your_index_name", type = "your_type_name")
public class YourEntity {
   ....
   @JsonProperty("my_transportation")
   @Field(type = FieldType.String, searchAnalyzer = "standard", indexAnalyzer = "standard", store = true) // just for example
   private String myTransportation;
   ....
}

注意:无论如何,我很抱歉,我的英语不好.. :D


在保存时使用 @JsonProperty 可以正常工作,但在查询中无法工作。无法为带有下划线的实体字段生成自定义查询 - free斩
3
只要在POJO中,"@JsonProperty"的值与字段名称不同,"Repository"查询就无法正常工作... :/ - insan-e
@insan-e 如果Json名称中有下划线,我该怎么办? - Amin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接