7

我正在使用 Spring Data ElasticSearch 来执行 CRUD 操作。默认情况下,当使用 @Document 注释的 POJO 写入 ElasticSearch 索引时,索引字段名称与 POJO 的 Java 属性名称相同。如何将索引字段名称配置为不同?例如,使用此文档 POJO:

@Document(indexName = "areas", type = "area")
public class Area {

    @Id
    private String id;
    private String countyName;
    private String postOfficeName;
    private String stateName;

如何配置它,以便 ElasticSearch 中的索引字段被序列化为county_name 而不是countyName?

4

2 回答 2

1

由于 Spring-data-elasticsearch 使用 fasterxml 模块将 POJO 转换为 json 文档,您可以简单地使用,

@JsonProperty("country_name")
private String countryName

在elasticsearch索引中实现不同的字段名。

于 2017-01-09T06:38:40.207 回答
-2

我认为你必须使用@Field注释的属性,我几乎可以肯定这一点。请看这里

从文档:

@Field:应用于字段级别并定义字段的属性,大部分属性映射到各自的 Elasticsearch Mapping 定义(以下列表不完整,请查看注释 Javadoc 以获得完整参考):

name:将在 Elasticsearch 文档中表示的字段名称,如果未设置,则使用 Java 字段名称。

type:字段类型,可以是Text、Keyword、Long、Integer、Short、Byte、Double、Float、Half_Float、Scaled_Float、Date、Date_Nanos、Boolean、Binary、Integer_Range、Float_Range、Long_Range、Double_Range、Date_Range、Ip_Range之一对象、嵌套、IP、TokenCount、渗透器、扁平化、Search_As_You_Type。请参阅 Elasticsearch 映射类型

Date 类型的格式和模式定义。必须为日期类型定义格式。

store:标记原始字段值是否应存储在 Elasticsearch 中,默认值为 false。

分析器、搜索分析器、规范器,用于指定自定义自定义分析器和规范器。

于 2015-06-30T10:47:46.570 回答