【发布时间】: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