我在elasticsearch中有一个嵌套的文档,如下所示:
{
{
"doctxt": "doca",
"nested": [
{
"pos": 1,
"txt": "terma"
},
{
"pos": 2,
"txt": "termb"
},
{
"pos": 3,
"txt": "termc"
}
]
},
{
"doctxt": "docb",
"nested": [
{
"pos": 1,
"txt": "termd"
},
{
"pos": 2,
"txt": "terma"
},
{
"pos": 3,
"txt": "termb"
}
]
}
}可以工作的聚合查询:
特定术语的总计数(match_all查询,术语txt聚合),结果:
terma: 2
termb: 2
termc: 1
termd: 1特定术语的txt字段上的方面(筛选术语txt,聚合术语txt),结果:
terma: termb (2), termc (1), termd (1)
termb: terma (2), termc (1), termd (1)
termc: terma (1), termb (1)
termd: terma (1), termb (1)对于这个文档,我不能做的是:
特定术语的平均位置(我最终获得整个嵌套位置的平均值,在本例中,任何术语的平均值始终为2),预期结果:
terma: 1.5
termb: 2.5
termc: 3
termd: 1特定项的直方图(不起作用的原因与上述相同),预期结果:
terma: pos 1 (1), pos 2 (1)
termb: pos 2 (1), pos 3 (1)
termc: pos 3 (1)
termd: pos 1 (1)如果我有平面文档(doca-1-terma、doca-2-termb、doca-3-termc、docb-1-termd,...)我得到了预期的结果。这是聚合嵌套文档的限制吗?我应该以平面格式和当前嵌套格式将数据存储两次吗?
发布于 2014-07-21 15:46:19
不不是这样的。您可以使用nested types实现所需的功能。嵌套类型将使您的嵌套数据单独处理,并获得预期的结果。
试试这个要点:https://gist.github.com/vaidik/051a197654fe4b0ecc80
还有read this article about relationships。我认为你可以用Parent/ think文档来实现同样的效果,但我并没有太多地使用它们。
https://stackoverflow.com/questions/24631409
复制相似问题