我们对如何存储以下数据以便以后轻松检索它感到困惑。我们将有以下形式的一百万条记录:
{
"width" : 720
"height" : 200
"coords" : [{
"el" : "xyz",
"x-y" : "100-50"
},
{
"el" : "abc",
"x-y" : "200-150"
}]
},
{
"width" : 1280
"height" : 1000
"coords" : [{
"el" : "lmn",
"x-y" : "400-50"
},
{
"el" : "abc",
"x-y" : "500-250"
}]
}
我们需要运行哪种类型的聚合查询才能以下列形式获取数据?截至目前,我只能搜索返回唯一值及其各自计数(即出现次数)的查询。
{
"el" : "xyz",
"x-y" : ["100-50"]
},
{
"el" : "abc",
"x-y" : ["200-150","500-250"]
},
{
"el" : "lmn",
"x-y" : ["400-50"]
}
我们已经创建了一个映射,其中“coords”的类型为nested
。
由于我们仍处于开发阶段,我们仍然可以更改映射以获得更好的性能和结果。
答案 0 :(得分:0)
如果你有大数据并需要聚合嵌套对象(如coords),我建议你压扁你和x-y。您可以在映射中添加聚合字符串;
{
"width" : 1280
"height" : 1000
"coords" : [{
"el" : "lmn",
"x-y" : "400-50"
},
{
"el" : "abc",
"x-y" : "500-250"
}]
"coords-foraggregation" : "lmn,400-500;abc,500-200;nnn,xxx..."
}
你可以为" coords-foraggregation"添加分析器。映射模型中的字段。(https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-custom-analyzer.html)这种方式可能比聚合coords.el和coords.x-y更快......