ElasticSearch .net GeoDistance фильтр не работает - PullRequest
0 голосов
/ 29 января 2019

Созданный мною запрос инструментов Kibana Dev работает на 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 Объект в локационном фильтре.Любой совет, что я могу делать неправильно или как отладить это, будет оценен.

1 Ответ

0 голосов
/ 29 января 2019

Вы не указали поле Geodistance: .Field (p => p.Location)

...