【问题标题】:Searchkick (Elasticsearch) histogram with aggregations - extending bounds具有聚合的 Searchkick (Elasticsearch) 直方图 - 扩展范围
【发布时间】:2020-12-20 19:02:15
【问题描述】:

我在 Rails 应用程序中使用 searchkick gem 来访问 Elasticsearch 数据。我使用聚合功能来显示价格直方图; body_options 的相关部分如下所示:

            price: {
                histogram: {
                    field: :low_rate,
                    interval: 50
                }
            }

我遇到的问题是我还需要能够在低速率上提供过滤器。因此,例如,如果我最初有一个价格范围在 50 美元到 500 美元之间的直方图,并且我添加到下一个查询 where low_rate < 300,则重新计算直方图存储桶并完全重新绘制图表。但在我的应用中,我需要图表仍然显示相同的存储桶。

这是过滤器上非常常见的行为——请参阅下面来自 Airbnb 网站的示例,该示例显示了上限被拉低后的图表——所以我希望有人能够提供一些关于如何操作的建议使用 searchkick 来实现这一点。

【问题讨论】:

    标签: ruby-on-rails elasticsearch searchkick


    【解决方案1】:

    如果有帮助,我可以帮助您处理 E.S Query。

    {
      "size": 0, 
      "aggs": {
        "hist": {
          "histogram": {
            "field": "low_rate",
            "interval": 50,
            "extended_bounds": { // <======= It is used to extend bounds
              "min": 50,      // <========== Specify the min bound
              "max": 500      // <========== Specify the max bound
            },
              "missing":10    // <========== value of the missing docs in the range
          }
        }
      }
    }
    

    【讨论】:

    • 谢谢。它让我参与其中,因为桶现在扩展到整个可能值范围。但是,所选范围之外的存储桶显示为空,我仍然需要其中的计数来显示直方图。例如,如果用户将最小滑块拖动到 100,并且查询的 low_rate > 100,则所有后续存储桶(start_price 100、150、200 等)显示计数为 0。
    • 您是否希望查询结果介于所选范围和带有扩展桶的直方图之间?在 airbnb 上,价格直方图有 2 个方面,(1) 直方图的数量和 (2) 选择直方图中的范围以创建对实际数据的查询如果它对您有任何帮助,请点赞。
    • 是的,我希望查询结果在所选范围之间。但我希望直方图继续显示存储桶及其计数,而不考虑对 low_rate 的查询。那有意义吗?也许在 Elasticsearch 中甚至不可能?再次感谢。
    • @alpheus:您可以加载一次直方图,然后根据用户选择的范围查询可以执行。我看这是可行的。换句话说,解耦直方图填充和查询执行部分。
    猜你喜欢
    • 2017-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-28
    • 2018-04-09
    • 1970-01-01
    • 1970-01-01
    • 2016-04-13
    相关资源
    最近更新 更多