Spring认证中国教育管理中心-Spring Data Elasticsearch教程二

本文是Spring Data Elasticsearch教程的第二部分,主要讲解了映射规则,包括类型提示、禁用类型提示和地理空间类型。此外,还介绍了自定义转化以及Elasticsearch的操作,如ElasticsearchTemplate和反应式ElasticsearchOperations的使用。

原标题:Spring认证中国教育管理中心-Spring Data Elasticsearch教程二(Spring中国教育管理中心)

Spring Data Elasticsearch教程二

6.1.2.映射规则

类型提示

映射使用嵌入在发送到服务器的文档中的类型提示来允许泛型类型映射。这些类型提示_class在文档中表示为属性,并为每个聚合根写入。

示例 56. 类型提示

public class Person {              

  @Id String id;
  String firstname;
  String lastname;
}
{
  "_class" : "com.example.Person", 
  "id" : "cb7bef",
  "firstname" : "Sarah",
  "lastname" : "Connor"
}

默认情况下,域类型类名用于类型提示。

类型提示可以配置为保存自定义信息。使用@TypeAlias注释来执行此操作。

确保@TypeAlias在初始实体集 (
AbstractElasticsearchConfiguration#getInitialEntitySet) 中添加类型,以便在首次从存储中读取数据时已经拥有可用的实体信息。

示例 57. 带别名的类型提示

@TypeAlias("human")                
public class Person {

  @Id String id;
  // ...
}
{
  "_class" : "human",              
  "id" : ...
}

写入实体时使用配置的别名。

除非属性类型是Object、接口或实际值类型与属性声明不匹配,否则不会为嵌套对象编写类型提示。

禁用类型提示

当应该使用的索引已经存在而没有在其映射中定义类型提示并且映射模式设置为严格时,可能需要禁用类型提示的写入。在这种情况下,写入类型提示会产生错误,因为该字段无法自动添加。

通过覆盖writeTypeHints()派生自的配置类中的方法,可以为整个应用程序禁用类型提示
AbstractElasticsearchConfiguration(请参阅Elasticsearch 客户端)。

作为替代方案,可以使用@Document注释为单个索引禁用它们:

@Document(indexName = "index", writeTypeHint = WriteTypeHint.FALSE)

我们强烈建议不要禁用类型提示。只有在被迫时才这样做。禁用类型提示可能会导致无法从 Elasticsearch 正确检索文档,以防多态数据或文档检索可能完全失败。

地理空间类型

像Point&这样的地理空间类型GeoPoint被转换为纬度/经度对。

示例 58. 地理空间类型

public class Address {

  String city, street;
  Point location;
}
{
  "city" : "Los Angeles",
  "street" : "2800 East Observatory Road",
  "location" : { "lat" : 34.118347, "lon" : -118.3026284 }
}

GeoJson 类型

Spring Data Elasticsearch 通过为GeoJson不同几何提供接口和实现来支持 GeoJson 类型。它们根据 GeoJson 规范映射到 Elasticsearch 文档。实体的相应属性在索引映射中指定,就像geo_shape编写索引映射时一样。(也请查看Elasticsearch 文档)

示例 59. GeoJson 类型

public class Address {

  String city, street;
  GeoJsonPoint location;
}
{
  "city": "Los Angeles",
  "street": "2800 East Observatory Road",
  "location": {
    "type": "Point",
    "coordinates": [-118.3026284, 34.118347]
  }
}

实现了以下 GeoJson 类型:

  • GeoJsonPoint
  • GeoJsonMulti
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值