【问题标题】:How to create Nest for elastic conditional source descriptor如何为弹性条件源描述符创建 Nest
【发布时间】:2019-02-26 20:05:27
【问题描述】:

在我的索引中,我有吸引力类型的文档,它们有一个属性,它是一个报价列表。这些优惠有一个到期日。每个景点可以有多个优惠,一个景点可以有一个已过期和一个未过期的优惠。我想要做的是当我查询并取回我的结果时,不会在景点中显示任何过期的优惠。我的源描述符如下所示:

.Source(src => src.IncludeAll().Excludes(f => f.Fields(d => d.Offers.Where(df => df.Expires > DateTime.Now)))

在生成的查询部分我可以看到以下内容:

{ "includes": [ "*" ], "excludes": [ "offers.now.expires"] }

我仍然看到给定景点的已过期优惠已过期且未过期。甚至可以有条件地过滤源描述符中的字段吗?

我也试过了:

.Source(src => src.IncludeAll().Excludes(f => f.Fields(d => d.Offers.First().Expires > DateTime.Now))

输出相同,结果相同,我仍然在返回的景点文档中得到过期的优惠

【问题讨论】:

    标签: c# elasticsearch nest


    【解决方案1】:

    Elasticsearch 不能对源进行条件过滤。所以我认为 Nest 由于 linq 允许在代码中使用它,但这不起作用。您必须在客户端进行过滤。

    【讨论】:

    • .Field() 中的 lambda 表达式只能使用类型系统解析为字符串字段名称。
    猜你喜欢
    • 1970-01-01
    • 2013-09-08
    • 1970-01-01
    • 2013-06-04
    • 2013-11-19
    • 2012-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多