我试图学习使用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,请查看有关mapping和query building的文档,并阅读单元测试。
关于elasticsearch - 使用Elastica根据位置对结果进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12547626/