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

标签 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"
        },
    ]
}

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

预先感谢!

最佳答案

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

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

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

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

祝好运 !

关于sorting - Elasticsearch 5:按最近批发商的价格排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56440578/

相关文章:

git - 对在 git 中创建嵌套分支感到困惑

java - 如何在外部类构造函数中创建内部类的实例

javascript - 我的嵌套数组不会在 javascript 中打印

python - 选择排序算法Python

python - 将文件中的列从高到低排序

java - 返回带有对象列表的 ResponseEntity

json - Elasticsearch:如何动态存储所有json对象

php - 从 php 数组中删除重复项(不是 array_unique)

java - 双枢轴快速排序

amazon-web-services - 通过堡垒主机将 ssh 端口转发到 VPC 中的 Elasticsearch 集群无法正常工作