ElasticSearch .net GeoDistance 过滤器不工作
ElasticSearch .net GeoDistance filter not working
我创建的 Kibana Dev 工具查询 100% 有效,returns 结果在 10 公里的距离范围内。它的结构如下:
GET /catdb/_search
{
"query": {
"bool" : {
"must" : {
"match_phrase": {
"NAME": {
"query": "cats",
"slop": 3
}
}
},
"filter" : {
"geo_distance" : {
"distance" : "10km",
"location":{
"lat" : -25.859919,
"lon" : 28.183966
}
}
}
}
}
}
我使用 NEST 在 c# 中创建的查询结构相同,但从远离地理距离的地方返回结果
var catsSearch = client.Search<dynamic>(s => s.From(0).Size(20).Query(
q => q.Bool(
b => b.Must(
m => m.MatchPhrase(
n => n.Field("NAME").Query("cats").Slop(slop))).Filter(
f => f.GeoDistance(
g => g.Distance(10, DistanceUnit.Kilometers).Location(-25.859919, 28.183966))))));
我还尝试在位置过滤器中传递 GeoLocation 对象。
任何关于我可能做错了什么或如何调试的建议都将不胜感激。
您没有指定地理距离字段:.Field(p=>p.Location)
我创建的 Kibana Dev 工具查询 100% 有效,returns 结果在 10 公里的距离范围内。它的结构如下:
GET /catdb/_search
{
"query": {
"bool" : {
"must" : {
"match_phrase": {
"NAME": {
"query": "cats",
"slop": 3
}
}
},
"filter" : {
"geo_distance" : {
"distance" : "10km",
"location":{
"lat" : -25.859919,
"lon" : 28.183966
}
}
}
}
}
}
我使用 NEST 在 c# 中创建的查询结构相同,但从远离地理距离的地方返回结果
var catsSearch = client.Search<dynamic>(s => s.From(0).Size(20).Query(
q => q.Bool(
b => b.Must(
m => m.MatchPhrase(
n => n.Field("NAME").Query("cats").Slop(slop))).Filter(
f => f.GeoDistance(
g => g.Distance(10, DistanceUnit.Kilometers).Location(-25.859919, 28.183966))))));
我还尝试在位置过滤器中传递 GeoLocation 对象。 任何关于我可能做错了什么或如何调试的建议都将不胜感激。
您没有指定地理距离字段:.Field(p=>p.Location)