如何为弹性条件源描述符创建 Nest
How to create Nest for elastic conditional source descriptor
在我的索引中,我有吸引类型的文档,它们有一个 属性,这是一个报价列表。这些优惠有到期日。每个景点可以有不止一个报价,一个景点可能有一个已过期和一个未过期的报价。我想要做的是当我查询并返回我的结果时,不要在景点中显示任何过期的优惠。我的源描述符如下所示:
.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))
输出相同,结果相同,我在返回的景点文档中仍然得到过期优惠
Elasticsearch 无法对源进行条件筛选。所以我认为 Nest 由于 linq 而允许在代码中使用它,但这不起作用。你必须在客户端过滤掉。
在我的索引中,我有吸引类型的文档,它们有一个 属性,这是一个报价列表。这些优惠有到期日。每个景点可以有不止一个报价,一个景点可能有一个已过期和一个未过期的报价。我想要做的是当我查询并返回我的结果时,不要在景点中显示任何过期的优惠。我的源描述符如下所示:
.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))
输出相同,结果相同,我在返回的景点文档中仍然得到过期优惠
Elasticsearch 无法对源进行条件筛选。所以我认为 Nest 由于 linq 而允许在代码中使用它,但这不起作用。你必须在客户端过滤掉。