gpt4 book ai didi

elasticsearch - Elasticsearch:如何通过属性中的项目数来计算文档数?

转载 作者:行者123 更新时间:2023-12-02 23:17:09 25 4
gpt4 key购买 nike

假设我有一个看起来像这样的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()"
}
}
}
}

最佳答案

您可以这样做:

{
"size": 0,
"aggs": {
"length": {
"terms": {
"script": {
"source": "params._source.vendors.length",
"lang": "painless"
}
}
}
}
}

关于elasticsearch - Elasticsearch:如何通过属性中的项目数来计算文档数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53394455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com