Skip to content

Commit ab0a52e

Browse files
committed
Merge pull request #290 from thelalle/sort-nested
Sort - Added nested filter and path (Added in 0.90.0.Beta1).
2 parents 145f314 + b539d8e commit ab0a52e

File tree

2 files changed

+220
-136
lines changed

2 files changed

+220
-136
lines changed

Diff for: src/Nest.Tests.Unit/Search/Sort/SortTests.cs

+197-136
Original file line numberDiff line numberDiff line change
@@ -1,192 +1,253 @@
11
using NUnit.Framework;
22
using Nest.Tests.MockData.Domain;
33

4-
namespace Nest.Tests.Unit.Search.Sort
5-
{
4+
namespace Nest.Tests.Unit.Search.Sort {
65
[TestFixture]
7-
public class SortTests
8-
{
6+
public class SortTests {
97
[Test]
10-
public void TestSort()
11-
{
8+
public void TestSort() {
129
var s = new SearchDescriptor<ElasticSearchProject>()
1310
.From(0)
1411
.Size(10)
15-
.Sort(sort => sort
16-
.OnField(e => e.Country)
17-
.MissingLast()
18-
.Descending()
19-
);
12+
.Sort(sort => sort
13+
.OnField(e => e.Country)
14+
.MissingLast()
15+
.Descending()
16+
);
2017
var json = TestElasticClient.Serialize(s);
21-
var expected = @" {
22-
from: 0,
23-
size: 10,
24-
sort: {
25-
country: {
26-
missing: ""_last"",
27-
order: ""desc""
28-
}
29-
}
30-
}";
18+
var expected = @"
19+
{
20+
from: 0,
21+
size: 10,
22+
sort: {
23+
country: {
24+
missing: ""_last"",
25+
order: ""desc""
26+
}
27+
}
28+
}";
3129
Assert.True(json.JsonEquals(expected), json);
3230
}
3331

3432
[Test]
35-
public void TestSortOnSortField()
36-
{
33+
public void TestSortOnSortField() {
3734
var s = new SearchDescriptor<ElasticSearchProject>()
3835
.From(0)
3936
.Size(10)
40-
.Sort(sort => sort
41-
.OnField(e => e.Name)
42-
.MissingLast()
43-
.Descending()
44-
);
37+
.Sort(sort => sort
38+
.OnField(e => e.Name)
39+
.MissingLast()
40+
.Descending()
41+
);
4542
var json = TestElasticClient.Serialize(s);
46-
var expected = @" {
47-
from: 0,
48-
size: 10,
49-
sort: {
50-
""name.sort"": {
51-
missing: ""_last"",
52-
order: ""desc""
53-
}
54-
}
55-
}";
43+
var expected = @"
44+
{
45+
from: 0,
46+
size: 10,
47+
sort: {
48+
""name.sort"": {
49+
missing: ""_last"",
50+
order: ""desc""
51+
}
52+
}
53+
}";
5654
Assert.True(json.JsonEquals(expected), json);
5755
}
5856

5957
[Test]
60-
public void TestSortAscending()
61-
{
58+
public void TestSortAscending() {
6259
var s = new SearchDescriptor<ElasticSearchProject>()
6360
.From(0)
6461
.Size(10)
6562
.SortAscending(f => f.Country);
6663
var json = TestElasticClient.Serialize(s);
67-
var expected = @" {
68-
from: 0,
69-
size: 10,
70-
sort: {
71-
country : ""asc""
72-
}
73-
}";
64+
var expected = @"
65+
{
66+
from: 0,
67+
size: 10,
68+
sort: {
69+
country : ""asc""
70+
}
71+
}";
7472
Assert.True(json.JsonEquals(expected), json);
7573
}
7674

7775
[Test]
78-
public void TestSortDescending()
79-
{
76+
public void TestSortDescending() {
8077
var s = new SearchDescriptor<ElasticSearchProject>()
8178
.From(0)
8279
.Size(10)
8380
.SortDescending(f => f.Country);
8481
var json = TestElasticClient.Serialize(s);
85-
var expected = @" {
86-
from: 0,
87-
size: 10,
88-
sort: {
89-
country : ""desc""
90-
}
91-
}";
82+
var expected = @"
83+
{
84+
from: 0,
85+
size: 10,
86+
sort: {
87+
country : ""desc""
88+
}
89+
}";
9290
Assert.True(json.JsonEquals(expected), json);
9391
}
9492

9593
[Test]
96-
public void TestSortAscendingOnSortField()
97-
{
94+
public void TestSortAscendingOnSortField() {
9895
var s = new SearchDescriptor<ElasticSearchProject>()
9996
.From(0)
10097
.Size(10)
10198
.SortAscending(f => f.Name);
10299
var json = TestElasticClient.Serialize(s);
103-
var expected = @" {
104-
from: 0,
105-
size: 10,
106-
sort: {
107-
""name.sort"" : ""asc""
108-
}
109-
}";
100+
var expected = @"
101+
{
102+
from: 0,
103+
size: 10,
104+
sort: {
105+
""name.sort"" : ""asc""
106+
}
107+
}";
110108
Assert.True(json.JsonEquals(expected), json);
111109
}
112110

113111
[Test]
114-
public void TestSortDescendingOnSortField()
115-
{
112+
public void TestSortDescendingOnSortField() {
116113
var s = new SearchDescriptor<ElasticSearchProject>()
117114
.From(0)
118115
.Size(10)
119116
.SortDescending(f => f.Name);
120117
var json = TestElasticClient.Serialize(s);
121-
var expected = @" {
122-
from: 0,
123-
size: 10,
124-
sort: {
125-
""name.sort"" : ""desc""
126-
}
127-
}";
118+
var expected = @"
119+
{
120+
from: 0,
121+
size: 10,
122+
sort: {
123+
""name.sort"" : ""desc""
124+
}
125+
}";
126+
Assert.True(json.JsonEquals(expected), json);
127+
}
128+
129+
[Test]
130+
public void TestSortGeo() {
131+
var s = new SearchDescriptor<ElasticSearchProject>()
132+
.From(0)
133+
.Size(10)
134+
.SortGeoDistance(sort => sort
135+
.OnField(e => e.Origin)
136+
.MissingLast()
137+
.Descending()
138+
.PinTo(40, -70)
139+
.Unit(GeoUnit.km)
140+
);
141+
var json = TestElasticClient.Serialize(s);
142+
var expected = @"
143+
{
144+
from: 0,
145+
size: 10,
146+
sort: {
147+
_geo_distance: {
148+
missing: ""_last"",
149+
order: ""desc"",
150+
""origin"": ""40, -70"",
151+
unit: ""km""
152+
}
153+
}
154+
}";
155+
Assert.True(json.JsonEquals(expected), json);
156+
}
157+
158+
[Test]
159+
public void TestSortScript() {
160+
var s = new SearchDescriptor<ElasticSearchProject>()
161+
.From(0)
162+
.Size(10)
163+
.SortScript(sort => sort
164+
.MissingLast()
165+
.Descending()
166+
.Script("doc['field_name'].value * factor")
167+
.Params(p => p
168+
.Add("factor", 1.1)
169+
)
170+
.Type("number")
171+
);
172+
var json = TestElasticClient.Serialize(s);
173+
var expected = @"
174+
{
175+
from: 0,
176+
size: 10,
177+
sort: {
178+
_script: {
179+
missing: ""_last"",
180+
order: ""desc"",
181+
type: ""number"",
182+
script: ""doc['field_name'].value * factor"",
183+
params: {
184+
factor: 1.1
185+
}
186+
}
187+
}
188+
}";
189+
Assert.True(json.JsonEquals(expected), json);
190+
}
191+
192+
[Test]
193+
public void TestNestedFilter() {
194+
var s = new SearchDescriptor<ElasticSearchProject>()
195+
.Sort(sort => sort
196+
.OnField(e => e.Id)
197+
.NestedFilter(f => f.Term("name", "value"))
198+
);
199+
var json = TestElasticClient.Serialize(s);
200+
var expected = @"
201+
{
202+
""sort"": {
203+
""id"": {
204+
""nested_filter"": {
205+
""term"": {
206+
""name"": ""value""
207+
}
208+
}
209+
}
210+
}
211+
}";
212+
Assert.True(json.JsonEquals(expected), json);
213+
}
214+
215+
[Test]
216+
public void TestNestedPath() {
217+
var s = new SearchDescriptor<ElasticSearchProject>()
218+
.Sort(sort => sort
219+
.OnField(e => e.Id)
220+
.NestedPath("name")
221+
);
222+
var json = TestElasticClient.Serialize(s);
223+
var expected = @"
224+
{
225+
""sort"": {
226+
""id"": {
227+
""nested_path"": ""name""
228+
}
229+
}
230+
}";
231+
Assert.True(json.JsonEquals(expected), json);
232+
}
233+
234+
[Test]
235+
public void TestNestedPathObject() {
236+
var s = new SearchDescriptor<ElasticSearchProject>()
237+
.Sort(sort => sort
238+
.OnField(e => e.Id)
239+
.NestedPath(f => f.Name)
240+
);
241+
var json = TestElasticClient.Serialize(s);
242+
var expected = @"
243+
{
244+
""sort"": {
245+
""id"": {
246+
""nested_path"": ""name""
247+
}
248+
}
249+
}";
128250
Assert.True(json.JsonEquals(expected), json);
129251
}
130-
[Test]
131-
public void TestSortGeo()
132-
{
133-
var s = new SearchDescriptor<ElasticSearchProject>()
134-
.From(0)
135-
.Size(10)
136-
.SortGeoDistance(sort => sort
137-
.OnField(e => e.Origin)
138-
.MissingLast()
139-
.Descending()
140-
.PinTo(40, -70)
141-
.Unit(GeoUnit.km)
142-
);
143-
var json = TestElasticClient.Serialize(s);
144-
var expected = @" {
145-
from: 0,
146-
size: 10,
147-
sort: {
148-
_geo_distance: {
149-
missing: ""_last"",
150-
order: ""desc"",
151-
""origin"": ""40, -70"",
152-
unit: ""km""
153-
}
154-
}
155-
}";
156-
Assert.True(json.JsonEquals(expected), json);
157-
}
158-
[Test]
159-
public void TestSortScript()
160-
{
161-
var s = new SearchDescriptor<ElasticSearchProject>()
162-
.From(0)
163-
.Size(10)
164-
.SortScript(sort => sort
165-
.MissingLast()
166-
.Descending()
167-
.Script("doc['field_name'].value * factor")
168-
.Params(p=>p
169-
.Add("factor", 1.1)
170-
)
171-
.Type("number")
172-
);
173-
var json = TestElasticClient.Serialize(s);
174-
var expected = @" {
175-
from: 0,
176-
size: 10,
177-
sort: {
178-
_script: {
179-
missing: ""_last"",
180-
order: ""desc"",
181-
type: ""number"",
182-
script: ""doc['field_name'].value * factor"",
183-
params: {
184-
factor: 1.1
185-
}
186-
}
187-
}
188-
}";
189-
Assert.True(json.JsonEquals(expected), json);
190-
}
191252
}
192-
}
253+
}

0 commit comments

Comments
 (0)