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 弹性数据,我为每个实体创建了一个存储库,我不太清楚应该以什么顺序保存三个实体,以便将它们保存在同一个弹性文档中:

这是使用存储库的正确顺序吗:

  1. 创建并保存类别
  2. 创建并保存产品类别列表
  3. 通过评论更新产品

只有顶级 class - Category - 必须具有 @Document 注释。

广告 1) 然后保存包含所有产品的类别对象,这些对象包含所有评论。

ad 2) 产品没有类别列表,它只有一个。或者你必须将它添加到不同的类别对象中,然后你将不得不在每个类别中多次冗余存储它

ad 3) 找到包含产品的类别对象,更新包含的产品,然后保存类别对象

Elasticsearch 不是关系数据库系统,因此它可能不是存储数据的最佳解决方案。