Skip to content

Commit 25fc219

Browse files
authored
Implement cat.ml_data_frame_analytics (#4565)
Implement cat.ml_data_frame_analytics
1 parent b625979 commit 25fc219

File tree

11 files changed

+322
-8
lines changed

11 files changed

+322
-8
lines changed

src/ApiGenerator/Configuration/CodeConfiguration.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ public static class CodeConfiguration
5858
"async_search.delete.json",
5959
"async_search.get.json",
6060
"async_search.submit.json",
61-
"cat.ml_data_frame_analytics.json",
6261
"cluster.delete_component_template.json",
6362
"cluster.get_component_template.json",
6463
"cluster.put_component_template.json",

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -526,8 +526,8 @@ public bool? Verbose
526526
}
527527
}
528528

529-
///<summary>Request options for MlDataFrameAnalytics <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html</para></summary>
530-
public class MlDataFrameAnalyticsRequestParameters : RequestParameters<MlDataFrameAnalyticsRequestParameters>
529+
///<summary>Request options for DataFrameAnalytics <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html</para></summary>
530+
public class CatDataFrameAnalyticsRequestParameters : RequestParameters<CatDataFrameAnalyticsRequestParameters>
531531
{
532532
public override HttpMethod DefaultHttpMethod => HttpMethod.GET;
533533
///<summary>Whether to ignore if a wildcard expression matches no configs. (This includes `_all` string or when no configs have been specified)</summary>

src/Elasticsearch.Net/ElasticLowLevelClient.Cat.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -178,23 +178,23 @@ public Task<TResponse> MasterAsync<TResponse>(CatMasterRequestParameters request
178178
where TResponse : class, IElasticsearchResponse, new() => DoRequestAsync<TResponse>(GET, "_cat/master", ctx, null, RequestParams(requestParameters));
179179
///<summary>GET on /_cat/ml/data_frame/analytics <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html</para></summary>
180180
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
181-
public TResponse MlDataFrameAnalytics<TResponse>(MlDataFrameAnalyticsRequestParameters requestParameters = null)
181+
public TResponse DataFrameAnalytics<TResponse>(CatDataFrameAnalyticsRequestParameters requestParameters = null)
182182
where TResponse : class, IElasticsearchResponse, new() => DoRequest<TResponse>(GET, "_cat/ml/data_frame/analytics", null, RequestParams(requestParameters));
183183
///<summary>GET on /_cat/ml/data_frame/analytics <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html</para></summary>
184184
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
185185
[MapsApi("cat.ml_data_frame_analytics", "")]
186-
public Task<TResponse> MlDataFrameAnalyticsAsync<TResponse>(MlDataFrameAnalyticsRequestParameters requestParameters = null, CancellationToken ctx = default)
186+
public Task<TResponse> DataFrameAnalyticsAsync<TResponse>(CatDataFrameAnalyticsRequestParameters requestParameters = null, CancellationToken ctx = default)
187187
where TResponse : class, IElasticsearchResponse, new() => DoRequestAsync<TResponse>(GET, "_cat/ml/data_frame/analytics", ctx, null, RequestParams(requestParameters));
188188
///<summary>GET on /_cat/ml/data_frame/analytics/{id} <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html</para></summary>
189189
///<param name = "id">The ID of the data frame analytics to fetch</param>
190190
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
191-
public TResponse MlDataFrameAnalytics<TResponse>(string id, MlDataFrameAnalyticsRequestParameters requestParameters = null)
191+
public TResponse DataFrameAnalytics<TResponse>(string id, CatDataFrameAnalyticsRequestParameters requestParameters = null)
192192
where TResponse : class, IElasticsearchResponse, new() => DoRequest<TResponse>(GET, Url($"_cat/ml/data_frame/analytics/{id:id}"), null, RequestParams(requestParameters));
193193
///<summary>GET on /_cat/ml/data_frame/analytics/{id} <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html</para></summary>
194194
///<param name = "id">The ID of the data frame analytics to fetch</param>
195195
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
196196
[MapsApi("cat.ml_data_frame_analytics", "id")]
197-
public Task<TResponse> MlDataFrameAnalyticsAsync<TResponse>(string id, MlDataFrameAnalyticsRequestParameters requestParameters = null, CancellationToken ctx = default)
197+
public Task<TResponse> DataFrameAnalyticsAsync<TResponse>(string id, CatDataFrameAnalyticsRequestParameters requestParameters = null, CancellationToken ctx = default)
198198
where TResponse : class, IElasticsearchResponse, new() => DoRequestAsync<TResponse>(GET, Url($"_cat/ml/data_frame/analytics/{id:id}"), ctx, null, RequestParams(requestParameters));
199199
///<summary>GET on /_cat/ml/datafeeds <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-datafeeds.html</para></summary>
200200
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
using System.Runtime.Serialization;
2+
using Elasticsearch.Net.Utf8Json;
3+
4+
namespace Nest
5+
{
6+
[DataContract]
7+
public class CatDataFrameAnalyticsRecord : ICatRecord
8+
{
9+
/// <summary>
10+
/// Contains messages relating to the selection of a node.
11+
/// </summary>
12+
[DataMember(Name="assignment_explanation")]
13+
public string AssignmentExplanation { get; internal set; }
14+
15+
/// <summary>
16+
/// (Default)The time when the data frame analytics job was created.
17+
/// </summary>
18+
[DataMember(Name="create_time")]
19+
public string CreateTime { get; internal set; }
20+
21+
/// <summary>
22+
/// A description of the job.
23+
/// </summary>
24+
[DataMember(Name="description")]
25+
public string Description { get; internal set; }
26+
27+
/// <summary>
28+
/// Name of the destination index.
29+
/// </summary>
30+
[DataMember(Name="dest_index")]
31+
public string DestinationIndex { get; internal set; }
32+
33+
/// <summary>
34+
/// Contains messages about the reason why a data frame analytics job failed.
35+
/// </summary>
36+
[DataMember(Name="failure_reason")]
37+
public string FailureReason { get; internal set; }
38+
39+
/// <summary>
40+
/// (Default) Identifier for the data frame analytics job.
41+
/// </summary>
42+
[DataMember(Name="id")]
43+
public string Id { get; internal set; }
44+
45+
/// <summary>
46+
/// (Default)The approximate maximum amount of memory resources that are permitted for the data frame analytics job.
47+
/// </summary>
48+
[DataMember(Name="model_memory_limit")]
49+
public string ModelMemoryLimit { get; internal set; }
50+
51+
/// <summary>
52+
/// The network address of the node that the data frame analytics job is assigned to.
53+
/// </summary>
54+
[DataMember(Name="node.address")]
55+
public string NodeAddress { get; internal set; }
56+
57+
/// <summary>
58+
/// The ephemeral ID of the node that the data frame analytics job is assigned to.
59+
/// </summary>
60+
[DataMember(Name="node.ephemeral_id")]
61+
public string NodeEphemeralId { get; internal set; }
62+
63+
/// <summary>
64+
/// The unique identifier of the node that the data frame analytics job is assigned to.
65+
/// </summary>
66+
[DataMember(Name="node.id")]
67+
public string NodeId { get; internal set; }
68+
69+
/// <summary>
70+
/// The name of the node that the data frame analytics job is assigned to.
71+
/// </summary>
72+
[DataMember(Name="node.name")]
73+
public string NodeName { get; internal set; }
74+
75+
/// <summary>
76+
/// The progress report of the data frame analytics job by phase.
77+
/// </summary>
78+
[DataMember(Name="progress")]
79+
public string Progress { get; internal set; }
80+
81+
/// <summary>
82+
/// Name of the source index.
83+
/// </summary>
84+
[DataMember(Name="source_index")]
85+
public string SourceIndex { get; internal set; }
86+
87+
/// <summary>
88+
/// (Default) Current state of the data frame analytics job.
89+
/// </summary>
90+
[DataMember(Name="state")]
91+
public string State { get; internal set; }
92+
93+
/// <summary>
94+
/// (Default) The type of analysis that the data frame analytics job performs.
95+
/// </summary>
96+
[DataMember(Name="type")]
97+
public string Type { get; internal set; }
98+
99+
/// <summary>
100+
/// The Elasticsearch version number in which the data frame analytics job was created.
101+
/// </summary>
102+
[DataMember(Name="version")]
103+
public string Version { get; internal set; }
104+
}
105+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
namespace Nest
2+
{
3+
[MapsApi("cat.ml_data_frame_analytics.json")]
4+
public partial interface ICatDataFrameAnalyticsRequest { }
5+
6+
public partial class CatDataFrameAnalyticsRequest { }
7+
8+
public partial class CatDataFrameAnalyticsDescriptor { }
9+
}

src/Nest/Descriptors.Cat.cs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,42 @@ public partial class CatMasterDescriptor : RequestDescriptorBase<CatMasterDescri
296296
public CatMasterDescriptor Verbose(bool? verbose = true) => Qs("v", verbose);
297297
}
298298

299+
///<summary>Descriptor for DataFrameAnalytics <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html</para></summary>
300+
public partial class CatDataFrameAnalyticsDescriptor : RequestDescriptorBase<CatDataFrameAnalyticsDescriptor, CatDataFrameAnalyticsRequestParameters, ICatDataFrameAnalyticsRequest>, ICatDataFrameAnalyticsRequest
301+
{
302+
internal override ApiUrls ApiUrls => ApiUrlsLookups.CatDataFrameAnalytics;
303+
///<summary>/_cat/ml/data_frame/analytics</summary>
304+
public CatDataFrameAnalyticsDescriptor(): base()
305+
{
306+
}
307+
308+
///<summary>/_cat/ml/data_frame/analytics/{id}</summary>
309+
///<param name = "id">Optional, accepts null</param>
310+
public CatDataFrameAnalyticsDescriptor(Id id): base(r => r.Optional("id", id))
311+
{
312+
}
313+
314+
// values part of the url path
315+
Id ICatDataFrameAnalyticsRequest.Id => Self.RouteValues.Get<Id>("id");
316+
///<summary>The ID of the data frame analytics to fetch</summary>
317+
public CatDataFrameAnalyticsDescriptor Id(Id id) => Assign(id, (a, v) => a.RouteValues.Optional("id", v));
318+
// Request parameters
319+
///<summary>Whether to ignore if a wildcard expression matches no configs. (This includes `_all` string or when no configs have been specified)</summary>
320+
public CatDataFrameAnalyticsDescriptor AllowNoMatch(bool? allownomatch = true) => Qs("allow_no_match", allownomatch);
321+
///<summary>The unit in which to display byte values</summary>
322+
public CatDataFrameAnalyticsDescriptor Bytes(Bytes? bytes) => Qs("bytes", bytes);
323+
///<summary>a short version of the Accept header, e.g. json, yaml</summary>
324+
public CatDataFrameAnalyticsDescriptor Format(string format) => Qs("format", format);
325+
///<summary>Comma-separated list of column names to display</summary>
326+
public CatDataFrameAnalyticsDescriptor Headers(params string[] headers) => Qs("h", headers);
327+
///<summary>Return help information</summary>
328+
public CatDataFrameAnalyticsDescriptor Help(bool? help = true) => Qs("help", help);
329+
///<summary>Comma-separated list of column names or column aliases to sort by</summary>
330+
public CatDataFrameAnalyticsDescriptor SortByColumns(params string[] sortbycolumns) => Qs("s", sortbycolumns);
331+
///<summary>Verbose mode. Display column headers</summary>
332+
public CatDataFrameAnalyticsDescriptor Verbose(bool? verbose = true) => Qs("v", verbose);
333+
}
334+
299335
///<summary>Descriptor for Datafeeds <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-datafeeds.html</para></summary>
300336
public partial class CatDatafeedsDescriptor : RequestDescriptorBase<CatDatafeedsDescriptor, CatDatafeedsRequestParameters, ICatDatafeedsRequest>, ICatDatafeedsRequest
301337
{

src/Nest/ElasticClient.Cat.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,30 @@ internal CatNamespace(ElasticClient client): base(client)
229229
/// </summary>
230230
public Task<CatResponse<CatMasterRecord>> MasterAsync(ICatMasterRequest request, CancellationToken ct = default) => DoCatAsync<ICatMasterRequest, CatMasterRequestParameters, CatMasterRecord>(request, ct);
231231
/// <summary>
232+
/// <c>GET</c> request to the <c>cat.ml_data_frame_analytics</c> API, read more about this API online:
233+
/// <para></para>
234+
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html</a>
235+
/// </summary>
236+
public CatResponse<CatDataFrameAnalyticsRecord> DataFrameAnalytics(Func<CatDataFrameAnalyticsDescriptor, ICatDataFrameAnalyticsRequest> selector = null) => DataFrameAnalytics(selector.InvokeOrDefault(new CatDataFrameAnalyticsDescriptor()));
237+
/// <summary>
238+
/// <c>GET</c> request to the <c>cat.ml_data_frame_analytics</c> API, read more about this API online:
239+
/// <para></para>
240+
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html</a>
241+
/// </summary>
242+
public Task<CatResponse<CatDataFrameAnalyticsRecord>> DataFrameAnalyticsAsync(Func<CatDataFrameAnalyticsDescriptor, ICatDataFrameAnalyticsRequest> selector = null, CancellationToken ct = default) => DataFrameAnalyticsAsync(selector.InvokeOrDefault(new CatDataFrameAnalyticsDescriptor()), ct);
243+
/// <summary>
244+
/// <c>GET</c> request to the <c>cat.ml_data_frame_analytics</c> API, read more about this API online:
245+
/// <para></para>
246+
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html</a>
247+
/// </summary>
248+
public CatResponse<CatDataFrameAnalyticsRecord> DataFrameAnalytics(ICatDataFrameAnalyticsRequest request) => DoCat<ICatDataFrameAnalyticsRequest, CatDataFrameAnalyticsRequestParameters, CatDataFrameAnalyticsRecord>(request);
249+
/// <summary>
250+
/// <c>GET</c> request to the <c>cat.ml_data_frame_analytics</c> API, read more about this API online:
251+
/// <para></para>
252+
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html</a>
253+
/// </summary>
254+
public Task<CatResponse<CatDataFrameAnalyticsRecord>> DataFrameAnalyticsAsync(ICatDataFrameAnalyticsRequest request, CancellationToken ct = default) => DoCatAsync<ICatDataFrameAnalyticsRequest, CatDataFrameAnalyticsRequestParameters, CatDataFrameAnalyticsRecord>(request, ct);
255+
/// <summary>
232256
/// <c>GET</c> request to the <c>cat.ml_datafeeds</c> API, read more about this API online:
233257
/// <para></para>
234258
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-datafeeds.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-datafeeds.html</a>

src/Nest/Requests.Cat.cs

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -680,6 +680,90 @@ public bool? Verbose
680680
}
681681
}
682682

683+
[InterfaceDataContract]
684+
public partial interface ICatDataFrameAnalyticsRequest : IRequest<CatDataFrameAnalyticsRequestParameters>
685+
{
686+
[IgnoreDataMember]
687+
Id Id
688+
{
689+
get;
690+
}
691+
}
692+
693+
///<summary>Request for DataFrameAnalytics <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-dfanalytics.html</para></summary>
694+
public partial class CatDataFrameAnalyticsRequest : PlainRequestBase<CatDataFrameAnalyticsRequestParameters>, ICatDataFrameAnalyticsRequest
695+
{
696+
protected ICatDataFrameAnalyticsRequest Self => this;
697+
internal override ApiUrls ApiUrls => ApiUrlsLookups.CatDataFrameAnalytics;
698+
///<summary>/_cat/ml/data_frame/analytics</summary>
699+
public CatDataFrameAnalyticsRequest(): base()
700+
{
701+
}
702+
703+
///<summary>/_cat/ml/data_frame/analytics/{id}</summary>
704+
///<param name = "id">Optional, accepts null</param>
705+
public CatDataFrameAnalyticsRequest(Id id): base(r => r.Optional("id", id))
706+
{
707+
}
708+
709+
// values part of the url path
710+
[IgnoreDataMember]
711+
Id ICatDataFrameAnalyticsRequest.Id => Self.RouteValues.Get<Id>("id");
712+
// Request parameters
713+
///<summary>Whether to ignore if a wildcard expression matches no configs. (This includes `_all` string or when no configs have been specified)</summary>
714+
public bool? AllowNoMatch
715+
{
716+
get => Q<bool? >("allow_no_match");
717+
set => Q("allow_no_match", value);
718+
}
719+
720+
///<summary>The unit in which to display byte values</summary>
721+
public Bytes? Bytes
722+
{
723+
get => Q<Bytes? >("bytes");
724+
set => Q("bytes", value);
725+
}
726+
727+
///<summary>a short version of the Accept header, e.g. json, yaml</summary>
728+
public string Format
729+
{
730+
get => Q<string>("format");
731+
set
732+
{
733+
Q("format", value);
734+
SetAcceptHeader(value);
735+
}
736+
}
737+
738+
///<summary>Comma-separated list of column names to display</summary>
739+
public string[] Headers
740+
{
741+
get => Q<string[]>("h");
742+
set => Q("h", value);
743+
}
744+
745+
///<summary>Return help information</summary>
746+
public bool? Help
747+
{
748+
get => Q<bool? >("help");
749+
set => Q("help", value);
750+
}
751+
752+
///<summary>Comma-separated list of column names or column aliases to sort by</summary>
753+
public string[] SortByColumns
754+
{
755+
get => Q<string[]>("s");
756+
set => Q("s", value);
757+
}
758+
759+
///<summary>Verbose mode. Display column headers</summary>
760+
public bool? Verbose
761+
{
762+
get => Q<bool? >("v");
763+
set => Q("v", value);
764+
}
765+
}
766+
683767
[InterfaceDataContract]
684768
public partial interface ICatDatafeedsRequest : IRequest<CatDatafeedsRequestParameters>
685769
{

src/Nest/_Generated/ApiUrlsLookup.generated.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ internal static class ApiUrlsLookups
3131
internal static ApiUrls CatHelp = new ApiUrls(new[]{"_cat"});
3232
internal static ApiUrls CatIndices = new ApiUrls(new[]{"_cat/indices", "_cat/indices/{index}"});
3333
internal static ApiUrls CatMaster = new ApiUrls(new[]{"_cat/master"});
34-
internal static ApiUrls CatMlDataFrameAnalytics = new ApiUrls(new[]{"_cat/ml/data_frame/analytics", "_cat/ml/data_frame/analytics/{id}"});
34+
internal static ApiUrls CatDataFrameAnalytics = new ApiUrls(new[]{"_cat/ml/data_frame/analytics", "_cat/ml/data_frame/analytics/{id}"});
3535
internal static ApiUrls CatDatafeeds = new ApiUrls(new[]{"_cat/ml/datafeeds", "_cat/ml/datafeeds/{datafeed_id}"});
3636
internal static ApiUrls CatJobs = new ApiUrls(new[]{"_cat/ml/anomaly_detectors", "_cat/ml/anomaly_detectors/{job_id}"});
3737
internal static ApiUrls CatTrainedModels = new ApiUrls(new[]{"_cat/ml/trained_models", "_cat/ml/trained_models/{model_id}"});
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
using Elastic.Xunit.XunitPlumbing;
2+
using Elasticsearch.Net;
3+
using Nest;
4+
using Tests.Core.Extensions;
5+
using Tests.Framework.EndpointTests.TestState;
6+
using Tests.XPack.MachineLearning;
7+
8+
namespace Tests.Cat.CatDataFrameAnalytics
9+
{
10+
[SkipVersion("<7.7.0", "Introduced in 7.7.0")]
11+
public class CatDataFrameAnalyticsApiTests
12+
: MachineLearningIntegrationTestBase<CatResponse<CatDataFrameAnalyticsRecord>, ICatDataFrameAnalyticsRequest, CatDataFrameAnalyticsDescriptor,
13+
CatDataFrameAnalyticsRequest>
14+
{
15+
public CatDataFrameAnalyticsApiTests(MachineLearningCluster cluster, EndpointUsage usage) : base(cluster, usage) { }
16+
17+
protected override bool ExpectIsValid => true;
18+
protected override int ExpectStatusCode => 200;
19+
protected override HttpMethod HttpMethod => HttpMethod.GET;
20+
protected override string UrlPath => "/_cat/ml/data_frame/analytics";
21+
22+
protected override LazyResponses ClientUsage() => Calls(
23+
(client, f) => client.Cat.DataFrameAnalytics(),
24+
(client, f) => client.Cat.DataFrameAnalyticsAsync(),
25+
(client, r) => client.Cat.DataFrameAnalytics(r),
26+
(client, r) => client.Cat.DataFrameAnalyticsAsync(r)
27+
);
28+
29+
protected override void ExpectResponse(CatResponse<CatDataFrameAnalyticsRecord> response) => response.ShouldBeValid();
30+
}
31+
}

0 commit comments

Comments
 (0)