我正在尝试在Elasticsearch中存储一棵树。理论上我的树可以无限长(尽管不太可能发生)并且可以相对频繁地分支。
存储此内容的最佳方法是什么?
我调查了this question但是它的答案在分支时的表现有限。有没有什么方法可以实现文档的正确嵌套,同时仍然具有分支的灵活性,以及读取树及其节点时的整体性能?
答案 0 :(得分:2)
我非常推荐以与Mongodb建议使用物化路径
类似的方式在ES中存储树只需将树中的每个节点存储为索引中的文档,如果您有不同类型的节点,则可以创建类型字段并按此过滤。
将文档的路径以逗号分隔的字符串存储在树中,如下所示:
路径:',root,books,fiction'
您以后可以使用文本搜索来搜索子树
有关详细信息,请参阅此处的文档: https://docs.mongodb.com/manual/tutorial/model-tree-structures-with-materialized-paths/