@@ -17,6 +17,10 @@ public interface IHasParentFilter : IFilter
1717 [ JsonConverter ( typeof ( CompositeJsonConverter < ReadAsTypeConverter < QueryDescriptor < object > > , CustomJsonConverter > ) ) ]
1818 IQueryContainer Query { get ; set ; }
1919
20+ [ JsonProperty ( "filter" ) ]
21+ [ JsonConverter ( typeof ( CompositeJsonConverter < ReadAsTypeConverter < FilterDescriptor < object > > , CustomJsonConverter > ) ) ]
22+ IFilterContainer Filter { get ; set ; }
23+
2024 [ JsonProperty ( "inner_hits" ) ]
2125 [ JsonConverter ( typeof ( ReadAsTypeConverter < InnerHits > ) ) ]
2226 IInnerHits InnerHits { get ; set ; }
@@ -32,6 +36,7 @@ protected internal override void WrapInContainer(IFilterContainer container)
3236
3337 public TypeNameMarker Type { get ; set ; }
3438 public IQueryContainer Query { get ; set ; }
39+ public IFilterContainer Filter { get ; set ; }
3540 public IInnerHits InnerHits { get ; set ; }
3641 }
3742
@@ -43,15 +48,17 @@ public class HasParentFilterDescriptor<T> : FilterBase, IHasParentFilter where T
4348
4449 IQueryContainer IHasParentFilter . Query { get ; set ; }
4550
51+ IFilterContainer IHasParentFilter . Filter { get ; set ; }
52+
4653 IInnerHits IHasParentFilter . InnerHits { get ; set ; }
4754
4855 bool IFilter . IsConditionless
4956 {
5057 get
5158 {
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 ) ) ;
5562 }
5663 }
5764
@@ -67,6 +74,13 @@ public HasParentFilterDescriptor<T> Query(Func<QueryDescriptor<T>, QueryContaine
6774 return this ;
6875 }
6976
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+
7084 public HasParentFilterDescriptor < T > Type ( string type )
7185 {
7286 Self . Type = type ;
0 commit comments