我想映射以下结构: - 我有博文 - 博客帖子可以有评论 - 注释可以有回复(也是注释),因此它应该是递归数据结构
POST ----- * - > COMMENT
评论----- * ---> COMMENT
这是我试过的:
n' ^ (1/p) = n
当然它不起作用。我怎样才能做到这一点?
答案 0 :(得分:1)
您试图像在OO编程中那样声明类型,而不是它在ES中的工作方式。您需要使用下面的parent-child relationships,即post
没有名为comments
的字段,但comment
映射类型具有_parent
元字段引用post
父类型。
另外,为了对回复进行建模,我建议只使用另一个名为in_reply_to
的字段,该字段将包含回复所涉及的注释的ID。那样容易多了!
PUT blogs
{
"mappings": {
"post": {
"properties": {
"title": { "type": "string"}
}
},
"comment": {
"_parent": {
"type": "post"
},
"properties": {
"id": {
"type": "long"
}
"content": {
"type": "string"
},
"in_reply_to": {
"type": "long"
}
}
}
}
}
答案 1 :(得分:0)
mappings: {
"post": {
"properties": {
"content": { "type": "string" },
"comment": {
"properties" : {
"content": { "type": "string" },
"replies": {
"properties" : {
"content": { "type": "string" }
}
}
}
}
}