gpt4 book ai didi

elasticsearch - 根据ObjectField的属性进行聚合,然后对嵌套字段进行排序

转载 作者:行者123 更新时间:2023-12-03 01:29:29 25 4
gpt4 key购买 nike

假设我有这样的文件-

{
"_id": 1,
"threat": {
"application_number": 1234,
}
"score_algorithms": [
{
"score": 21,
},
{
"score": 93,
}
],
"max_similarity": 93,
}

{
"_id": 2,
"threat": {
"application_number": 1348,
}
"score_algorithms": [
{
"score": 45,
},
{
"score": 67,
}
],
"max_similarity": 67,
}

{
"_id": 3,
"threat": {
"application_number": 1234,
}
"score_algorithms": [
{
"score": 98,
},
{
"score": 51,
}
],
"max_similarity": 98,
}

现在的议程是-
  • 根据最大相似性属性max_similarity
  • 对这些文档进行排序
  • 然后,根据threat.application_number聚合文档
  • 例如,要显示的第一个结果应包含threat.application_number为1234(最大值为max_similarity)的所有文档的分组。第二个条目是threat.application_number为1348等所有文档的分组。
  • 所有文档在内部应具有排序的score_algorithms值。
  • 最佳答案

    对于需求1.和2.,即,对文档进行分组和排序,您可以在聚合定义中使用 order 参数。

    要在聚合中检索score_algorithms字段,请使用 top_hits 子聚合。

    您将最多只能检索size聚合的top_hits参数的文档。如果单个application_number包含大量文档,则速度可能很慢。

    {
    "size": 0,
    "aggs" : {
    "applications" : {
    "terms" : {
    "field" : "threat.application_number",
    "order": [{"stats.max": "desc"}]
    },
    "aggs" : {
    "stats" : { "stats" : { "field" : "max_similarity" } },
    "applications_fields": {
    "top_hits": {
    "sort": [
    {
    "max_similarity": {
    "order": "desc"
    }
    }
    ],
    "_source": {
    "includes": [ "score_algorithms", "max_similarity" ]
    },
    "size" : 100
    }
    }
    }
    }

    }
    }

    关于elasticsearch - 根据ObjectField的属性进行聚合,然后对嵌套字段进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56752697/

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