我有以下文档映射
{
properties: {
id: {
type: 'keyword'
},
rel: {
type: 'nested',
properties: {
type: {
type: 'keyword'
},
...
}
}
}
}
最后我想绘制一个x-y图表,其中x轴是t1类型的计数,y轴是t2类型的计数,因此对于以下文档
{ id: 1, rel: [ { type: t1, ... }, { type: t1, ... }, { type: t2, ... }] }
{ id: 2, rel: [ { type: t1, ... }, { type: t1, ... }] }
{ id: 3, rel: [ { type: t1, ... }, { type: t1, ... }] }
将映射到3(x,y)点(2,1),(2,0),(2,0),并且我将在x-y平面上绘制它们,就像这样
^
|
| 1
+---2-->
现在我使用以下聚合
{
"_source": false,
"aggregations": {
"g1": {
"terms": {
"field": "id",
"size": 10000
},
"aggregations": {
"rel": {
"nested": {
"path": "rel"
},
"aggregations": {
"filter-t1": {
"filter": {
"terms": {
"rel.type": [
"t1"
]
}
}
},
"filter-t2": {
"filter": {
"terms": {
"rel.type": [
"t2"
]
}
}
}
}
}
}
}
}
}
获得以下结果
{
"aggregations": {
"g1": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "1",
"doc_count": 1,
"rel": {
"doc_count": 4942,
"filter-t1": {
"doc_count": 6
},
"filter-t2": {
"doc_count": 20
}
}
},
{
"key": "2",
"doc_count": 1,
"rel": {
"doc_count": 3039,
"filter-t1": {
"doc_count": 6
},
"filter-t2": {
"doc_count": 11
}
}
}
...
并计算API层中每个坐标的文档数。
问题是总文档数量达到数百万个文档级别,查询请求中的所有文档都无法正常工作。我也没有找到在聚合中进行分页的方法,from
size
似乎只适用于_source。
有没有办法在弹性搜索中实现我想要的东西?