Skip to content

Commit 05bd814

Browse files
Support index template v2 APIs in NEST (#6101) (#6102)
* Support index template v2 APIs in NEST * Add response Co-authored-by: Steve Gordon <[email protected]>
1 parent 2450113 commit 05bd814

21 files changed

+919
-12
lines changed

src/ApiGenerator/ApiGenerator.csproj

+5-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@
88
<NoWarn>CS1591;NU1701</NoWarn>
99
<PreserveCompilationContext>true</PreserveCompilationContext>
1010
</PropertyGroup>
11+
<ItemGroup>
12+
<Compile Remove="RestSpecification\XPack\**" />
13+
<EmbeddedResource Remove="RestSpecification\XPack\**" />
14+
<None Remove="RestSpecification\XPack\**" />
15+
</ItemGroup>
1116
<ItemGroup>
1217
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="3.1.0-beta3-final" />
1318
<PackageReference Include="Newtonsoft.Json" Version="12.0.1" />
@@ -21,6 +26,5 @@
2126
</ItemGroup>
2227
<ItemGroup>
2328
<Folder Include="RestSpecification\Core" />
24-
<Folder Include="RestSpecification\XPack" />
2529
</ItemGroup>
2630
</Project>

src/ApiGenerator/Configuration/CodeConfiguration.cs

+2-7
Original file line numberDiff line numberDiff line change
@@ -45,14 +45,8 @@ public static class CodeConfiguration
4545
"autoscaling.put_autoscaling_policy.json", // experimental
4646
"autoscaling.delete_autoscaling_policy.json", // experimental
4747

48-
49-
"indices.delete_index_template.json",
50-
"indices.exists_index_template.json",
51-
"indices.get_index_template.json",
52-
"indices.put_index_template.json",
5348
"indices.simulate_index_template.json",
5449
"indices.simulate_template.json",
55-
5650
"searchable_snapshots.stats.json",
5751
"searchable_snapshots.clear_cache.json",
5852
"searchable_snapshots.mount.json",
@@ -89,7 +83,8 @@ public static class CodeConfiguration
8983
{
9084
{ "indices.delete_index_template", "DeleteIndexTemplateV2" },
9185
{ "indices.get_index_template", "GetIndexTemplateV2" },
92-
{ "indices.put_index_template", "PutIndexTemplateV2" }
86+
{ "indices.put_index_template", "PutIndexTemplateV2" },
87+
{ "indices.exists_index_template", "IndexTemplateV2Exists" }
9388
};
9489

9590
/// <summary>

src/Elasticsearch.Net/Api/RequestParameters/RequestParameters.Indices.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -521,8 +521,8 @@ public bool? Local
521521
}
522522
}
523523

