首页 > 解决方案 > Elasticsearch 5:按最近批发商的价格排序

问题描述

我有一个产品嵌套文档,其中包含与不同批发商相关的价格列表。这是一个文档示例:

{
    "sku": "065879",
    "name": "My product",
    "price": [
        {
            "wholesaler": "1",
            "location": "drm3btev3",
            "price": "12.34"
        },
        {
            "wholesaler": "2",
            "location": "gbsuv7ztq",
            "price": "45.67"
        },
    ]
}

给定客户的地理位置,获取按价格排序的文档列表的正确查询是什么,仅使用每个文档的最接近价格?

提前感谢!

标签: sortingelasticsearchnestedelasticsearch-5geopoints

解决方案


这不是一个真正的答案,但全局方法是使用嵌套排序。嵌套排序将允许您过滤要对其应用排序的嵌套文档。

然后,您应该在嵌套排序过滤器中添加一个脚本查询,以确定最近的批发商。问题是你不能无痛地使用 geohash。但是,如果您将 geohash 转换为 geopoint 数据类型,您将能够使用脚本距离功能(例如此处

然后,您可以通过迭代所有嵌套文档来计算最小距离,并且只匹配具有最小距离的那个。

但我不知道性能影响和详细实现。

祝你好运 !


推荐阅读