c# - ElasticSearch .net GeoDistance 过滤器不起作用
问题描述
我创建的 Kibana 开发工具查询可以 100% 工作,并返回 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
}
}
}
}
}
}
我在 c# 中使用 NEST 创建的查询结构相同,但返回的结果来自地理距离之外
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 对象。任何关于我可能做错了什么或如何调试的建议都将不胜感激。
解决方案
您没有指定 Geodistance 的字段: .Field(p=>p.Location)
推荐阅读
- alexa - 如何在 Google Assistant 中集成 Alexa 技能?
- javascript - 在 Windows 上使用 Atom 编辑器插入“CR”更漂亮的错误
- c# - 我在 azure 中部署的 Web 应用程序需要指向一个静态 IP 地址
- tsql - 使用 T-SQL 在具有多数据的单个脚本中将数据插入到 Master 和 Detail 表
- db2 - SQL1092N 请求的命令或操作失败,因为用户标识没有执行请求的命令或操作的权限
- ios - 需要帮助完成我在状态机上的第一次测试计时器应用程序尝试 - 我想我仍然有转换错误
- reactjs - 在没有 ES6 或 Webpack 的情况下使用 CDN 链接反应 redux
- node.js - 当回调未作为参数传递时,如何使用 sinon 在 node.js 中对回调进行单元测试?
- automation - QTP 11 与 Flex 3.0
- java - 'ol 错误:无法找到或加载主类 os x