gpt4 book ai didi

elasticsearch - NEST 2.0 与 Elasticsearch for GeoDistance 始终返回所有记录

转载 作者:行者123 更新时间:2023-12-04 06:09:31 25 4
gpt4 key购买 nike

我通过 nuget 使用 C# .NET 4.5 和 NEST 2.0 编写了以下代码。此查询始终返回我的类型“trackpointes”以及具有此距离搜索代码的文档总数。我有 2,790 个文档,计数返回就是这样。即使以 1 厘米作为距离单位,它也会返回所有 2,790 个文档。我的“trackpointes”类型有一个位置字段、geo_point 类型、geohash true 和 geohash_ precision 为 9。

我只是尝试根据距离过滤结果,而不使用任何其他搜索词,对于我的 2,790 条记录,无论测量单位如何,它都会返回所有结果。所以我必须遗漏一些东西(希望很小)。任何帮助表示赞赏。我能找到的 NEST 示例已经有一两年了,而且该语法似乎不再有效。

double distance = 4.0;
var geoResult = client.Search<TrackPointES>(s => s.From(0).Size(10000).Type("trackpointes")
.Query(query => query
.Bool( b => b.Filter(filter => filter
.GeoDistance(geo => geo
.Distance(distance, Nest.DistanceUnit.Kilometers).Location(35, -82)))
)
)
);

如果我使用 POSTMAN 连接到我的 ES 实例并使用以下 JSON 发布搜索,我将得到 2,790 个文档中总共 143 个的返回结果。所以我知道数据是正确的,因为这是一个现实的返回。

{
"query" : {
"filtered" : {
"filter" : {
"geo_distance" : {
"distance" : "4km",
"location" : {
"top_left": {
"lat" : 35,
"lon" : -82
}
}
}
}
}
}
}

最佳答案

您似乎没有在查询中指定字段。试试这个:

var geoResult = client.Search<Document>(s => s.From(0).Size(10000)
.Query(query => query
.Bool(b => b.Filter(filter => filter
.GeoDistance(geo => geo
.Field(f => f.Location) //<- this
.Distance(distance, Nest.DistanceUnit.Kilometers).Location(35, -82)))
)
)
);

关于elasticsearch - NEST 2.0 与 Elasticsearch for GeoDistance 始终返回所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36013898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com