【问题标题】:How to query Elasticseach using DateRange on a nested array?如何在嵌套数组上使用日期范围查询 Elasticsearch?
【发布时间】:2020-09-28 18:31:48
【问题描述】:

所以基本上这就是代码

var filter = new QueryContainerDescriptor<GrossReservationVersion2>()
                    .DateRange(range => range
                        .GreaterThanOrEquals(start)
                        .LessThanOrEquals(end)
                        .Field(f => f.BookingItems.First().Start)
                    );

现在,BookingItems 是一个嵌套数组,每个项目都有一个开始日期。我想在嵌套数组对象中的日期上使用 DateRange 进行过滤。显然这段代码不会产生任何结果。任何机构都知道如何做到这一点?谢谢你

【问题讨论】:

    标签: c# .net database elasticsearch


    【解决方案1】:

    所以这就是我所做的......它应该可以工作。您需要向下嵌套级别,然后聚合并使用 DateRange。编写 DateRange 后,您可以使用 resversnested 聚合根文档。

     .Aggregations(a0 => a0
          .Nested("nested", n => n
             .Path(p => p.BookingItems)
                   .Aggregations(a1 => a1
                        .Filter("arrival", f => f
                           .Filter(af => af
                              .DateRange(range => range
                                .Field(df => df.BookingItems.Min(d => d.Start))
                                .GreaterThanOrEquals(start)
                                .LessThanOrEquals(end)))
                                  .Aggregations(a2 => a2                                                                    
                                    .ReverseNested("reverseNested", rn => rn
                                       .Aggregations(a4 => a4                
                                          .Sum("worthAccumalative", s => s.Field(f3 => f3.worth))
                                             )
                                      )
                                             .TopHits("tHits", th => th
                                               .Size(10))
                                        )
                               )
                          )
                     )
                 )
    

    如您所见,您可以使用 TopHits 来确认您的过滤以及您获得了正确的文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-19
      • 1970-01-01
      • 1970-01-01
      • 2021-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多