elasticsearch 使用Nest排序Innerhits结果

eeq64g8w  于 2022-12-11  发布在  ElasticSearch
关注(0)|答案(1)|浏览(132)

我在正确使用.Sort()来表示内部命中时遇到了麻烦。如果我有一个文档结构,如:

{
  "id": "whatever",
  "sales": [
    {
      "startsOn": "2022-05-01T00:00:00"
      "endsOn": "2022-05-31T23:59:59"
      "discountPercent": 0.10
    },
    {
      "startsOn": "2022-06-01T00:00:00"
      "endsOn": "2022-06-31T23:59:59"
      "discountPercent": 0.15
    }
  ]
}

我尝试按照startsOn降序对innerResults进行排序,我的InnerHits代码看起来如下所示:

client.SearchAsync<Product>(x =>
    x.Query(q => 
      q.Nested(n => 
        n.Path(p => p.sales)
        .Query(q => q.DateRange( /* misc date range*/))
        .InnerHits(ih => ih.Name("sorted_Sales")))));

我尝试在.Name()之后添加.Sort(),但得到一个
FieldSortDescriptor不包含sales的定义,并且没有可访问的扩展方法 yada yada

ncecgwcz

ncecgwcz1#

下面将使用startsOn字段按降序对内部命中进行排序。

.InnerHits(ih => ih
  .Name("sorted_Sales")
  .Sort(s => s
    .Descending(d => d.sales.FirstOrDefault()!.startsOn))))))

相关问题