我有下面的代碼使用C#.NET 4.5和NEST 2.0通過nuget。這個查詢總是返回我的類型'trackpointes'與包含此距離搜索代碼的文檔總數。我有2,790份文件,計數回報就是這樣。即使距離單位1釐米,它也會返回所有2,790個文檔。我的類型'trackpointes'有一個位置字段,類型爲geo_point,geohash爲真,geohash_precision爲9.NEST 2.0與Elasticsearch的GeoDistance總是返回所有記錄
我只是試圖根據距離篩選結果,沒有任何其他搜索條件,對於我的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)))
)
)
);
如果我使用郵遞員瓦特/ JSON之下,我得到143個總文件的返回了2,790連接到我的ES和POST的情況下進行搜索。所以我知道數據是正確的,因爲這是一個現實的回報。
{
"query" : {
"filtered" : {
"filter" : {
"geo_distance" : {
"distance" : "4km",
"location" : {
"top_left": {
"lat" : 35,
"lon" : -82
}
}
}
}
}
}
}
您可能想要考慮使用掃描和滾動來獲得10,000個結果(一次可能是500個),而不是要求Elasticsearch在一個請求中將它們全部返回給您;它可能會減少羣集上的壓力 - https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-scroll.html –