File tree 2 files changed +54
-0
lines changed
Tests/Nest.Tests.Unit/Search/Sort
2 files changed +54
-0
lines changed Original file line number Diff line number Diff line change @@ -19,6 +19,9 @@ public class SortDescriptor<T> where T : class
19
19
[ JsonProperty ( "order" ) ]
20
20
internal string _Order { get ; set ; }
21
21
22
+ [ JsonProperty ( "mode" ) ]
23
+ internal string _Mode { get ; set ; }
24
+
22
25
[ JsonProperty ( "nested_filter" ) ]
23
26
internal BaseFilter _NestedFilter { get ; set ; }
24
27
@@ -70,6 +73,31 @@ public virtual SortDescriptor<T> Descending()
70
73
this . _Order = "desc" ;
71
74
return this ;
72
75
}
76
+
77
+ public virtual SortDescriptor < T > NestedMin ( )
78
+ {
79
+ this . _Mode = "min" ;
80
+ return this ;
81
+ }
82
+
83
+ public virtual SortDescriptor < T > NestedMax ( )
84
+ {
85
+ this . _Mode = "max" ;
86
+ return this ;
87
+ }
88
+
89
+ public virtual SortDescriptor < T > NestedSum ( )
90
+ {
91
+ this . _Mode = "sum" ;
92
+ return this ;
93
+ }
94
+
95
+ public virtual SortDescriptor < T > NestedAvg ( )
96
+ {
97
+ this . _Mode = "avg" ;
98
+ return this ;
99
+ }
100
+
73
101
public virtual SortDescriptor < T > NestedFilter ( Func < FilterDescriptor < T > , BaseFilter > filterSelector )
74
102
{
75
103
filterSelector . ThrowIfNull ( "filterSelector" ) ;
Original file line number Diff line number Diff line change @@ -61,6 +61,32 @@ public void TestSortOnSortField()
61
61
Assert . True ( json . JsonEquals ( expected ) , json ) ;
62
62
}
63
63
64
+ [ Test ]
65
+ public void TestSortOnNestedField ( )
66
+ {
67
+ var s = new SearchDescriptor < ElasticsearchProject > ( )
68
+ . From ( 0 )
69
+ . Size ( 10 )
70
+ . Sort ( sort => sort
71
+ . OnField ( e => e . Contributors . Suffix ( "age" ) ) // Sort projects by oldest contributor
72
+ . NestedMax ( )
73
+ . Descending ( )
74
+ ) ;
75
+ var json = TestElasticClient . Serialize ( s ) ;
76
+ var expected = @"
77
+ {
78
+ from: 0,
79
+ size: 10,
80
+ sort: {
81
+ ""contributors.age"": {
82
+ ""order"": ""desc"",
83
+ ""mode"": ""max""
84
+ }
85
+ }
86
+ }" ;
87
+ Assert . True ( json . JsonEquals ( expected ) , json ) ;
88
+ }
89
+
64
90
[ Test ]
65
91
public void TestSortAscending ( )
66
92
{
You can’t perform that action at this time.
0 commit comments