Skip to content

Commit f871fc4

Browse files
russcamMpdreamz
authored andcommitted
Make Terms order assignative (#2921)
Deprecate Terms order _terms with Obsolete attributes Closes #2840
1 parent f78576f commit f871fc4

File tree

4 files changed

+45
-31
lines changed

4 files changed

+45
-31
lines changed

src/Nest/Aggregations/Bucket/Terms/TermsAggregation.cs

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ public interface ITermsAggregation<TFieldType> : ITermsAggregation
4747
{
4848
[JsonProperty("missing")]
4949
TFieldType Missing { get; set; }
50-
5150
}
5251

5352
public class TermsAggregation<TFieldType> : BucketAggregationBase, ITermsAggregation<TFieldType>
@@ -125,23 +124,8 @@ public TermsAggregationDescriptor<T, TFieldType> MinimumDocumentCount(int minimu
125124
public TermsAggregationDescriptor<T, TFieldType> ExecutionHint(TermsAggregationExecutionHint executionHint) =>
126125
Assign(a => a.ExecutionHint = executionHint);
127126

128-
public TermsAggregationDescriptor<T, TFieldType> Order(TermsOrder order) => Assign(a =>
129-
{
130-
a.Order = a.Order ?? new List<TermsOrder>();
131-
a.Order.Add(order);
132-
});
133-
134-
public TermsAggregationDescriptor<T, TFieldType> OrderAscending(string key) => Assign(a =>
135-
{
136-
a.Order = a.Order ?? new List<TermsOrder>();
137-
a.Order.Add(new TermsOrder { Key = key, Order = SortOrder.Ascending });
138-
});
139-
140-
public TermsAggregationDescriptor<T, TFieldType> OrderDescending(string key) => Assign(a =>
141-
{
142-
a.Order = a.Order ?? new List<TermsOrder>();
143-
a.Order.Add(new TermsOrder { Key = key, Order = SortOrder.Descending });
144-
});
127+
public TermsAggregationDescriptor<T, TFieldType> Order(Func<TermsOrderDescriptor<T>, IPromise<IList<TermsOrder>>> selector) =>
128+
Assign(a => a.Order = selector?.Invoke(new TermsOrderDescriptor<T>())?.Value);
145129

146130
public TermsAggregationDescriptor<T, TFieldType> Include(long partition, long numberOfPartitions) =>
147131
Assign(a => a.Include = new TermsInclude(partition, numberOfPartitions));

src/Nest/Aggregations/Bucket/Terms/TermsOrder.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using Newtonsoft.Json;
1+
using System;
2+
using Newtonsoft.Json;
23

34
namespace Nest
45
{
@@ -10,11 +11,10 @@ public class TermsOrder
1011

1112
public static TermsOrder CountAscending => new TermsOrder { Key = "_count", Order = SortOrder.Ascending };
1213
public static TermsOrder CountDescending => new TermsOrder { Key = "_count", Order = SortOrder.Descending };
13-
14-
//here for backwards compatibility reasons, elasticsearch deprecrated _term as sort order in favor of _key
14+
[Obsolete("Deprecated in Elasticsearch 6.0. Use KeyAscending")]
1515
public static TermsOrder TermAscending => new TermsOrder { Key = "_key", Order = SortOrder.Ascending };
16+
[Obsolete("Deprecated in Elasticsearch 6.0. Use KeyDescending")]
1617
public static TermsOrder TermDescending => new TermsOrder { Key = "_key", Order = SortOrder.Descending };
17-
1818
public static TermsOrder KeyAscending => new TermsOrder { Key = "_key", Order = SortOrder.Ascending };
1919
public static TermsOrder KeyDescending => new TermsOrder { Key = "_key", Order = SortOrder.Descending };
2020
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
using System.Collections.Generic;
2+
3+
namespace Nest
4+
{
5+
public class TermsOrderDescriptor<T> : DescriptorPromiseBase<TermsOrderDescriptor<T>, IList<TermsOrder>>
6+
where T : class
7+
{
8+
public TermsOrderDescriptor() : base(new List<TermsOrder>()) { }
9+
10+
public TermsOrderDescriptor<T> CountAscending() => Assign(a => a.Add(TermsOrder.CountAscending));
11+
12+
public TermsOrderDescriptor<T> CountDescending() => Assign(a => a.Add(TermsOrder.CountDescending));
13+
14+
public TermsOrderDescriptor<T> KeyAscending() => Assign(a => a.Add(TermsOrder.KeyAscending));
15+
16+
public TermsOrderDescriptor<T> KeyDescending() => Assign(a => a.Add(TermsOrder.KeyDescending));
17+
18+
public TermsOrderDescriptor<T> Ascending(string key) =>
19+
string.IsNullOrWhiteSpace(key) ? this : Assign(a => a.Add(new TermsOrder { Key = key, Order = SortOrder.Ascending }));
20+
21+
public TermsOrderDescriptor<T> Descending(string key) =>
22+
string.IsNullOrWhiteSpace(key) ? this : Assign(a => a.Add(new TermsOrder { Key = key, Order = SortOrder.Descending }));
23+
}
24+
}

src/Tests/Aggregations/Bucket/Terms/TermsAggregationUsageTests.cs

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,10 @@ public TermsAggregationUsageTests(ReadOnlyCluster i, EndpointUsage usage) : base
6464
.ExecutionHint(TermsAggregationExecutionHint.Map)
6565
.Missing("n/a")
6666
.Script(ss => ss.Source("'State of Being: '+_value"))
67-
.Order(TermsOrder.TermAscending)
68-
.Order(TermsOrder.CountDescending)
67+
.Order(o => o
68+
.KeyAscending()
69+
.CountDescending()
70+
)
6971
.Meta(m => m
7072
.Add("foo", "bar")
7173
)
@@ -87,7 +89,7 @@ public TermsAggregationUsageTests(ReadOnlyCluster i, EndpointUsage usage) : base
8789
Script = new InlineScript("'State of Being: '+_value"),
8890
Order = new List<TermsOrder>
8991
{
90-
TermsOrder.TermAscending,
92+
TermsOrder.KeyAscending,
9193
TermsOrder.CountDescending
9294
},
9395
Meta = new Dictionary<string, object>
@@ -171,8 +173,10 @@ public TermsAggregationIncludePatternUsageTests(ReadOnlyCluster i, EndpointUsage
171173
.ExecutionHint(TermsAggregationExecutionHint.Map)
172174
.Missing("n/a")
173175
.Include("(Stable|VeryActive)")
174-
.Order(TermsOrder.TermAscending)
175-
.Order(TermsOrder.CountDescending)
176+
.Order(o => o
177+
.KeyAscending()
178+
.CountDescending()
179+
)
176180
.Meta(m => m
177181
.Add("foo", "bar")
178182
)
@@ -194,7 +198,7 @@ public TermsAggregationIncludePatternUsageTests(ReadOnlyCluster i, EndpointUsage
194198
Include = new TermsInclude("(Stable|VeryActive)"),
195199
Order = new List<TermsOrder>
196200
{
197-
TermsOrder.TermAscending,
201+
TermsOrder.KeyAscending,
198202
TermsOrder.CountDescending
199203
},
200204
Meta = new Dictionary<string, object>
@@ -278,8 +282,10 @@ public TermsAggregationIncludeExactValuesUsageTests(ReadOnlyCluster i, EndpointU
278282
.ExecutionHint(TermsAggregationExecutionHint.Map)
279283
.Missing("n/a")
280284
.Include(new[] {StateOfBeing.Stable.ToString(), StateOfBeing.VeryActive.ToString()})
281-
.Order(TermsOrder.TermAscending)
282-
.Order(TermsOrder.CountDescending)
285+
.Order(o => o
286+
.KeyAscending()
287+
.CountDescending()
288+
)
283289
.Meta(m => m
284290
.Add("foo", "bar")
285291
)
@@ -301,7 +307,7 @@ public TermsAggregationIncludeExactValuesUsageTests(ReadOnlyCluster i, EndpointU
301307
Include = new TermsInclude(new[] { StateOfBeing.Stable.ToString(), StateOfBeing.VeryActive.ToString() }),
302308
Order = new List<TermsOrder>
303309
{
304-
TermsOrder.TermAscending,
310+
TermsOrder.KeyAscending,
305311
TermsOrder.CountDescending
306312
},
307313
Meta = new Dictionary<string, object>

0 commit comments

Comments
 (0)