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

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

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

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

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




在这里插入图片描述
一些常用的注解:

@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 中的字段名映射

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
如果您想要创建一个与 Elasticsearch 中字典字段对应的实体类,可以按照以下步骤进行操作: 1. 定义实体类 在定义实体类时,需要定义与 Elasticsearch字段名称相同的属性,并使用 @Field 注解指定属性的类型和分词器等信息。例如,如果 Elasticsearch 中有一个字段名为 "city",它的类型为 "text",分词器为 "standard",那么对应的实体类应该定义如下: ``` @Document(indexName = "my_index") public class MyEntity { @Id private String id; @Field(type = FieldType.Text, analyzer = "standard") private String city; // getter 和 setter 略 } ``` 在这个实体类中,"@Document" 注解指定了该实体类对应的 Elasticsearch 索引名称,"@Id" 注解指定了该实体类的 ID 属性,"@Field" 注解指定了与 Elasticsearch 中 "city" 字段对应的属性。 2. 继承 ElasticsearchRepository 接下来,您需要创建一个继承自 ElasticsearchRepository 的接口,该接口定义了与 Elasticsearch 进行交互的方法。例如,如果您的实体类为 MyEntity,那么对应的 ElasticsearchRepository 接口应该定义如下: ``` public interface MyEntityRepository extends ElasticsearchRepository<MyEntity, String> { } ``` 在这个接口中,ElasticsearchRepository 提供了一些基本的 CRUD 方法,例如 save、delete、findById 等。您可以根据自己的需求添加其他方法。 3. 使用实体类和 ElasticsearchRepository 进行操作 最后,您可以通过实体类和 ElasticsearchRepository 进行 Elasticsearch 的操作。例如,如果您想要保存一个 MyEntity 对象到 Elasticsearch 中,可以像下面这样进行操作: ``` @Autowired private MyEntityRepository repository; public void saveMyEntity(MyEntity entity) { repository.save(entity); } ``` 其他操作也类似,只需要调用相应的 ElasticsearchRepository 方法即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值