Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何为弹性条件源描述符创建嵌套_C#_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Nest - Fatal编程技术网 elasticsearch,nest,C#,elasticsearch,Nest" /> elasticsearch,nest,C#,elasticsearch,Nest" />

C# 如何为弹性条件源描述符创建嵌套

C# 如何为弹性条件源描述符创建嵌套,c#,elasticsearch,nest,C#,elasticsearch,Nest,在我的索引中,我有吸引类型的文档,它们有一个属性,即报价列表。这些优惠有有效期。每个景点可以有一个以上的优惠。一个景点可能有一个过期优惠和一个未过期优惠。我想做的是当我查询并返回结果时,不要在景点中显示任何过期的优惠。我的源描述符如下所示: .Source(src => src.IncludeAll().Excludes(f => f.Fields(d => d.Offers.Where(df => df.Expires > DateTime.Now))) 在生成

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

.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无法对源进行条件筛选。由于linq的原因,我认为Nest允许在代码中使用它,但这不起作用。您必须在客户端进行筛选。

使用类型系统,
.Field()
中的lambda表达式只能解析为字符串字段名。