Skip to content

Commit f5959d6

Browse files
committed
Support non string values for sort missing
Closes #2857
1 parent 40d7d3d commit f5959d6

File tree

2 files changed

+24
-7
lines changed

2 files changed

+24
-7
lines changed

src/Nest/Search/Search/Sort/SortBase.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public interface ISort
1111
Field SortKey { get; }
1212

1313
[JsonProperty("missing")]
14-
string Missing { get; set; }
14+
object Missing { get; set; }
1515

1616
[JsonProperty("order")]
1717
SortOrder? Order { get; set; }
@@ -28,7 +28,7 @@ public interface ISort
2828

2929
public abstract class SortBase : ISort
3030
{
31-
public string Missing { get; set; }
31+
public object Missing { get; set; }
3232
public SortOrder? Order { get; set; }
3333
public SortMode? Mode { get; set; }
3434
public QueryContainer NestedFilter { get; set; }
@@ -37,14 +37,14 @@ public abstract class SortBase : ISort
3737
protected abstract Field SortKey { get; }
3838
}
3939

40-
public abstract class SortDescriptorBase<TDescriptor, TInterface, T> : DescriptorBase<TDescriptor, TInterface>, ISort
41-
where T : class
40+
public abstract class SortDescriptorBase<TDescriptor, TInterface, T> : DescriptorBase<TDescriptor, TInterface>, ISort
41+
where T : class
4242
where TDescriptor : SortDescriptorBase<TDescriptor, TInterface, T>, TInterface, ISort
4343
where TInterface : class, ISort
4444
{
4545
Field ISort.SortKey => this.SortKey;
4646

47-
string ISort.Missing { get; set; }
47+
object ISort.Missing { get; set; }
4848

4949
SortOrder? ISort.Order { get; set; }
5050

@@ -75,7 +75,7 @@ public virtual TDescriptor NestedFilter(Func<QueryContainerDescriptor<T>, QueryC
7575

7676
public virtual TDescriptor MissingFirst() => Assign(a => a.Missing = "_first");
7777

78-
public virtual TDescriptor MissingValue(string value) => Assign(a => a.Missing = value);
78+
public virtual TDescriptor Missing(object value) => Assign(a => a.Missing = value);
7979

8080
}
81-
}
81+
}

src/Tests/Search/Request/SortUsageTests.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,12 @@ public SortUsageTests(ReadOnlyCluster cluster, EndpointUsage usage) : base(clust
3737
unmapped_type = "date"
3838
}
3939
},
40+
new {
41+
numberOfCommits = new {
42+
missing = -1,
43+
order = "desc"
44+
}
45+
},
4046
new {
4147
_geo_distance = new {
4248
location = new [] {
@@ -85,6 +91,11 @@ public SortUsageTests(ReadOnlyCluster cluster, EndpointUsage usage) : base(clust
8591
.NestedPath(p => p.Tags)
8692
.NestedFilter(q => q.MatchAll())
8793
)
94+
.Field(f => f
95+
.Field(p => p.NumberOfCommits)
96+
.Order(SortOrder.Descending)
97+
.Missing(-1)
98+
)
8899
.GeoDistance(g => g
89100
.Field(p => p.Location)
90101
.DistanceType(GeoDistanceType.Arc)
@@ -122,6 +133,12 @@ public SortUsageTests(ReadOnlyCluster cluster, EndpointUsage usage) : base(clust
122133
NestedPath = Field<Project>(p=>p.Tags),
123134
NestedFilter = new MatchAllQuery(),
124135
},
136+
new SortField
137+
{
138+
Field = Field<Project>(p=>p.NumberOfCommits),
139+
Order = SortOrder.Descending,
140+
Missing = -1
141+
},
125142
new GeoDistanceSort
126143
{
127144
Field = "location",

0 commit comments

Comments
 (0)