我的ElasticSearch索引有嵌套文档,用于指示与文档相关的各种事件发生的地点。我正在使用聚合来获取这些地点的特征。返回的计数是该地点发生次数的计数。例如,如果一个文档有加利福尼亚州的出生和死亡地点,则加利福尼亚州的聚合计数为2。我希望聚合计数是包含特定地点的文档数,而不是包含该地点的子文档数。我的模式的相关部分如下:
"mappings": {
"document": {
"properties": {
"docId" : { "type": "keyword" },
"place": {
"type": "nested",
"properties": {
"id": { "type": "keyword" },
"type": { "type": "keyword" },
"loc": { "type" : "geo_point" },
"text": {
"type": "text",
"analyzer": "english",
"copy_to" : "text"
}
},
"dynamic": false
}
}
}
}
我可以使用简单的聚合来获取分面,例如检索类型为place.vital.*(例如place.vital.birth、place.vital.death等)的位置,但计算的是嵌套文档的数量,而不是父文档的数量。
"aggs": {
"place.vital": {
"aggs": {
"types": {
"aggs": {
"values": {
"terms": {
"field": "place.id"
}
}
},
"terms": {
"field": "place.type",
"include": "place\\.vital\\..*"
}
}
},
"nested": {
"path": "place"
}
}
有没有可能调整我的聚合,使其仅计算每个父文档一次?