I am trying to store a tree in Elasticsearch. My tree can theoretically be infinitely long (although that is unlikely to happen) and can branch relatively often.
What is the best approach for storing this?
I looked into this question but its answer has limited performance when branching. Is there any way I can achieve proper nesting of documents, while still having the flexibility of branching, and the overall performance when reading a tree and its nodes?
I very much recommend storing trees in ES in a similar fashion as Mongodb suggests using Materialized paths
Just store every node in the tree as a document inside an index, if you have different kinds of nodes you can just create a type field and filter by that.
Store the path of the document in the tree as a comma delimited string like this:
path: ',root,books,fiction'
you can later use text search to search in subtrees
See the docs here for more details: https://docs.mongodb.com/manual/tutorial/model-tree-structures-with-materialized-paths/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With