spring数据elasticsearch是否支持将内部对象保存为新文档

时间:2016-02-13 19:47:38

标签: java spring elasticsearch spring-data

@Document(indexName = "test", type = "author")
public class Author {
   private String authorId;
   private List<Book> books;
}

@Document(indexName = "test", type = "book")
public class Book {
   private String bookId;
}

当我保存作者时使用spring data elasticsearch我想将Book保存在不同的实体而不是子文档中。有可能吗?

1 个答案:

答案 0 :(得分:0)

是的,但您需要存储图书ID而不是图书实体。非关系数据存储不支持RDB等外键。

@Document(indexName = "test", type = "author")
public class Author {
   private String authorId;
   private List<String> bookIds;
}

此外,这本书并没有与作者一起编入索引。如果您尝试搜索“#34;作者写一本具有特定标题的图书&#34;”,那么您将受到性能损失,而如果您嵌套,ES将索引author.book.title。

Denormalizing your Data section of ES doc对此

有一个很好的解释