是否可以让Elastic Search根据不同的文档字段返回聚合键?
我们将外部id和外来名称都放在我们的类型中,然后聚合id,但是想要返回名称.名称不是唯一的,因此它们不适合聚合.我知道它们在记录集上也不一定是唯一的,但是它会接受从集合中的单个记录中采样的名称.
例如,假设我们的数据与产品的销售有关.每次销售都有与之关联的产品ID和产品名称.
// Sales
{ "product_id": 1, "product_name": "Beer", "quantity": 3, … }
{ "product_id": 1, "product_name": "Beer", "quantity": 2, … }
{ "product_id": 2, "product_name": "Wine", "quantity": 6, … }
Run Code Online (Sandbox Code Playgroud)
查询:
"aggregations": {
"product": {
"terms": {
"field": "product_id"
},
"aggregations": {
"day": {
"count": {
"value_count": {
"field": "quantity"
}
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
结果:
…
"aggregations": {
"product": {
"buckets": [
{
"key": "1",
"doc_count": 2,
"count": {
"value": 5
}
},{
"key": "2",
"doc_count": 1,
"count": {
"value": 6
}
]
}
}
…
Run Code Online (Sandbox Code Playgroud)
通缉结果:
…
"aggregations": {
"product": {
"buckets": [
{
"key": "Beer",
"doc_count": 2,
"count": {
"value": 5
}
},{
"key": "Wine",
"doc_count": 1,
"count": {
"value": 6
}
]
}
}
…
Run Code Online (Sandbox Code Playgroud)
在阅读了关于脚本的文档之后,我认为这不可行,因为它仅对值进行评估,并且似乎无法访问整个文档(因为没有文档,而是一组文档).
如果您仅使用 script 属性,则可以使用脚本来完成此操作(这样就可以访问整个文档)。然后将其拆分到您的客户端:例如
"aggs": {
"types_of": {
"terms": {
"script": "doc['product_name'].value + '|' + doc['product_id'].value"
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6552 次 |
| 最近记录: |