在ElasticSearch中以最接近最远的位置获取所有注释,反之亦然

问题描述 投票:0回答:1

我在Laravel中有一个应用程序,数据存储在ElasticSearch中。我想在应用程序中添加两个选项

1-显示最近它将用于获取从(用户的)最近位置到最远位置的所有注释,并按位置排序。示例一位用户评论了巴基斯坦,另外2个人评论了印度和美国。因此,当我单击“显示最近”时,巴基斯坦用户评论将排在首位,然后印度评论第二个数字,美国评论第三个数字(如果我的位置是巴基斯坦)。

2-Show festest它将用于获取从(用户)最远位置到最近位置的所有评论,并按位置排序示例假设上面给出了示例,那么,当我单击“显示最远”时,美国评论将排在第一位,然后印度对第二个数字进行评论,巴基斯坦对第三个数字进行评论(如果我的位置是巴基斯坦)。

此搜索将基于存储在ElasticSearch中的每个评论的纬度经度。

文件如下:

post_id(type:text),text(type:text)位置(纬度数组),例如location:[-71.34,41.12]

database laravel elasticsearch geolocation latitude-longitude
1个回答
1
投票

您可以通过geo_distance排序来完成。请确保您要根据地理距离对注释进行排序的字段是geo_point。

销钉是您所处的位置,将基于该位置来计算其他位置的距离

这里是一个例子

GET /_search
{
    "sort" : [
        {
            "_geo_distance" : {
                "pin.location" : {
                    "lat" : 40,
                    "lon" : -70
                },
                "order" : "asc",
                "unit" : "km"
            }
        }
    ],
    "query" : {
        "term" : { "user" : "kimchy" }
    }
}

有关此内容的更多详细信息,以及如果您想使用更多设置进行播放,这是一个链接:https://www.elastic.co/guide/en/elasticsearch/reference/7.3/search-request-body.html#geo-sorting

© www.soinside.com 2019 - 2024. All rights reserved.