【问题标题】:ElasticSearch returns items that are too far away when using a geo_distance filter使用 geo_distance 过滤器时,ElasticSearch 返回太远的项目
【发布时间】:2011-12-25 19:40:58
【问题描述】:

当我使用 nested filter -> and -> geo_distance 搜索我的 ElasticSearch 文档时,我检索到的文档太远了(我不想返回)。您可以看到 query 和下面的结果截图(原始结果左侧和右侧手动过滤的结果)。

这是查询的另一个副本:

{
   "query":{
      "match_all":{

      }
   },
   "filter":{
      "and":[
         {
            "term":{
               "PropertySubType":"Single Family"
            }
         },
         {
            "term":{
               "City":"Los Angeles"
            }
         },
         {
            "geo_distance":{
               "distance":"2.25miles",
               "Location":[
                  34.111583657,
                  -118.324646099
               ]
            }
         },
         {
            "range":{
               "BedroomsTotal":{
                  "gte":3
               }
            }
         },   
         {    
            "range":{
               "BuildingSize":{
                  "gte":3000
               }
            }
         },
         {    
            "range":{
               "YearBuilt":{
                  "lte":2000
               }
            }
         },
         {    
            "terms":{
               "ListingStatus":[
                  "Active",
                  "Pending",
                  "Closed"
               ]
            } 
         } 
      ] 
   },
   "size":100
}       

【问题讨论】:

  • 我认为问题出在 ES 之外的某个地方。 ES 不应为您的查询返回任何结果,因为 1) 位置必须采用 [lon, lat] 格式(-118 的纬度不存在)和 2) 除非您更改索引映射,"PropertySubType":"Single Family " 不应该匹配任何记录。您使用的是 PropertySubType 的标准分析器,因此该字段不应包含术语“Single Family”(它应该包含两个术语:“single”和“family”)。顺便说一句,如果您提供一个可以重现您的问题的脚本,例如gist.github.com/1097105,那么帮助您会容易得多
  • 感谢 imotov,原来我需要使用“plane”而不是“arc”。我也一直在更新索引的映射,以便某些字段是 mutli_fields,这些字段是经过分析和未分析的(例如“PropertySubType”)

标签: geolocation geospatial geo elasticsearch


【解决方案1】:

添加选项“distance_type”并将其设置为“plane”修复了这个问题。在此处查看“distance_type”:

http://www.elasticsearch.org/guide/reference/query-dsl/geo-distance-filter.html

【讨论】:

  • 上述链接的文档说plane 距离类型更快,但精度较低。我想知道为什么使用plane 距离类型可以得到更好的距离计算。
猜你喜欢
  • 1970-01-01
  • 2016-11-24
  • 1970-01-01
  • 2021-06-16
  • 1970-01-01
  • 2020-07-14
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
相关资源
最近更新 更多