Skip to content

Commit 8fbd142

Browse files
committed
fix #389 search preference should be part of the querystring not body
1 parent d8fd8c8 commit 8fbd142

File tree

6 files changed

+60
-37
lines changed

6 files changed

+60
-37
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,3 +40,5 @@ build/keys/keypair.snk
4040
!build/tools/*
4141
!build/tools/scriptcs/*
4242
/dep/Newtonsoft.Json.4.0.2
43+
44+
/src/Nest.Tests.Unit/*.ncrunchproject
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using Nest.Tests.MockData;
5+
using Nest.Tests.MockData.Domain;
6+
using NUnit.Framework;
7+
using System.Diagnostics;
8+
using FluentAssertions;
9+
10+
namespace Nest.Tests.Integration.Reproduce
11+
{
12+
/// <summary>
13+
/// tests to reproduce reported errors
14+
/// </summary>
15+
[TestFixture]
16+
public class Reproduce389Tests : IntegrationTests
17+
{
18+
19+
/// <summary>
20+
/// https://github.com/Mpdreamz/NEST/issues/308
21+
/// </summary>
22+
[Test]
23+
public void DoesPreferenceOnTheBodyThrowAnElasticsearchException()
24+
{
25+
var result = _client.Search<ElasticSearchProject>(op => op
26+
.Query(q =>
27+
q.Term(t => t.Name, "nest")
28+
)
29+
.ExecuteOnPrimary()
30+
.Fields(
31+
field => field.Name
32+
)
33+
.From(0)
34+
.Size(2)
35+
);
36+
Assert.True(result.IsValid, result.ConnectionStatus.ToString());
37+
StringAssert.Contains("preference=_primary", result.ConnectionStatus.RequestUrl);
38+
39+
40+
41+
42+
}
43+
44+
}
45+
}

src/Nest.Tests.Unit/Nest.Tests.Unit.ncrunchproject

Lines changed: 0 additions & 21 deletions
This file was deleted.

src/Nest.Tests.Unit/Search/SearchOptions/SearchOptionTests.cs

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
namespace Nest.Tests.Unit.Search.SearchOptions
55
{
66
[TestFixture]
7-
public class SearchOptionTests
7+
public class SearchOptionTests : BaseJsonTests
88
{
99
[Test]
1010
public void TestFromSize()
@@ -76,9 +76,8 @@ public void TestPreference()
7676
.From(0)
7777
.Size(10)
7878
.Preference("_primary");
79-
var json = TestElasticClient.Serialize(s);
80-
var expected = @"{ from: 0, size: 10, preference: ""_primary"" }";
81-
Assert.True(json.JsonEquals(expected));
79+
var result = this._client.Search(s);
80+
StringAssert.Contains("preference=_primary", result.ConnectionStatus.RequestUrl);
8281
}
8382
[Test]
8483
public void TestExecuteOnPrimary()
@@ -87,9 +86,8 @@ public void TestExecuteOnPrimary()
8786
.From(0)
8887
.Size(10)
8988
.ExecuteOnPrimary();
90-
var json = TestElasticClient.Serialize(s);
91-
var expected = @"{ from: 0, size: 10, preference: ""_primary"" }";
92-
Assert.True(json.JsonEquals(expected));
89+
var result = this._client.Search(s);
90+
StringAssert.Contains("preference=_primary", result.ConnectionStatus.RequestUrl);
9391
}
9492
[Test]
9593
public void TestExecuteOnLocalShard()
@@ -98,9 +96,8 @@ public void TestExecuteOnLocalShard()
9896
.From(0)
9997
.Size(10)
10098
.ExecuteOnLocalShard();
101-
var json = TestElasticClient.Serialize(s);
102-
var expected = @"{ from: 0, size: 10, preference: ""_local"" }";
103-
Assert.True(json.JsonEquals(expected));
99+
var result = this._client.Search(s);
100+
StringAssert.Contains("preference=_local", result.ConnectionStatus.RequestUrl);
104101
}
105102
[Test]
106103
public void TestExecuteOnNode()
@@ -109,10 +106,8 @@ public void TestExecuteOnNode()
109106
.From(0)
110107
.Size(10)
111108
.ExecuteOnNode("somenode");
112-
var json = TestElasticClient.Serialize(s);
113-
var expected = @"{ from: 0, size: 10,
114-
preference: ""_only_node:somenode"" }";
115-
Assert.True(json.JsonEquals(expected));
109+
var result = this._client.Search(s);
110+
StringAssert.Contains("preference=_only_node:somenode", result.ConnectionStatus.RequestUrl);
116111
}
117112
[Test]
118113
public void TestFields()

src/Nest/DSL/SearchDescriptor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public abstract class SearchDescriptorBase
2323
internal bool _AllIndices { get; set; }
2424
internal bool _AllTypes { get; set; }
2525

26-
[JsonProperty(PropertyName = "preference")]
26+
//[JsonProperty(PropertyName = "preference")]
2727
internal string _Preference { get; set; }
2828

2929
internal Func<dynamic, Hit<dynamic>, Type> _ConcreteTypeSelector;

src/Nest/Resolvers/PathResolver.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -464,7 +464,9 @@ private Dictionary<string, string> GetSearchParameters<T>(SearchDescriptor<T> de
464464
if (!descriptor._Routing.IsNullOrEmpty())
465465
dict.Add("routing", descriptor._Routing);
466466
if (!descriptor._Scroll.IsNullOrEmpty())
467-
dict.Add("scroll", descriptor._Scroll);
467+
dict.Add("scroll", descriptor._Scroll);
468+
if (!descriptor._Preference.IsNullOrEmpty())
469+
dict.Add("preference", descriptor._Preference);
468470
this.AddSearchType<T>(descriptor, dict);
469471
return dict;
470472
}

0 commit comments

Comments
 (0)