Преобразовать строку ES Query / Sort в то, что ElasticClient может использовать? - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть следующее, что прекрасно работает в Kibana:

{
  "sort": [
    {
      "name.keyword": {
        "order": "asc"
      }
    }
  ],
  "query": {
    "bool": {
      "must": [],
      "should": [],
      "must_not": []
    }
  }
}

Однако я не уверен, как заставить часть 'sort' этой строки работать в эластичном клиенте, я могу построить запроссторона строки с использованием 'Raw', но не уверен, как сделать то же самое для сортировки

1 Ответ

0 голосов
/ 21 февраля 2019

Используя Elasticsearch .net client , nest, вы можете легко добавить блок сортировки к вашему запросу:

s => s
.Sort(ss => ss
    .Ascending(p => p.StartedOn)
    .Descending(p => p.Name)
    .Descending(SortSpecialField.Score)
    .Ascending(SortSpecialField.DocumentIndexOrder)
    .Field(f => f
        .Field(p => p.Tags.First().Added)
        .Order(SortOrder.Descending)
        .MissingLast()
        .UnmappedType(FieldType.Date)
        .Mode(SortMode.Average)
        .NestedPath(p => p.Tags)
        .NestedFilter(q => q.MatchAll())
    )
    .Field(f => f
        .Field(p => p.NumberOfCommits)
        .Order(SortOrder.Descending)
        .Missing(-1)
    )
    .GeoDistance(g => g
        .Field(p => p.Location)
        .DistanceType(GeoDistanceType.Arc)
        .Order(SortOrder.Ascending)
        .Unit(DistanceUnit.Centimeters)
        .Mode(SortMode.Min)
        .Points(new GeoLocation(70, -70), new GeoLocation(-12, 12))
    )
    .Script(sc => sc
        .Type("number")
        .Ascending()
        .Script(script => script
            .Source("doc['numberOfCommits'].value * params.factor")
            .Params(p => p.Add("factor", 1.1))
        )
    )
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...