假设我有一个看起来像这样的Elasticsearch文档
{
"_index": "sample.index",
"_type": "inventory",
"_id": "ebcc7f5c-1697-438f-911f-b8e9ff5554e9",
"_score": 1,
"_source": {
"name": "salt",
"properties": {
"vendors": ["vendor 1", "vendor 2"]
}
}
},
{
"_index": "sample.index",
"_type": "inventory",
"_id": "f5875c5c-9bf1-448b-99d9-47d873d4f016",
"_score": 1,
"_source": {
"name": "pepper",
"properties": {
"vendors": ["vendor 1"]
}
}
}
我想做的是获取来自一个供应商,两个供应商等的项目计数。基本上,这是一个基于供应商数组长度的查询。
这是我要获取的输出类型,或类似的内容。
{
"aggregations": {
"vendor_counts": {
"buckets": [
{
"vendor_array_length": "1",
"doc_count": 1
},
{
"vendor_array_length": "2",
"doc_count": 1
}
]
}
}
}
在此先感谢您的帮助:)
编辑:以下接受的答案似乎适用于ES的较新版本,但是我必须使用较旧的版本(最初发布此问题后,我发现了这一点)。以下查询在ES 2.4上对我有效。
{
"size": 0,
"aggs": {
"length": {
"terms": {
"script": "_source.vendors.size()"
}
}
}
}
答案 0 :(得分:1)
您可以这样做:
User variables