Elasticsearch 5:按最近批发商的价格排序

时间:2019-06-04 08:57:38

标签: sorting elasticsearch nested elasticsearch-5 geopoints

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

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

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

预先感谢!

1 个答案:

答案 0 :(得分:0)

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

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

然后,您可以通过对所有嵌套文档进行迭代来计算最小距离,并且仅匹配最小距离的文档。

但是我对性能影响和详细实现一无所知。

祝你好运!