Skip to content

Commit 185d036

Browse files
committed
Modifications to SearchTemplate() to better align with the api endpoint
1 parent b0b9173 commit 185d036

File tree

5 files changed

+69
-175
lines changed

5 files changed

+69
-175
lines changed

src/Nest/DSL/SearchTemplateDescriptor.cs

Lines changed: 32 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,14 @@ public interface ISearchTemplateRequest
5353

5454
Type ClrType { get; }
5555

56-
[JsonProperty(PropertyName = "sort")]
57-
[JsonConverter(typeof(SortCollectionConverter))]
58-
IList<KeyValuePair<PropertyPathMarker, ISort>> Sort { get; set; }
59-
6056
[JsonProperty(PropertyName = "template")]
61-
SearchTemplate Template { get; set; }
57+
string Template { get; set; }
58+
59+
[JsonProperty("file")]
60+
string File { get; set; }
61+
62+
[JsonProperty("id")]
63+
string Id { get; set; }
6264

6365
Func<dynamic, Hit<dynamic>, Type> TypeSelector { get; set; }
6466
}
@@ -68,11 +70,12 @@ public interface ISearchTemplateRequest<T> : ISearchTemplateRequest { }
6870
public partial class SearchTemplateRequest
6971
: QueryPathBase<SearchTemplateRequestParameters>, ISearchTemplateRequest
7072
{
71-
public SearchTemplate Template { get; set; }
73+
public string Template { get; set; }
74+
public string File { get; set; }
75+
public string Id { get; set; }
7276
public IDictionary<string, object> Params { get; set; }
7377
private Type _clrType { get; set; }
7478
Type ISearchTemplateRequest.ClrType { get { return _clrType; } }
75-
public IList<KeyValuePair<PropertyPathMarker, ISort>> Sort { get; set; }
7679
public Func<dynamic, Hit<dynamic>, Type> TypeSelector { get; set; }
7780

7881
protected override void UpdatePathInfo(IConnectionSettingsValues settings, ElasticsearchPathInfo<SearchTemplateRequestParameters> pathInfo)
@@ -85,10 +88,11 @@ public partial class SearchTemplateRequest<T>
8588
: QueryPathBase<SearchTemplateRequestParameters, T>, ISearchTemplateRequest
8689
where T : class
8790
{
88-
public SearchTemplate Template { get; set; }
91+
public string Template { get; set; }
92+
public string File { get; set; }
93+
public string Id { get; set; }
8994
public IDictionary<string, object> Params { get; set; }
9095
public Type ClrType { get { return typeof(T); } }
91-
public IList<KeyValuePair<PropertyPathMarker, ISort>> Sort { get; set; }
9296
public Func<dynamic, Hit<dynamic>, Type> TypeSelector { get; set; }
9397

9498
protected override void UpdatePathInfo(IConnectionSettingsValues settings, ElasticsearchPathInfo<SearchTemplateRequestParameters> pathInfo)
@@ -110,19 +114,31 @@ public partial class SearchTemplateDescriptor<T>
110114
/// </summary>
111115
internal bool _Strict { get; set; }
112116

113-
SearchTemplate ISearchTemplateRequest.Template { get; set; }
117+
string ISearchTemplateRequest.Template { get; set; }
114118

115-
IDictionary<string, object> ISearchTemplateRequest.Params { get; set; }
119+
string ISearchTemplateRequest.File { get; set; }
116120

117-
IList<KeyValuePair<PropertyPathMarker, ISort>> ISearchTemplateRequest.Sort { get; set; }
121+
string ISearchTemplateRequest.Id { get; set; }
122+
123+
IDictionary<string, object> ISearchTemplateRequest.Params { get; set; }
118124

119125
Func<dynamic, Hit<dynamic>, Type> ISearchTemplateRequest.TypeSelector { get; set; }
120126

121-
public SearchTemplateDescriptor<T> Template(Func<TemplateDescriptor, TemplateDescriptor> templateSelector)
127+
public SearchTemplateDescriptor<T> Template(string template)
128+
{
129+
this.Self.Template = template;
130+
return this;
131+
}
132+
133+
public SearchTemplateDescriptor<T> File(string file)
134+
{
135+
this.Self.File = file;
136+
return this;
137+
}
138+
139+
public SearchTemplateDescriptor<T> Id(string id)
122140
{
123-
templateSelector.ThrowIfNull("templateSelector");
124-
var descriptor = templateSelector(new TemplateDescriptor());
125-
this.Self.Template = descriptor.Template;
141+
this.Self.Id = id;
126142
return this;
127143
}
128144

@@ -140,21 +156,6 @@ public SearchTemplateDescriptor<T> Params(Func<FluentDictionary<string, object>,
140156
return this;
141157
}
142158

143-
/// <summary>
144-
/// <para>Sort() allows you to fully describe your sort unlike the SortAscending and SortDescending aliases.
145-
/// </para>
146-
/// </summary>
147-
public SearchTemplateDescriptor<T> Sort(Func<SortFieldDescriptor<T>, IFieldSort> sortSelector)
148-
{
149-
if (Self.Sort == null)
150-
Self.Sort = new List<KeyValuePair<PropertyPathMarker, ISort>>();
151-
152-
sortSelector.ThrowIfNull("sortSelector");
153-
var descriptor = sortSelector(new SortFieldDescriptor<T>());
154-
Self.Sort.Add(new KeyValuePair<PropertyPathMarker, ISort>(descriptor.Field, descriptor));
155-
return this;
156-
}
157-
158159
public SearchTemplateDescriptor<T> ConcreteTypeSelector(Func<dynamic, Hit<dynamic>, Type> typeSelector)
159160
{
160161
Self.TypeSelector = typeSelector;
@@ -166,43 +167,4 @@ protected override void UpdatePathInfo(IConnectionSettingsValues settings, Elast
166167
SearchTemplatePathInfo.Update(pathInfo);
167168
}
168169
}
169-
170-
[JsonObject]
171-
public class SearchTemplate
172-
{
173-
[JsonProperty("file")]
174-
public string File { get; set; }
175-
176-
[JsonProperty("id")]
177-
public string Id { get; set; }
178-
179-
[JsonProperty("query")]
180-
public IQueryContainer Query { get; set; }
181-
}
182-
183-
public class TemplateDescriptor
184-
{
185-
public SearchTemplate Template = new SearchTemplate();
186-
187-
public TemplateDescriptor File(string file)
188-
{
189-
Template.File = file;
190-
return this;
191-
}
192-
193-
public TemplateDescriptor Id(string id)
194-
{
195-
Template.Id = id;
196-
return this;
197-
}
198-
199-
public TemplateDescriptor Query<T>(Func<QueryDescriptor<T>, QueryContainer> query) where T : class
200-
{
201-
query.ThrowIfNull("query");
202-
var q = new QueryDescriptor<T>();
203-
((IQueryContainer)q).IsStrict = true;
204-
Template.Query = query(q);
205-
return this;
206-
}
207-
}
208170
}

src/Tests/Nest.Tests.Integration/Nest.Tests.Integration.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,7 @@
232232
<Compile Include="Search\QueryResponseMapperTests.cs" />
233233
<Compile Include="Search\ScriptFields\ScriptFieldsTest.cs" />
234234
<Compile Include="Search\Scroll\ScrollTests.cs" />
235+
<Compile Include="Search\Template\SearchTemplateTests.cs" />
235236
<Compile Include="Search\SearchTypeTests\SearchTypeScanTests.cs" />
236237
<Compile Include="Search\SearchTypeTests\SearchTypeCountTests.cs" />
237238
<Compile Include="Search\SearchTypeTests\SearchTypeTests.cs" />
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
using FluentAssertions;
2+
using Nest.Tests.MockData.Domain;
3+
using Newtonsoft.Json.Linq;
4+
using NUnit.Framework;
5+
using System;
6+
using System.Collections.Generic;
7+
using System.Linq;
8+
using System.Text;
9+
using System.Threading.Tasks;
10+
11+
namespace Nest.Tests.Integration.Search.Template
12+
{
13+
[TestFixture]
14+
public class SearchTemplateTests : IntegrationTests
15+
{
16+
[Test]
17+
public void SearchTemplateByQuery()
18+
{
19+
var template = "{\"from\": \"{{my_from}}\",\"size\": \"{{my_size}}\",\"query\": { \"match\": {\"{{my_field}}\": {\"query\": \"{{my_value}}\" }}}}";
20+
21+
var result = this.Client.SearchTemplate<ElasticsearchProject>(s => s
22+
.Template(template)
23+
.Params(p => p
24+
.Add("my_from", 0)
25+
.Add("my_size", 5)
26+
.Add("my_field", "name")
27+
.Add("my_value", "em-elasticsearch")
28+
)
29+
);
30+
31+
result.IsValid.Should().BeTrue();
32+
result.Hits.Count().Should().BeGreaterThan(0);
33+
}
34+
}
35+
}
36+

src/Tests/Nest.Tests.Unit/Nest.Tests.Unit.csproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -505,7 +505,6 @@
505505
<Compile Include="Search\Suggest\PhraseSuggestTests.cs" />
506506
<Compile Include="Search\Suggest\TermSuggestTests.cs" />
507507
<Compile Include="Settings\UsePrettyResponseTests.cs" />
508-
<Compile Include="Template\TemplateSpikeTests.cs" />
509508
<Compile Include="TestElasticClient.cs" />
510509
<Compile Include="Core\Update\UpdateTests.cs" />
511510
</ItemGroup>

src/Tests/Nest.Tests.Unit/Template/TemplateSpikeTests.cs

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

0 commit comments

Comments
 (0)