关于Elasticsearch字段名与Java实体类不一致的问题

若Elasticsearch字段名与Java实体类属性名不一致,

则查询到的数据全部为Null,

这时我们只需要在Java实体类对应的属性名上与ElasticSearch的字段名进行映射即可,

使用 @Field( name = "XXX" ) 就可以 与 ElasticSearch 的字段名进行映射了




关于Elasticsearch字段名与Java实体类不一致的问题
一些常用的注解:

@Document注解使用

  • @Document注解作用在类上,标记实体类为文档对象,常用属性如下:

    (1)indexName:对应索引库名称;

    (2)type:对应在索引库中的类型;

    (3)shards:分片数

    (4)replicas:副本数;



@Field注解使用

  • @Field作用在成员变量,标记为文档的字段,并制定映射属性;

    (1)@Id:作用在成员变量,标记一个字段为id主键;一般id字段或是域不需要存储也不需要分词;

    (2)type:字段的类型,取值是枚举,FieldType;

    (3)index:是否索引,布尔值类型,默认是true;

    (4)store:是否存储,布尔值类型,默认值是false;

    (5)analyzer:分词器名称

    (6)name : 与Elasticsearch 中的字段名映射