diff --git a/src/Nest/DSL/Filter/NestedFilterDescriptor.cs b/src/Nest/DSL/Filter/NestedFilterDescriptor.cs index 03fd69d5471..9c20931d7f7 100644 --- a/src/Nest/DSL/Filter/NestedFilterDescriptor.cs +++ b/src/Nest/DSL/Filter/NestedFilterDescriptor.cs @@ -59,9 +59,12 @@ public class NestedFilterDescriptor : FilterBase, INestedFilter where T : cla bool IFilter.IsConditionless { get - { - return ((INestedFilter)this).Query == null - || ((INestedFilter)this).Query.IsConditionless; + { + return (((INestedFilter)this).Query == null + || ((INestedFilter)this).Query.IsConditionless) + && (((INestedFilter)this).Filter == null + || ((INestedFilter)this).Filter.IsConditionless) + ; } } diff --git a/src/Tests/Nest.Tests.Unit/Search/Filter/ConditionLess/ConditionLessTests.cs b/src/Tests/Nest.Tests.Unit/Search/Filter/ConditionLess/ConditionLessTests.cs index 3da54c2d083..2b534c3c15c 100644 --- a/src/Tests/Nest.Tests.Unit/Search/Filter/ConditionLess/ConditionLessTests.cs +++ b/src/Tests/Nest.Tests.Unit/Search/Filter/ConditionLess/ConditionLessTests.cs @@ -28,6 +28,7 @@ private void DoConditionlessFilter(Func, this.JsonEquals(s, System.Reflection.MethodInfo.GetCurrentMethod(), "MatchAll"); } + private void DoNonConditionlessFilter(Func, FilterContainer> filter) { var s = new SearchDescriptor() @@ -146,8 +147,12 @@ public void MissingTest() public void NestedTest() { this.DoConditionlessFilter(f => f.Nested(nf=>nf.Query(q=>q.Term(string.Empty, string.Empty)))); - this.DoConditionlessFilter(f => f.Nested(null)); - } + this.DoConditionlessFilter(f => f.Nested(null)); + this.DoConditionlessFilter(f => f.Nested(nf => nf.Filter(q => q.Term(string.Empty, string.Empty)))); + + this.DoNonConditionlessFilter(f => f.Nested(nf => nf.Query(q => q.Term("myfield", "myvalue")))); + this.DoNonConditionlessFilter(f => f.Nested(nf => nf.Filter(q => q.Term("myfield", "myvalue")))); + } [Test]