Elasticsearch Geospatial给我夸大的距离测量

时间:2015-06-05 14:28:20

标签: elasticsearch

问题:

我正在使用Elasticsearch为我网站上的某些商家信息编制索引,并且我一直在夸大其间。即使我使用相同的坐标搜索我的文档,我仍然可以获得超过3000公里的距离。

发表:

    [{
        "expiryDate": "2014-04-11 02:32:16",
        "geo": {
          "lon": 45.297,
          "lat": 75.0755
        },
        "id": "5571afb7ae2c287f4d54b713",
        "images": [],
        "imagesLinks": [],

    }]

映射:

   {
    "listingsell" : {
        "properties" : {
            "geo" : {
              "type" : "geo_point",
              "fielddata" : {
                    "format" : "compressed",
                    "precision" : "1m"
                }  
             }
        } 
    }
}

查询:

       {

    "query": {
        "filtered" : {
            "query" : {
                "match_all" : {}
            },
            "filter" : {
                "geo_distance" : {
                    "distance" : "90000mi",
                    "geo" : {
                        "lat" : 45.1339,
                        "lon" : 75.019
                    }
                }
            }
        }
    },
    "sort" : [
      {
          "_geo_distance" : {
              "geo" : {
                    "lat" : 45.1339,
                    "lon" : 75.019
              }, 
              "order" : "asc",
              "unit" : "mi"
          }
      }
  ],
}

结果:

  {
"sort":[2247.4929]
   }

1 个答案:

答案 0 :(得分:0)

您的geo_point索引方式错误:

       "geo": {
          "lon": 45.297,
          "lat": 75.0755
        }

或排序是以错误的方式完成的:

              "geo" : {
                    "lat" : 45.1339,
                    "lon" : 75.019
              }

意味着您将latlon混为一谈。