524-
///<summary>Request options for ExistsTemplate <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html</para></summary>
525-
public class ExistsIndexTemplateRequestParameters : RequestParameters<ExistsIndexTemplateRequestParameters>
524+
///<summary>Request options for TemplateV2Exists <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html</para></summary>
525+
public class IndexTemplateV2ExistsRequestParameters : RequestParameters<IndexTemplateV2ExistsRequestParameters>
526526
{
527527
public override HttpMethod DefaultHttpMethod => HttpMethod.HEAD;
528528
public override bool SupportsBody => false;

src/Elasticsearch.Net/ElasticLowLevelClient.Indices.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -281,13 +281,13 @@ public Task<TResponse> AliasExistsAsync<TResponse>(string index, string name, Al
281281
///<summary>HEAD on /_index_template/{name} <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html</para></summary>
282282
///<param name = "name">The name of the template</param>
283283
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
284-
public TResponse ExistsTemplateForAll<TResponse>(string name, ExistsIndexTemplateRequestParameters requestParameters = null)
284+
public TResponse TemplateV2ExistsForAll<TResponse>(string name, IndexTemplateV2ExistsRequestParameters requestParameters = null)
285285
where TResponse : class, IElasticsearchResponse, new() => DoRequest<TResponse>(HEAD, Url($"_index_template/{name:name}"), null, RequestParams(requestParameters));
286286
///<summary>HEAD on /_index_template/{name} <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html</para></summary>
287287
///<param name = "name">The name of the template</param>
288288
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
289289
[MapsApi("indices.exists_index_template", "name")]
290-
public Task<TResponse> ExistsTemplateForAllAsync<TResponse>(string name, ExistsIndexTemplateRequestParameters requestParameters = null, CancellationToken ctx = default)
290+
public Task<TResponse> TemplateV2ExistsForAllAsync<TResponse>(string name, IndexTemplateV2ExistsRequestParameters requestParameters = null, CancellationToken ctx = default)
291291
where TResponse : class, IElasticsearchResponse, new() => DoRequestAsync<TResponse>(HEAD, Url($"_index_template/{name:name}"), ctx, null, RequestParams(requestParameters));
292292
///<summary>HEAD on /_template/{name} <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html</para></summary>
293293
///<param name = "name">The comma separated names of the index templates</param>

src/Nest/Descriptors.Indices.cs

+107
Original file line numberDiff line numberDiff line change
@@ -388,6 +388,31 @@ protected DeleteDataStreamDescriptor(): base()
388388
public DeleteDataStreamDescriptor ExpandWildcards(ExpandWildcards? expandwildcards) => Qs("expand_wildcards", expandwildcards);
389389
}
390390

391+
///<summary>Descriptor for DeleteTemplateV2 <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html</para></summary>
392+
public partial class DeleteIndexTemplateV2Descriptor : RequestDescriptorBase<DeleteIndexTemplateV2Descriptor, DeleteIndexTemplateV2RequestParameters, IDeleteIndexTemplateV2Request>, IDeleteIndexTemplateV2Request
393+
{
394+
internal override ApiUrls ApiUrls => ApiUrlsLookups.IndicesDeleteTemplateV2;
395+
///<summary>/_index_template/{name}</summary>
396+
///<param name = "name">this parameter is required</param>
397+
public DeleteIndexTemplateV2Descriptor(Name name): base(r => r.Required("name", name))
398+
{
399+
}
400+
401+
///<summary>Used for serialization purposes, making sure we have a parameterless constructor</summary>
402+
[SerializationConstructor]
403+
protected DeleteIndexTemplateV2Descriptor(): base()
404+
{
405+
}
406+
407+
// values part of the url path
408+
Name IDeleteIndexTemplateV2Request.Name => Self.RouteValues.Get<Name>("name");
409+
// Request parameters
410+
///<summary>Specify timeout for connection to master</summary>
411+
public DeleteIndexTemplateV2Descriptor MasterTimeout(Time mastertimeout) => Qs("master_timeout", mastertimeout);
412+
///<summary>Explicit operation timeout</summary>
413+
public DeleteIndexTemplateV2Descriptor Timeout(Time timeout) => Qs("timeout", timeout);
414+
}
415+
391416
///<summary>Descriptor for DeleteTemplate <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html</para></summary>
392417
public partial class DeleteIndexTemplateDescriptor : RequestDescriptorBase<DeleteIndexTemplateDescriptor, DeleteIndexTemplateRequestParameters, IDeleteIndexTemplateRequest>, IDeleteIndexTemplateRequest
393418
{
@@ -497,6 +522,33 @@ public AliasExistsDescriptor Index<TOther>()
497522
public AliasExistsDescriptor Local(bool? local = true) => Qs("local", local);
498523
}
499524

525+
///<summary>Descriptor for TemplateV2Exists <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html</para></summary>
526+
public partial class IndexTemplateV2ExistsDescriptor : RequestDescriptorBase<IndexTemplateV2ExistsDescriptor, IndexTemplateV2ExistsRequestParameters, IIndexTemplateV2ExistsRequest>, IIndexTemplateV2ExistsRequest
527+
{
528+
internal override ApiUrls ApiUrls => ApiUrlsLookups.IndicesTemplateV2Exists;
529+
///<summary>/_index_template/{name}</summary>
530+
///<param name = "name">this parameter is required</param>
531+
public IndexTemplateV2ExistsDescriptor(Name name): base(r => r.Required("name", name))
532+
{
533+
}
534+
535+
///<summary>Used for serialization purposes, making sure we have a parameterless constructor</summary>
536+
[SerializationConstructor]
537+
protected IndexTemplateV2ExistsDescriptor(): base()
538+
{
539+
}
540+
541+
// values part of the url path
542+
Name IIndexTemplateV2ExistsRequest.Name => Self.RouteValues.Get<Name>("name");
543+
// Request parameters
544+
///<summary>Return settings in flat format (default: false)</summary>
545+
public IndexTemplateV2ExistsDescriptor FlatSettings(bool? flatsettings = true) => Qs("flat_settings", flatsettings);
546+
///<summary>Return local information, do not retrieve the state from master node (default: false)</summary>
547+
public IndexTemplateV2ExistsDescriptor Local(bool? local = true) => Qs("local", local);
548+
///<summary>Explicit operation timeout for connection to master node</summary>
549+
public IndexTemplateV2ExistsDescriptor MasterTimeout(Time mastertimeout) => Qs("master_timeout", mastertimeout);
550+
}
551+
500552
///<summary>Descriptor for TemplateExists <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html</para></summary>
501553
public partial class IndexTemplateExistsDescriptor : RequestDescriptorBase<IndexTemplateExistsDescriptor, IndexTemplateExistsRequestParameters, IIndexTemplateExistsRequest>, IIndexTemplateExistsRequest
502554
{
@@ -876,6 +928,34 @@ public GetFieldMappingDescriptor<TDocument> Index<TOther>()
876928
public GetFieldMappingDescriptor<TDocument> Local(bool? local = true) => Qs("local", local);
877929
}
878930

931+
///<summary>Descriptor for GetTemplateV2 <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html</para></summary>
932+
public partial class GetIndexTemplateV2Descriptor : RequestDescriptorBase<GetIndexTemplateV2Descriptor, GetIndexTemplateV2RequestParameters, IGetIndexTemplateV2Request>, IGetIndexTemplateV2Request
933+
{
934+
internal override ApiUrls ApiUrls => ApiUrlsLookups.IndicesGetTemplateV2;
935+
///<summary>/_index_template</summary>
936+
public GetIndexTemplateV2Descriptor(): base()
937+
{
938+
}
939+
940+
///<summary>/_index_template/{name}</summary>
941+
///<param name = "name">Optional, accepts null</param>
942+
public GetIndexTemplateV2Descriptor(Name name): base(r => r.Optional("name", name))
943+
{
944+
}
945+
946+
// values part of the url path
947+
Name IGetIndexTemplateV2Request.Name => Self.RouteValues.Get<Name>("name");
948+
///<summary>A pattern that returned template names must match</summary>
949+
public GetIndexTemplateV2Descriptor Name(Name name) => Assign(name, (a, v) => a.RouteValues.Optional("name", v));
950+
// Request parameters
951+
///<summary>Return settings in flat format (default: false)</summary>
952+
public GetIndexTemplateV2Descriptor FlatSettings(bool? flatsettings = true) => Qs("flat_settings", flatsettings);
953+
///<summary>Return local information, do not retrieve the state from master node (default: false)</summary>
954+
public GetIndexTemplateV2Descriptor Local(bool? local = true) => Qs("local", local);
955+
///<summary>Explicit operation timeout for connection to master node</summary>
956+
public GetIndexTemplateV2Descriptor MasterTimeout(Time mastertimeout) => Qs("master_timeout", mastertimeout);
957+
}
958+
879959
///<summary>Descriptor for GetMapping <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-get-mapping.html</para></summary>
880960
public partial class GetMappingDescriptor<TDocument> : RequestDescriptorBase<GetMappingDescriptor<TDocument>, GetMappingRequestParameters, IGetMappingRequest>, IGetMappingRequest
881961
{
@@ -1119,6 +1199,33 @@ public PutAliasDescriptor Index<TOther>()
11191199
public PutAliasDescriptor Timeout(Time timeout) => Qs("timeout", timeout);
11201200
}
11211201

1202+
///<summary>Descriptor for PutTemplateV2 <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html</para></summary>
1203+
public partial class PutIndexTemplateV2Descriptor : RequestDescriptorBase<PutIndexTemplateV2Descriptor, PutIndexTemplateV2RequestParameters, IPutIndexTemplateV2Request>, IPutIndexTemplateV2Request
1204+
{
1205+
internal override ApiUrls ApiUrls => ApiUrlsLookups.IndicesPutTemplateV2;
1206+
///<summary>/_index_template/{name}</summary>
1207+
///<param name = "name">this parameter is required</param>
1208+
public PutIndexTemplateV2Descriptor(Name name): base(r => r.Required("name", name))
1209+
{
1210+
}
1211+
1212+
///<summary>Used for serialization purposes, making sure we have a parameterless constructor</summary>
1213+
[SerializationConstructor]
1214+
protected PutIndexTemplateV2Descriptor(): base()
1215+
{
1216+
}
1217+
1218+
// values part of the url path
1219+
Name IPutIndexTemplateV2Request.Name => Self.RouteValues.Get<Name>("name");
1220+
// Request parameters
1221+
///<summary>User defined reason for creating/updating the index template</summary>
1222+
public PutIndexTemplateV2Descriptor Cause(string cause) => Qs("cause", cause);
1223+
///<summary>Whether the index template should only be added if new or can also replace an existing one</summary>
1224+
public PutIndexTemplateV2Descriptor Create(bool? create = true) => Qs("create", create);
1225+
///<summary>Specify timeout for connection to master</summary>
1226+
public PutIndexTemplateV2Descriptor MasterTimeout(Time mastertimeout) => Qs("master_timeout", mastertimeout);
1227+
}
1228+
11221229
///<summary>Descriptor for PutMapping <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-put-mapping.html</para></summary>
11231230
public partial class PutMappingDescriptor<TDocument> : RequestDescriptorBase<PutMappingDescriptor<TDocument>, PutMappingRequestParameters, IPutMappingRequest<TDocument>>, IPutMappingRequest<TDocument>
11241231
{

0 commit comments

Comments
 (0)