Spring 文档之间的数据弹性嵌套关系
Spring data elastic nested relation between document
我有一个简单的 springboot 应用程序,其中包含三个具有一对多关系的实体,我想使用 elasticsearch 将它们保存为文档,阅读文档我选择嵌套对象映射,这是我的实体:
Category --*> product --*> reviews
@Data
@Builder
@Document(indexName = "product-store")
public class Category {
private UUID id ;
private String name ;
private String description ;
@Field(type = FieldType.Nested, includeInParent = true)
private List<Product> products ;
}
@Data
@Builder
@ToString
@Document(indexName = "product-store")
public class Product {
@Id
private UUID id ;
private String name ;
private String description ;
private String ImageUrl ;
private Double price;
@Field(type = FieldType.Nested, includeInParent = true)
private List<ProductExperience> productExperience ;
}
@Data
@Builder
@Document(indexName = "product-store")
public class ProductExperience {
@Id
private UUID id ;
private String reviewTitle;
private String reviewBody;
private int rate ;
}
我正在使用 spring 弹性数据,我为每个实体创建了一个存储库,我不太清楚应该以什么顺序保存三个实体,以便将它们保存在同一个弹性文档中:
这是使用存储库的正确顺序吗:
- 创建并保存类别
- 创建并保存产品类别列表
- 通过评论更新产品
只有顶级 class - Category
- 必须具有 @Document
注释。
广告 1) 然后保存包含所有产品的类别对象,这些对象包含所有评论。
ad 2) 产品没有类别列表,它只有一个。或者你必须将它添加到不同的类别对象中,然后你将不得不在每个类别中多次冗余存储它
ad 3) 找到包含产品的类别对象,更新包含的产品,然后保存类别对象
Elasticsearch 不是关系数据库系统,因此它可能不是存储数据的最佳解决方案。
我有一个简单的 springboot 应用程序,其中包含三个具有一对多关系的实体,我想使用 elasticsearch 将它们保存为文档,阅读文档我选择嵌套对象映射,这是我的实体:
Category --*> product --*> reviews
@Data
@Builder
@Document(indexName = "product-store")
public class Category {
private UUID id ;
private String name ;
private String description ;
@Field(type = FieldType.Nested, includeInParent = true)
private List<Product> products ;
}
@Data
@Builder
@ToString
@Document(indexName = "product-store")
public class Product {
@Id
private UUID id ;
private String name ;
private String description ;
private String ImageUrl ;
private Double price;
@Field(type = FieldType.Nested, includeInParent = true)
private List<ProductExperience> productExperience ;
}
@Data
@Builder
@Document(indexName = "product-store")
public class ProductExperience {
@Id
private UUID id ;
private String reviewTitle;
private String reviewBody;
private int rate ;
}
我正在使用 spring 弹性数据,我为每个实体创建了一个存储库,我不太清楚应该以什么顺序保存三个实体,以便将它们保存在同一个弹性文档中:
这是使用存储库的正确顺序吗:
- 创建并保存类别
- 创建并保存产品类别列表
- 通过评论更新产品
只有顶级 class - Category
- 必须具有 @Document
注释。
广告 1) 然后保存包含所有产品的类别对象,这些对象包含所有评论。
ad 2) 产品没有类别列表,它只有一个。或者你必须将它添加到不同的类别对象中,然后你将不得不在每个类别中多次冗余存储它
ad 3) 找到包含产品的类别对象,更新包含的产品,然后保存类别对象
Elasticsearch 不是关系数据库系统,因此它可能不是存储数据的最佳解决方案。