gpt4 book ai didi

elasticsearch - 如何按其他索引/类型的汇总排序

转载 作者:行者123 更新时间:2023-12-02 22:17:56 24 4
gpt4 key购买 nike

我有一个网上商店,需要按汇总销售数据进行排序。产品示例文件:

{
"id": 123,
"title": "foo product",
"picture": "https://i.picsum.photos/id/959/200/300.jpghttps://i.picsum.photos/id/959/200/300.jpg"
}
销售示例文件:
{
"product_id": 123,
"date": "2020-01-01",
"sales": 5
},
{
"product_id": 123,
"date": "2020-01-02",
"sales": 6
},
{
"product_id": 123,
"date": "2020-01-03",
"sales": 2
},
{
"product_id": 123,
"date": "2020-01-05",
"sales": 88
}
请注意,没有销售的日子不在 sales索引/类型中。
现在:
  • 我需要过滤所有在用户定义的时间段内销售额大于/小于X的产品(甚至能够过滤销售额= 0)
  • 我需要根据该时间段内的销售额对asc / desc进行排序(升序也意味着它应该从没有销售额的产品开始)。
  • 在该结果中,我还需要匹配的产品文档
  • 我还应该能够对产品索引
  • 中的其他字段进行排序

    我该怎么做?我的背景来自Solr,为此我将使用流表达式。
    更新
    我将为此悬赏。我发现可以通过使用 Aggregations并将其嵌套来实现。
    如果对此我的数据结构必须不同,请描述。提前致谢!

    最佳答案

    在 flex 搜索中不可能将两个索引连接在一起。
    有两种选择:

  • Join type-但这是not rdbms way
  • 您可以使用产品集合中sales查询的结果筛选query索引和sales,以获取产品详细信息。

  • 要对缺失值进行排序,应使用 missing参数。
    Refer
    要获得范围,应使用 3to10, more than 30 [范围聚合](聚合范围查询elasticsearch)
    GET /_search
    {
    "aggs" : {
    "sale_ranges" : {
    "range" : {
    "field" : "sales",
    "ranges" : [
    { "to" : 10 },
    { "from" : 10, "to" : 20 },
    { "from" : 20 }
    ]
    }
    }
    }
    }
    没有销售就无法轻易获得产品。为了做到这一点,
  • 您需要从产品表
  • 中获取所有产品
  • 您需要在上述步骤的帮助下从销售表中获取缺少的产品。
  • 关于elasticsearch - 如何按其他索引/类型的汇总排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62589328/

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