Skip to content

Commit

Permalink
Add Machine Learning filter APIs and detector custom rules (#3632)
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
russcam committed May 8, 2019
1 parent 0eed92a commit 74efe05
Show file tree
Hide file tree
Showing 33 changed files with 1,654 additions and 15 deletions.
4 changes: 0 additions & 4 deletions src/CodeGeneration/ApiGenerator/CodeConfiguration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,6 @@ public static class CodeConfiguration
public static string[] IgnoredApis { get; } =
{
// these API's are not ready for primetime yet
"ml.delete_filter.json",
"ml.get_filters.json",
"ml.put_filter.json",
"ml.update_filter.json",
"rank_eval.json",

// these API's are new and need to be mapped
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ public string TypeLowLevel
{
case "boolean": return "bool?";
case "list": return "string[]";
case "integer": return "int?";
case "int": return "int?";
case "date": return "DateTimeOffset?";
case "enum": return $"{ClsName}?";
case "number":
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2356,6 +2356,11 @@ public class DeleteExpiredDataRequestParameters : RequestParameters<DeleteExpire
{
public override HttpMethod DefaultHttpMethod => HttpMethod.DELETE;
}
///<summary>Request options for MlDeleteFilter<pre>TODO</pre></summary>
public class DeleteFilterRequestParameters : RequestParameters<DeleteFilterRequestParameters>
{
public override HttpMethod DefaultHttpMethod => HttpMethod.DELETE;
}
///<summary>Request options for MlDeleteForecast<pre>http://www.elastic.co/guide/en/elasticsearch/reference/current/ml-delete-forecast.html</pre></summary>
public class DeleteForecastRequestParameters : RequestParameters<DeleteForecastRequestParameters>
{
Expand Down Expand Up @@ -2431,6 +2436,15 @@ public class GetDatafeedStatsRequestParameters : RequestParameters<GetDatafeedSt
///<summary>Whether to ignore if a wildcard expression matches no datafeeds. (This includes `_all` string or when no datafeeds have been specified)</summary>
public bool? AllowNoDatafeeds { get => Q<bool?>("allow_no_datafeeds"); set => Q("allow_no_datafeeds", value); }
}
///<summary>Request options for MlGetFilters<pre>TODO</pre></summary>
public class GetFiltersRequestParameters : RequestParameters<GetFiltersRequestParameters>
{
public override HttpMethod DefaultHttpMethod => HttpMethod.GET;
///<summary>skips a number of filters</summary>
public int? From { get => Q<int?>("from"); set => Q("from", value); }
///<summary>specifies a max number of filters to get</summary>
public int? Size { get => Q<int?>("size"); set => Q("size", value); }
}
///<summary>Request options for MlGetInfluencers<pre>http://www.elastic.co/guide/en/elasticsearch/reference/current/ml-get-influencer.html</pre></summary>
public class GetInfluencersRequestParameters : RequestParameters<GetInfluencersRequestParameters>
{
Expand Down Expand Up @@ -2509,6 +2523,11 @@ public class PutDatafeedRequestParameters : RequestParameters<PutDatafeedRequest
{
public override HttpMethod DefaultHttpMethod => HttpMethod.PUT;
}
///<summary>Request options for MlPutFilter<pre>TODO</pre></summary>
public class PutFilterRequestParameters : RequestParameters<PutFilterRequestParameters>
{
public override HttpMethod DefaultHttpMethod => HttpMethod.PUT;
}
///<summary>Request options for MlPutJob<pre>http://www.elastic.co/guide/en/elasticsearch/reference/current/ml-put-job.html</pre></summary>
public class PutJobRequestParameters : RequestParameters<PutJobRequestParameters>
{
Expand Down Expand Up @@ -2536,6 +2555,11 @@ public class UpdateDatafeedRequestParameters : RequestParameters<UpdateDatafeedR
{
public override HttpMethod DefaultHttpMethod => HttpMethod.POST;
}
///<summary>Request options for MlUpdateFilter<pre>TODO</pre></summary>
public class UpdateFilterRequestParameters : RequestParameters<UpdateFilterRequestParameters>
{
public override HttpMethod DefaultHttpMethod => HttpMethod.POST;
}
///<summary>Request options for MlUpdateJob<pre>http://www.elastic.co/guide/en/elasticsearch/reference/current/ml-update-job.html</pre></summary>
public class UpdateJobRequestParameters : RequestParameters<UpdateJobRequestParameters>
{
Expand Down
52 changes: 52 additions & 0 deletions src/Elasticsearch.Net/ElasticLowLevelClient.Generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2844,6 +2844,16 @@ public TResponse MlDeleteExpiredData<TResponse>(DeleteExpiredDataRequestParamete
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
public Task<TResponse> MlDeleteExpiredDataAsync<TResponse>(DeleteExpiredDataRequestParameters requestParameters = null, CancellationToken ctx = default(CancellationToken))
where TResponse : class, IElasticsearchResponse, new() => this.DoRequestAsync<TResponse>(DELETE, Url($"_ml/_delete_expired_data"), ctx, null, _params(requestParameters));
///<summary>DELETE on /_ml/filters/{filter_id} <para>TODO</para></summary>
///<param name="filter_id">The ID of the filter to delete</param>
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
public TResponse MlDeleteFilter<TResponse>(string filter_id, DeleteFilterRequestParameters requestParameters = null)
where TResponse : class, IElasticsearchResponse, new() => this.DoRequest<TResponse>(DELETE, Url($"_ml/filters/{filter_id.NotNull("filter_id")}"), null, _params(requestParameters));
///<summary>DELETE on /_ml/filters/{filter_id} <para>TODO</para></summary>
///<param name="filter_id">The ID of the filter to delete</param>
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
public Task<TResponse> MlDeleteFilterAsync<TResponse>(string filter_id, DeleteFilterRequestParameters requestParameters = null, CancellationToken ctx = default(CancellationToken))
where TResponse : class, IElasticsearchResponse, new() => this.DoRequestAsync<TResponse>(DELETE, Url($"_ml/filters/{filter_id.NotNull("filter_id")}"), ctx, null, _params(requestParameters));
///<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>
///<param name="job_id">The ID of the job from which to delete forecasts</param>
///<param name="forecast_id">The ID of the forecast to delete, can be comma delimited list or `_all`</param>
Expand Down Expand Up @@ -3082,6 +3092,24 @@ public TResponse MlGetDatafeedStats<TResponse>(GetDatafeedStatsRequestParameters
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
public Task<TResponse> MlGetDatafeedStatsAsync<TResponse>(GetDatafeedStatsRequestParameters requestParameters = null, CancellationToken ctx = default(CancellationToken))
where TResponse : class, IElasticsearchResponse, new() => this.DoRequestAsync<TResponse>(GET, Url($"_ml/datafeeds/_stats"), ctx, null, _params(requestParameters));
///<summary>GET on /_ml/filters <para>TODO</para></summary>
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
public TResponse MlGetFilters<TResponse>(GetFiltersRequestParameters requestParameters = null)
where TResponse : class, IElasticsearchResponse, new() => this.DoRequest<TResponse>(GET, Url($"_ml/filters"), null, _params(requestParameters));
///<summary>GET on /_ml/filters <para>TODO</para></summary>
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
public Task<TResponse> MlGetFiltersAsync<TResponse>(GetFiltersRequestParameters requestParameters = null, CancellationToken ctx = default(CancellationToken))
where TResponse : class, IElasticsearchResponse, new() => this.DoRequestAsync<TResponse>(GET, Url($"_ml/filters"), ctx, null, _params(requestParameters));
///<summary>GET on /_ml/filters/{filter_id} <para>TODO</para></summary>
///<param name="filter_id">The ID of the filter to fetch</param>
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
public TResponse MlGetFilters<TResponse>(string filter_id, GetFiltersRequestParameters requestParameters = null)
where TResponse : class, IElasticsearchResponse, new() => this.DoRequest<TResponse>(GET, Url($"_ml/filters/{filter_id.NotNull("filter_id")}"), null, _params(requestParameters));
///<summary>GET on /_ml/filters/{filter_id} <para>TODO</para></summary>
///<param name="filter_id">The ID of the filter to fetch</param>
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
public Task<TResponse> MlGetFiltersAsync<TResponse>(string filter_id, GetFiltersRequestParameters requestParameters = null, CancellationToken ctx = default(CancellationToken))
where TResponse : class, IElasticsearchResponse, new() => this.DoRequestAsync<TResponse>(GET, Url($"_ml/filters/{filter_id.NotNull("filter_id")}"), ctx, null, _params(requestParameters));
///<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>
///<param name="job_id"></param>
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
Expand Down Expand Up @@ -3320,6 +3348,18 @@ public TResponse MlPutDatafeed<TResponse>(string datafeed_id, PostData body, Put
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
public Task<TResponse> MlPutDatafeedAsync<TResponse>(string datafeed_id, PostData body, PutDatafeedRequestParameters requestParameters = null, CancellationToken ctx = default(CancellationToken))
where TResponse : class, IElasticsearchResponse, new() => this.DoRequestAsync<TResponse>(PUT, Url($"_ml/datafeeds/{datafeed_id.NotNull("datafeed_id")}"), ctx, body, _params(requestParameters));
///<summary>PUT on /_ml/filters/{filter_id} <para>TODO</para></summary>
///<param name="filter_id">The ID of the filter to create</param>
///<param name="body">The filter details</param>
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
public TResponse MlPutFilter<TResponse>(string filter_id, PostData body, PutFilterRequestParameters requestParameters = null)
where TResponse : class, IElasticsearchResponse, new() => this.DoRequest<TResponse>(PUT, Url($"_ml/filters/{filter_id.NotNull("filter_id")}"), body, _params(requestParameters));
///<summary>PUT on /_ml/filters/{filter_id} <para>TODO</para></summary>
///<param name="filter_id">The ID of the filter to create</param>
///<param name="body">The filter details</param>
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
public Task<TResponse> MlPutFilterAsync<TResponse>(string filter_id, PostData body, PutFilterRequestParameters requestParameters = null, CancellationToken ctx = default(CancellationToken))
where TResponse : class, IElasticsearchResponse, new() => this.DoRequestAsync<TResponse>(PUT, Url($"_ml/filters/{filter_id.NotNull("filter_id")}"), ctx, body, _params(requestParameters));
///<summary>PUT on /_ml/anomaly_detectors/{job_id} <para>http://www.elastic.co/guide/en/elasticsearch/reference/current/ml-put-job.html</para></summary>
///<param name="job_id">The ID of the job to create</param>
///<param name="body">The job</param>
Expand Down Expand Up @@ -3380,6 +3420,18 @@ public TResponse MlUpdateDatafeed<TResponse>(string datafeed_id, PostData body,
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
public Task<TResponse> MlUpdateDatafeedAsync<TResponse>(string datafeed_id, PostData body, UpdateDatafeedRequestParameters requestParameters = null, CancellationToken ctx = default(CancellationToken))
where TResponse : class, IElasticsearchResponse, new() => this.DoRequestAsync<TResponse>(POST, Url($"_ml/datafeeds/{datafeed_id.NotNull("datafeed_id")}/_update"), ctx, body, _params(requestParameters));
///<summary>POST on /_ml/filters/{filter_id}/_update <para>TODO</para></summary>
///<param name="filter_id">The ID of the filter to update</param>
///<param name="body">The filter update</param>
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
public TResponse MlUpdateFilter<TResponse>(string filter_id, PostData body, UpdateFilterRequestParameters requestParameters = null)
where TResponse : class, IElasticsearchResponse, new() => this.DoRequest<TResponse>(POST, Url($"_ml/filters/{filter_id.NotNull("filter_id")}/_update"), body, _params(requestParameters));
///<summary>POST on /_ml/filters/{filter_id}/_update <para>TODO</para></summary>
///<param name="filter_id">The ID of the filter to update</param>
///<param name="body">The filter update</param>
///<param name="requestParameters">A func that allows you to describe the querystring parameters &amp; request specific connection settings.</param>
public Task<TResponse> MlUpdateFilterAsync<TResponse>(string filter_id, PostData body, UpdateFilterRequestParameters requestParameters = null, CancellationToken ctx = default(CancellationToken))
where TResponse : class, IElasticsearchResponse, new() => this.DoRequestAsync<TResponse>(POST, Url($"_ml/filters/{filter_id.NotNull("filter_id")}/_update"), ctx, body, _params(requestParameters));
///<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>
///<param name="job_id">The ID of the job to create</param>
///<param name="body">The job update settings</param>
Expand Down
Loading

0 comments on commit 74efe05

Please sign in to comment.