Skip to content

Commit 74efe05

Browse files
committed
Add Machine Learning filter APIs and detector custom rules (#3632)
* Add ML filters APIs This commit adds the Put, Get, Update and Delete filters APIs, required for working with ML detector custom rules * Add ML detector custom rules This commit adds custom rules to machine learning detectors. The name of types used closely follows those used in Elasticsearch source. * Remove "integer" from API generator "integer" is no longer a type used within the spec Relates: #3615
1 parent 0eed92a commit 74efe05

33 files changed

+1654
-15
lines changed

src/CodeGeneration/ApiGenerator/CodeConfiguration.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,6 @@ public static class CodeConfiguration
2626
public static string[] IgnoredApis { get; } =
2727
{
2828
// these API's are not ready for primetime yet
29-
"ml.delete_filter.json",
30-
"ml.get_filters.json",
31-
"ml.put_filter.json",
32-
"ml.update_filter.json",
3329
"rank_eval.json",
3430

3531
// these API's are new and need to be mapped

src/CodeGeneration/ApiGenerator/Domain/ApiQueryParameters.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ public string TypeLowLevel
104104
{
105105
case "boolean": return "bool?";
106106
case "list": return "string[]";
107-
case "integer": return "int?";
107+
case "int": return "int?";
108108
case "date": return "DateTimeOffset?";
109109
case "enum": return $"{ClsName}?";
110110
case "number":

src/Elasticsearch.Net/Domain/RequestParameters/RequestParameters.Generated.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2356,6 +2356,11 @@ public class DeleteExpiredDataRequestParameters : RequestParameters<DeleteExpire
23562356
{
23572357
public override HttpMethod DefaultHttpMethod => HttpMethod.DELETE;
23582358
}
2359+
///<summary>Request options for MlDeleteFilter<pre>TODO</pre></summary>
2360+
public class DeleteFilterRequestParameters : RequestParameters<DeleteFilterRequestParameters>
2361+
{
2362+
public override HttpMethod DefaultHttpMethod => HttpMethod.DELETE;
2363+
}
23592364
///<summary>Request options for MlDeleteForecast<pre>http://www.elastic.co/guide/en/elasticsearch/reference/current/ml-delete-forecast.html</pre></summary>
23602365
public class DeleteForecastRequestParameters : RequestParameters<DeleteForecastRequestParameters>
23612366
{
@@ -2431,6 +2436,15 @@ public class GetDatafeedStatsRequestParameters : RequestParameters<GetDatafeedSt
24312436
///<summary>Whether to ignore if a wildcard expression matches no datafeeds. (This includes `_all` string or when no datafeeds have been specified)</summary>
24322437
public bool? AllowNoDatafeeds { get => Q<bool?>("allow_no_datafeeds"); set => Q("allow_no_datafeeds", value); }
24332438
}
2439+
///<summary>Request options for MlGetFilters<pre>TODO</pre></summary>
2440+
public class GetFiltersRequestParameters : RequestParameters<GetFiltersRequestParameters>
2441+
{
2442+
public override HttpMethod DefaultHttpMethod => HttpMethod.GET;
2443+
///<summary>skips a number of filters</summary>
2444+
public int? From { get => Q<int?>("from"); set => Q("from", value); }
2445+
///<summary>specifies a max number of filters to get</summary>
2446+
public int? Size { get => Q<int?>("size"); set => Q("size", value); }
2447+
}
24342448
///<summary>Request options for MlGetInfluencers<pre>http://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-influencer.html</pre></summary>
24352449
public class GetInfluencersRequestParameters : RequestParameters<GetInfluencersRequestParameters>
24362450
{
@@ -2509,6 +2523,11 @@ public class PutDatafeedRequestParameters : RequestParameters<PutDatafeedRequest
25092523
{
25102524
public override HttpMethod DefaultHttpMethod => HttpMethod.PUT;
25112525
}
2526+
///<summary>Request options for MlPutFilter<pre>TODO</pre></summary>
2527+
public class PutFilterRequestParameters : RequestParameters<PutFilterRequestParameters>
2528+
{
2529+
public override HttpMethod DefaultHttpMethod => HttpMethod.PUT;
2530+
}
25122531
///<summary>Request options for MlPutJob<pre>http://www.elastic.co/guide/en/elasticsearch/reference/current/ml-put-job.html</pre></summary>
25132532
public class PutJobRequestParameters : RequestParameters<PutJobRequestParameters>
25142533
{
@@ -2536,6 +2555,11 @@ public class UpdateDatafeedRequestParameters : RequestParameters<UpdateDatafeedR
25362555
{
25372556
public override HttpMethod DefaultHttpMethod => HttpMethod.POST;
25382557
}
2558+
///<summary>Request options for MlUpdateFilter<pre>TODO</pre></summary>
2559+
public class UpdateFilterRequestParameters : RequestParameters<UpdateFilterRequestParameters>
2560+
{
2561+
public override HttpMethod DefaultHttpMethod => HttpMethod.POST;
2562+
}
25392563
///<summary>Request options for MlUpdateJob<pre>http://www.elastic.co/guide/en/elasticsearch/reference/current/ml-update-job.html</pre></summary>
25402564
public class UpdateJobRequestParameters : RequestParameters<UpdateJobRequestParameters>
25412565
{

src/Elasticsearch.Net/ElasticLowLevelClient.Generated.cs

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2844,6 +2844,16 @@ public TResponse MlDeleteExpiredData<TResponse>(DeleteExpiredDataRequestParamete
28442844
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
28452845
public Task<TResponse> MlDeleteExpiredDataAsync<TResponse>(DeleteExpiredDataRequestParameters requestParameters = null, CancellationToken ctx = default(CancellationToken))
28462846
where TResponse : class, IElasticsearchResponse, new() => this.DoRequestAsync<TResponse>(DELETE, Url($"_ml/_delete_expired_data"), ctx, null, _params(requestParameters));
2847+
///<summary>DELETE on /_ml/filters/{filter_id} <para>TODO</para></summary>
2848+
///<param name="filter_id">The ID of the filter to delete</param>
2849+
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
2850+
public TResponse MlDeleteFilter<TResponse>(string filter_id, DeleteFilterRequestParameters requestParameters = null)
2851+
where TResponse : class, IElasticsearchResponse, new() => this.DoRequest<TResponse>(DELETE, Url($"_ml/filters/{filter_id.NotNull("filter_id")}"), null, _params(requestParameters));
2852+
///<summary>DELETE on /_ml/filters/{filter_id} <para>TODO</para></summary>
2853+
///<param name="filter_id">The ID of the filter to delete</param>
2854+
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
2855+
public Task<TResponse> MlDeleteFilterAsync<TResponse>(string filter_id, DeleteFilterRequestParameters requestParameters = null, CancellationToken ctx = default(CancellationToken))
2856+
where TResponse : class, IElasticsearchResponse, new() => this.DoRequestAsync<TResponse>(DELETE, Url($"_ml/filters/{filter_id.NotNull("filter_id")}"), ctx, null, _params(requestParameters));
28472857
///<summary>DELETE on /_ml/anomaly_detectors/{job_id}/_forecast/{forecast_id} <para>http://www.elastic.co/guide/en/elasticsearch/reference/current/ml-delete-forecast.html</para></summary>
28482858
///<param name="job_id">The ID of the job from which to delete forecasts</param>
28492859
///<param name="forecast_id">The ID of the forecast to delete, can be comma delimited list or `_all`</param>
@@ -3082,6 +3092,24 @@ public TResponse MlGetDatafeedStats<TResponse>(GetDatafeedStatsRequestParameters
30823092
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
30833093
public Task<TResponse> MlGetDatafeedStatsAsync<TResponse>(GetDatafeedStatsRequestParameters requestParameters = null, CancellationToken ctx = default(CancellationToken))
30843094
where TResponse : class, IElasticsearchResponse, new() => this.DoRequestAsync<TResponse>(GET, Url($"_ml/datafeeds/_stats"), ctx, null, _params(requestParameters));
3095+
///<summary>GET on /_ml/filters <para>TODO</para></summary>
3096+
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
3097+
public TResponse MlGetFilters<TResponse>(GetFiltersRequestParameters requestParameters = null)
3098+
where TResponse : class, IElasticsearchResponse, new() => this.DoRequest<TResponse>(GET, Url($"_ml/filters"), null, _params(requestParameters));
3099+
///<summary>GET on /_ml/filters <para>TODO</para></summary>
3100+
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
3101+
public Task<TResponse> MlGetFiltersAsync<TResponse>(GetFiltersRequestParameters requestParameters = null, CancellationToken ctx = default(CancellationToken))
3102+
where TResponse : class, IElasticsearchResponse, new() => this.DoRequestAsync<TResponse>(GET, Url($"_ml/filters"), ctx, null, _params(requestParameters));
3103+
///<summary>GET on /_ml/filters/{filter_id} <para>TODO</para></summary>
3104+
///<param name="filter_id">The ID of the filter to fetch</param>
3105+
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
3106+
public TResponse MlGetFilters<TResponse>(string filter_id, GetFiltersRequestParameters requestParameters = null)
3107+
where TResponse : class, IElasticsearchResponse, new() => this.DoRequest<TResponse>(GET, Url($"_ml/filters/{filter_id.NotNull("filter_id")}"), null, _params(requestParameters));
3108+
///<summary>GET on /_ml/filters/{filter_id} <para>TODO</para></summary>
3109+
///<param name="filter_id">The ID of the filter to fetch</param>
3110+
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
3111+
public Task<TResponse> MlGetFiltersAsync<TResponse>(string filter_id, GetFiltersRequestParameters requestParameters = null, CancellationToken ctx = default(CancellationToken))
3112+
where TResponse : class, IElasticsearchResponse, new() => this.DoRequestAsync<TResponse>(GET, Url($"_ml/filters/{filter_id.NotNull("filter_id")}"), ctx, null, _params(requestParameters));
30853113
///<summary>GET on /_ml/anomaly_detectors/{job_id}/results/influencers <para>http://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-influencer.html</para></summary>
30863114
///<param name="job_id"></param>
30873115
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
@@ -3320,6 +3348,18 @@ public TResponse MlPutDatafeed<TResponse>(string datafeed_id, PostData body, Put
33203348
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
33213349
public Task<TResponse> MlPutDatafeedAsync<TResponse>(string datafeed_id, PostData body, PutDatafeedRequestParameters requestParameters = null, CancellationToken ctx = default(CancellationToken))
33223350
where TResponse : class, IElasticsearchResponse, new() => this.DoRequestAsync<TResponse>(PUT, Url($"_ml/datafeeds/{datafeed_id.NotNull("datafeed_id")}"), ctx, body, _params(requestParameters));
3351+
///<summary>PUT on /_ml/filters/{filter_id} <para>TODO</para></summary>
3352+
///<param name="filter_id">The ID of the filter to create</param>
3353+
///<param name="body">The filter details</param>
3354+
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
3355+
public TResponse MlPutFilter<TResponse>(string filter_id, PostData body, PutFilterRequestParameters requestParameters = null)
3356+
where TResponse : class, IElasticsearchResponse, new() => this.DoRequest<TResponse>(PUT, Url($"_ml/filters/{filter_id.NotNull("filter_id")}"), body, _params(requestParameters));
3357+
///<summary>PUT on /_ml/filters/{filter_id} <para>TODO</para></summary>
3358+
///<param name="filter_id">The ID of the filter to create</param>
3359+
///<param name="body">The filter details</param>
3360+
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
3361+
public Task<TResponse> MlPutFilterAsync<TResponse>(string filter_id, PostData body, PutFilterRequestParameters requestParameters = null, CancellationToken ctx = default(CancellationToken))
3362+
where TResponse : class, IElasticsearchResponse, new() => this.DoRequestAsync<TResponse>(PUT, Url($"_ml/filters/{filter_id.NotNull("filter_id")}"), ctx, body, _params(requestParameters));
33233363
///<summary>PUT on /_ml/anomaly_detectors/{job_id} <para>http://www.elastic.co/guide/en/elasticsearch/reference/current/ml-put-job.html</para></summary>
33243364
///<param name="job_id">The ID of the job to create</param>
33253365
///<param name="body">The job</param>
@@ -3380,6 +3420,18 @@ public TResponse MlUpdateDatafeed<TResponse>(string datafeed_id, PostData body,
33803420
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
33813421
public Task<TResponse> MlUpdateDatafeedAsync<TResponse>(string datafeed_id, PostData body, UpdateDatafeedRequestParameters requestParameters = null, CancellationToken ctx = default(CancellationToken))
33823422
where TResponse : class, IElasticsearchResponse, new() => this.DoRequestAsync<TResponse>(POST, Url($"_ml/datafeeds/{datafeed_id.NotNull("datafeed_id")}/_update"), ctx, body, _params(requestParameters));
3423+
///<summary>POST on /_ml/filters/{filter_id}/_update <para>TODO</para></summary>
3424+
///<param name="filter_id">The ID of the filter to update</param>
3425+
///<param name="body">The filter update</param>
3426+
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
3427+
public TResponse MlUpdateFilter<TResponse>(string filter_id, PostData body, UpdateFilterRequestParameters requestParameters = null)
3428+
where TResponse : class, IElasticsearchResponse, new() => this.DoRequest<TResponse>(POST, Url($"_ml/filters/{filter_id.NotNull("filter_id")}/_update"), body, _params(requestParameters));
3429+
///<summary>POST on /_ml/filters/{filter_id}/_update <para>TODO</para></summary>
3430+
///<param name="filter_id">The ID of the filter to update</param>
3431+
///<param name="body">The filter update</param>
3432+
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
3433+
public Task<TResponse> MlUpdateFilterAsync<TResponse>(string filter_id, PostData body, UpdateFilterRequestParameters requestParameters = null, CancellationToken ctx = default(CancellationToken))
3434+
where TResponse : class, IElasticsearchResponse, new() => this.DoRequestAsync<TResponse>(POST, Url($"_ml/filters/{filter_id.NotNull("filter_id")}/_update"), ctx, body, _params(requestParameters));
33833435
///<summary>POST on /_ml/anomaly_detectors/{job_id}/_update <para>http://www.elastic.co/guide/en/elasticsearch/reference/current/ml-update-job.html</para></summary>
33843436
///<param name="job_id">The ID of the job to create</param>
33853437
///<param name="body">The job update settings</param>

0 commit comments

Comments
 (0)