@@ -17,6 +17,10 @@ public interface IHasParentFilter : IFilter
17
17
[ JsonConverter ( typeof ( CompositeJsonConverter < ReadAsTypeConverter < QueryDescriptor < object > > , CustomJsonConverter > ) ) ]
18
18
IQueryContainer Query { get ; set ; }
19
19
20
+ [ JsonProperty ( "filter" ) ]
21
+ [ JsonConverter ( typeof ( CompositeJsonConverter < ReadAsTypeConverter < FilterDescriptor < object > > , CustomJsonConverter > ) ) ]
22
+ IFilterContainer Filter { get ; set ; }
23
+
20
24
[ JsonProperty ( "inner_hits" ) ]
21
25
[ JsonConverter ( typeof ( ReadAsTypeConverter < InnerHits > ) ) ]
22
26
IInnerHits InnerHits { get ; set ; }
@@ -32,6 +36,7 @@ protected internal override void WrapInContainer(IFilterContainer container)
32
36
33
37
public TypeNameMarker Type { get ; set ; }
34
38
public IQueryContainer Query { get ; set ; }
39
+ public IFilterContainer Filter { get ; set ; }
35
40
public IInnerHits InnerHits { get ; set ; }
36
41
}
37
42
@@ -43,15 +48,17 @@ public class HasParentFilterDescriptor<T> : FilterBase, IHasParentFilter where T
43
48
44
49
IQueryContainer IHasParentFilter . Query { get ; set ; }
45
50
51
+ IFilterContainer IHasParentFilter . Filter { get ; set ; }
52
+
46
53
IInnerHits IHasParentFilter . InnerHits { get ; set ; }
47
54
48
55
bool IFilter . IsConditionless
49
56
{
50
57
get
51
58
{
52
- return Self . Query == null
53
- || Self . Query . IsConditionless
54
- || Self . Type . IsNullOrEmpty ( ) ;
59
+ return Self . Type . IsNullOrEmpty ( )
60
+ || ( ( Self . Query == null || Self . Query . IsConditionless )
61
+ && ( Self . Filter == null || Self . Filter . IsConditionless ) ) ;
55
62
}
56
63
}
57
64
@@ -67,6 +74,13 @@ public HasParentFilterDescriptor<T> Query(Func<QueryDescriptor<T>, QueryContaine
67
74
return this ;
68
75
}
69
76
77
+ public HasParentFilterDescriptor < T > Filter ( Func < FilterDescriptor < T > , FilterContainer > filterSelector )
78
+ {
79
+ var f = new FilterDescriptor < T > ( ) ;
80
+ Self . Filter = filterSelector ( f ) ;
81
+ return this ;
82
+ }
83
+
70
84
public HasParentFilterDescriptor < T > Type ( string type )
71
85
{
72
86
Self . Type = type ;
0 commit comments