我试图学习使用Elastica连接并查找难以获取的信息以了解如何查询它的ElasticSearch。

因此,基本上我想做的是,我已将数据插入 Elasticsearch ,并在其中添加了地理坐标,现在我需要做的是能够运行查询,以对我得到的结果进行最接近的排序。

我想找到我所在州的所有商店,然后按最接近当前位置的顺序对其进行排序。

所以给定一个名为“状态”的字段和一个名为“点”的字段,该字段是使用elastica持有long / Lat的数组,查询将是什么?

感谢您可以给我的任何帮助。

最佳答案

首先,您需要将您的位置字段map键入 geo_point (这需要在插入任何数据之前完成)

{
    "stores" : {
        "properties" : {
            "point" : {
                "type" : "geo_point"
            }
        }
    }
}

之后,您只需按 _geo_distance 对搜索进行排序
{
    "sort" : [
        {
            "_geo_distance" : {
                "stores.point" : [-70, 40], // <- reference starting position
                "order" : "asc",
                "unit" : "km"
            }
        }
    ],
    "query" : {
        "match_all" : {}
    }
}

对于Elastica,请查看有关mappingquery building的文档,并阅读单元测试。

关于elasticsearch - 使用Elastica根据位置对结果进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12547626/

10-11 08:53