我的 ElasticSearch 索引中有以下映射(简化为其他字段不相关:
{
"test": {
"mappings": {
"properties": {
"name": {
"type": "keyword"
},
"entities": {
"type": "nested",
"properties": {
"text_property": {
"type": "text"
},
"float_property": {
"type": "float"
}
}
}
}
}
}
}
数据看起来像这样(再次简化):
[
{
"name": "a",
"entities": [
{
"text_property": "foo",
"float_property": 0.2
},
{
"text_property": "bar",
"float_property": 0.4
},
{
"text_property": "baz",
"float_property": 0.6
}
]
},
{
"name": "b",
"entities": [
{
"text_property": "foo",
"float_property": 0.9
}
]
},
{
"name": "c",
"entities": [
{
"text_property": "foo",
"float_property": 0.2
},
{
"text_property": "bar",
"float_property": 0.9
}
]
}
]
float_property
我正在尝试对每个文档的最大值执行存储桶聚合。因此,对于上面的示例,以下将是所需的响应:
...
{
"buckets": [
{
"key": "0.9",
"doc_count": 2
},
{
"key": "0.6",
"doc_count": 1
}
]
}
因为 doca
的最高嵌套值为float_property
0.6,b
's 是 0.9,c
's 是 0.9。
我试过混合使用nested
and 和aggs
,runtime_mappings
但我不确定使用这些的顺序,或者这是否可能。