Skip to content

Commit 395dbc0

Browse files
authored
Backport additional EQL APIs to master (#5672)
* Add NEST support for EQL search status API (#5663) * Add initial request and response * Generate code for EQL get status * Add test, update naming and headers * Update models and assertions (cherry picked from commit 4dec45f) * Add NEST support for EQL Get Search API (#5665) * Add initial request and response * Generate code for EQL get status * Add test, update naming and headers * Add initial types * Generate code * Add tests (cherry picked from commit 3d1a3b2) * Add NEST support for EQL delete API (#5667) * Add request and response for delete EQL * Generate code * Add tests (cherry picked from commit 7e2939a) * Gen code for master
1 parent 9999568 commit 395dbc0

17 files changed

+762
-15
lines changed

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,12 @@
4444
namespace Elasticsearch.Net.Specification.EqlApi
4545
{
4646
///<summary>Request options for Delete <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</para></summary>
47-
public class DeleteRequestParameters : RequestParameters<DeleteRequestParameters>
47+
public class EqlDeleteRequestParameters : RequestParameters<EqlDeleteRequestParameters>
4848
{
4949
}
5050

5151
///<summary>Request options for Get <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</para></summary>
52-
public class GetRequestParameters : RequestParameters<GetRequestParameters>
52+
public class EqlGetRequestParameters : RequestParameters<EqlGetRequestParameters>
5353
{
5454
///<summary>Update the time interval in which the results (partial or final) for this search will be available</summary>
5555
public TimeSpan KeepAlive
@@ -66,8 +66,8 @@ public TimeSpan WaitForCompletionTimeout
6666
}
6767
}
6868

69-
///<summary>Request options for GetStatus <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</para></summary>
70-
public class GetStatusRequestParameters : RequestParameters<GetStatusRequestParameters>
69+
///<summary>Request options for SearchStatus <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</para></summary>
70+
public class EqlSearchStatusRequestParameters : RequestParameters<EqlSearchStatusRequestParameters>
7171
{
7272
}
7373

src/Elasticsearch.Net/ElasticLowLevelClient.Eql.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,35 +65,35 @@ internal LowLevelEqlNamespace(ElasticLowLevelClient client): base(client)
6565
///<summary>DELETE on /_eql/search/{id} <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</para></summary>
6666
///<param name = "id">The async search ID</param>
6767
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
68-
public TResponse Delete<TResponse>(string id, DeleteRequestParameters requestParameters = null)
68+
public TResponse Delete<TResponse>(string id, EqlDeleteRequestParameters requestParameters = null)
6969
where TResponse : class, ITransportResponse, new() => DoRequest<TResponse>(DELETE, Url($"_eql/search/{id:id}"), null, RequestParams(requestParameters));
7070
///<summary>DELETE on /_eql/search/{id} <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</para></summary>
7171
///<param name = "id">The async search ID</param>
7272
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
7373
[MapsApi("eql.delete", "id")]
74-
public Task<TResponse> DeleteAsync<TResponse>(string id, DeleteRequestParameters requestParameters = null, CancellationToken ctx = default)
74+
public Task<TResponse> DeleteAsync<TResponse>(string id, EqlDeleteRequestParameters requestParameters = null, CancellationToken ctx = default)
7575
where TResponse : class, ITransportResponse, new() => DoRequestAsync<TResponse>(DELETE, Url($"_eql/search/{id:id}"), ctx, null, RequestParams(requestParameters));
7676
///<summary>GET on /_eql/search/{id} <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</para></summary>
7777
///<param name = "id">The async search ID</param>
7878
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
79-
public TResponse Get<TResponse>(string id, GetRequestParameters requestParameters = null)
79+
public TResponse Get<TResponse>(string id, EqlGetRequestParameters requestParameters = null)
8080
where TResponse : class, ITransportResponse, new() => DoRequest<TResponse>(GET, Url($"_eql/search/{id:id}"), null, RequestParams(requestParameters));
8181
///<summary>GET on /_eql/search/{id} <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</para></summary>
8282
///<param name = "id">The async search ID</param>
8383
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
8484
[MapsApi("eql.get", "id")]
85-
public Task<TResponse> GetAsync<TResponse>(string id, GetRequestParameters requestParameters = null, CancellationToken ctx = default)
85+
public Task<TResponse> GetAsync<TResponse>(string id, EqlGetRequestParameters requestParameters = null, CancellationToken ctx = default)
8686
where TResponse : class, ITransportResponse, new() => DoRequestAsync<TResponse>(GET, Url($"_eql/search/{id:id}"), ctx, null, RequestParams(requestParameters));
8787
///<summary>GET on /_eql/search/status/{id} <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</para></summary>
8888
///<param name = "id">The async search ID</param>
8989
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
90-
public TResponse GetStatus<TResponse>(string id, GetStatusRequestParameters requestParameters = null)
90+
public TResponse SearchStatus<TResponse>(string id, EqlSearchStatusRequestParameters requestParameters = null)
9191
where TResponse : class, ITransportResponse, new() => DoRequest<TResponse>(GET, Url($"_eql/search/status/{id:id}"), null, RequestParams(requestParameters));
9292
///<summary>GET on /_eql/search/status/{id} <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</para></summary>
9393
///<param name = "id">The async search ID</param>
9494
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
9595
[MapsApi("eql.get_status", "id")]
96-
public Task<TResponse> GetStatusAsync<TResponse>(string id, GetStatusRequestParameters requestParameters = null, CancellationToken ctx = default)
96+
public Task<TResponse> SearchStatusAsync<TResponse>(string id, EqlSearchStatusRequestParameters requestParameters = null, CancellationToken ctx = default)
9797
where TResponse : class, ITransportResponse, new() => DoRequestAsync<TResponse>(GET, Url($"_eql/search/status/{id:id}"), ctx, null, RequestParams(requestParameters));
9898
///<summary>POST on /{index}/_eql/search <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</para></summary>
9999
///<param name = "index">A comma-separated list of index names to search; use the special string `_all` or Indices.All to perform the operation on all indices</param>

src/Nest/Descriptors.Eql.cs

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,79 @@
4949
// ReSharper disable RedundantNameQualifier
5050
namespace Nest
5151
{
52+
///<summary>Descriptor for Delete <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</para></summary>
53+
public partial class EqlDeleteDescriptor : RequestDescriptorBase<EqlDeleteDescriptor, EqlDeleteRequestParameters, IEqlDeleteRequest>, IEqlDeleteRequest
54+
{
55+
internal override ApiUrls ApiUrls => ApiUrlsLookups.EqlDelete;
56+
protected override HttpMethod HttpMethod => HttpMethod.DELETE;
57+
protected override bool SupportsBody => false;
58+
///<summary>/_eql/search/{id}</summary>
59+
///<param name = "id">this parameter is required</param>
60+
public EqlDeleteDescriptor(Id id): base(r => r.Required("id", id))
61+
{
62+
}
63+
64+
///<summary>Used for serialization purposes, making sure we have a parameterless constructor</summary>
65+
[SerializationConstructor]
66+
protected EqlDeleteDescriptor(): base()
67+
{
68+
}
69+
70+
// values part of the url path
71+
Id IEqlDeleteRequest.Id => Self.RouteValues.Get<Id>("id");
72+
// Request parameters
73+
}
74+
75+
///<summary>Descriptor for Get <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</para></summary>
76+
public partial class EqlGetDescriptor : RequestDescriptorBase<EqlGetDescriptor, EqlGetRequestParameters, IEqlGetRequest>, IEqlGetRequest
77+
{
78+
internal override ApiUrls ApiUrls => ApiUrlsLookups.EqlGet;
79+
protected override HttpMethod HttpMethod => HttpMethod.GET;
80+
protected override bool SupportsBody => false;
81+
///<summary>/_eql/search/{id}</summary>
82+
///<param name = "id">this parameter is required</param>
83+
public EqlGetDescriptor(Id id): base(r => r.Required("id", id))
84+
{
85+
}
86+
87+
///<summary>Used for serialization purposes, making sure we have a parameterless constructor</summary>
88+
[SerializationConstructor]
89+
protected EqlGetDescriptor(): base()
90+
{
91+
}
92+
93+
// values part of the url path
94+
Id IEqlGetRequest.Id => Self.RouteValues.Get<Id>("id");
95+
// Request parameters
96+
///<summary>Update the time interval in which the results (partial or final) for this search will be available</summary>
97+
public EqlGetDescriptor KeepAlive(Time keepalive) => Qs("keep_alive", keepalive);
98+
///<summary>Specify the time that the request should block waiting for the final response</summary>
99+
public EqlGetDescriptor WaitForCompletionTimeout(Time waitforcompletiontimeout) => Qs("wait_for_completion_timeout", waitforcompletiontimeout);
100+
}
101+
102+
///<summary>Descriptor for SearchStatus <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</para></summary>
103+
public partial class EqlSearchStatusDescriptor : RequestDescriptorBase<EqlSearchStatusDescriptor, EqlSearchStatusRequestParameters, IEqlSearchStatusRequest>, IEqlSearchStatusRequest
104+
{
105+
internal override ApiUrls ApiUrls => ApiUrlsLookups.EqlSearchStatus;
106+
protected override HttpMethod HttpMethod => HttpMethod.GET;
107+
protected override bool SupportsBody => false;
108+
///<summary>/_eql/search/status/{id}</summary>
109+
///<param name = "id">this parameter is required</param>
110+
public EqlSearchStatusDescriptor(Id id): base(r => r.Required("id", id))
111+
{
112+
}
113+
114+
///<summary>Used for serialization purposes, making sure we have a parameterless constructor</summary>
115+
[SerializationConstructor]
116+
protected EqlSearchStatusDescriptor(): base()
117+
{
118+
}
119+
120+
// values part of the url path
121+
Id IEqlSearchStatusRequest.Id => Self.RouteValues.Get<Id>("id");
122+
// Request parameters
123+
}
124+
52125
///<summary>Descriptor for Search <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</para></summary>
53126
public partial class EqlSearchDescriptor<TInferDocument> : RequestDescriptorBase<EqlSearchDescriptor<TInferDocument>, EqlSearchRequestParameters, IEqlSearchRequest<TInferDocument>>, IEqlSearchRequest<TInferDocument>
54127
{

src/Nest/ElasticClient.Eql.cs

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,82 @@ internal EqlNamespace(ElasticClient client): base(client)
5454
{
5555
}
5656

57+
/// <summary>
58+
/// <c>DELETE</c> request to the <c>eql.delete</c> API, read more about this API online:
59+
/// <para></para>
60+
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</a>
61+
/// </summary>
62+
public EqlDeleteResponse Delete(Id id, Func<EqlDeleteDescriptor, IEqlDeleteRequest> selector = null) => Delete(selector.InvokeOrDefault(new EqlDeleteDescriptor(id: id)));
63+
/// <summary>
64+
/// <c>DELETE</c> request to the <c>eql.delete</c> API, read more about this API online:
65+
/// <para></para>
66+
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</a>
67+
/// </summary>
68+
public Task<EqlDeleteResponse> DeleteAsync(Id id, Func<EqlDeleteDescriptor, IEqlDeleteRequest> selector = null, CancellationToken ct = default) => DeleteAsync(selector.InvokeOrDefault(new EqlDeleteDescriptor(id: id)), ct);
69+
/// <summary>
70+
/// <c>DELETE</c> request to the <c>eql.delete</c> API, read more about this API online:
71+
/// <para></para>
72+
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</a>
73+
/// </summary>
74+
public EqlDeleteResponse Delete(IEqlDeleteRequest request) => DoRequest<IEqlDeleteRequest, EqlDeleteResponse>(request, request.RequestParameters);
75+
/// <summary>
76+
/// <c>DELETE</c> request to the <c>eql.delete</c> API, read more about this API online:
77+
/// <para></para>
78+
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</a>
79+
/// </summary>
80+
public Task<EqlDeleteResponse> DeleteAsync(IEqlDeleteRequest request, CancellationToken ct = default) => DoRequestAsync<IEqlDeleteRequest, EqlDeleteResponse>(request, request.RequestParameters, ct);
81+
/// <summary>
82+
/// <c>GET</c> request to the <c>eql.get</c> API, read more about this API online:
83+
/// <para></para>
84+
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</a>
85+
/// </summary>
86+
public EqlGetResponse<TDocument> Get<TDocument>(Id id, Func<EqlGetDescriptor, IEqlGetRequest> selector = null)
87+
where TDocument : class => Get<TDocument>(selector.InvokeOrDefault(new EqlGetDescriptor(id: id)));
88+
/// <summary>
89+
/// <c>GET</c> request to the <c>eql.get</c> API, read more about this API online:
90+
/// <para></para>
91+
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</a>
92+
/// </summary>
93+
public Task<EqlGetResponse<TDocument>> GetAsync<TDocument>(Id id, Func<EqlGetDescriptor, IEqlGetRequest> selector = null, CancellationToken ct = default)
94+
where TDocument : class => GetAsync<TDocument>(selector.InvokeOrDefault(new EqlGetDescriptor(id: id)), ct);
95+
/// <summary>
96+
/// <c>GET</c> request to the <c>eql.get</c> API, read more about this API online:
97+
/// <para></para>
98+
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</a>
99+
/// </summary>
100+
public EqlGetResponse<TDocument> Get<TDocument>(IEqlGetRequest request)
101+
where TDocument : class => DoRequest<IEqlGetRequest, EqlGetResponse<TDocument>>(request, request.RequestParameters);
102+
/// <summary>
103+
/// <c>GET</c> request to the <c>eql.get</c> API, read more about this API online:
104+
/// <para></para>
105+
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</a>
106+
/// </summary>
107+
public Task<EqlGetResponse<TDocument>> GetAsync<TDocument>(IEqlGetRequest request, CancellationToken ct = default)
108+
where TDocument : class => DoRequestAsync<IEqlGetRequest, EqlGetResponse<TDocument>>(request, request.RequestParameters, ct);
109+
/// <summary>
110+
/// <c>GET</c> request to the <c>eql.get_status</c> API, read more about this API online:
111+
/// <para></para>
112+
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</a>
113+
/// </summary>
114+
public EqlSearchStatusResponse SearchStatus(Id id, Func<EqlSearchStatusDescriptor, IEqlSearchStatusRequest> selector = null) => SearchStatus(selector.InvokeOrDefault(new EqlSearchStatusDescriptor(id: id)));
115+
/// <summary>
116+
/// <c>GET</c> request to the <c>eql.get_status</c> API, read more about this API online:
117+
/// <para></para>
118+
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</a>
119+
/// </summary>
120+
public Task<EqlSearchStatusResponse> SearchStatusAsync(Id id, Func<EqlSearchStatusDescriptor, IEqlSearchStatusRequest> selector = null, CancellationToken ct = default) => SearchStatusAsync(selector.InvokeOrDefault(new EqlSearchStatusDescriptor(id: id)), ct);
121+
/// <summary>
122+
/// <c>GET</c> request to the <c>eql.get_status</c> API, read more about this API online:
123+
/// <para></para>
124+
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</a>
125+
/// </summary>
126+
public EqlSearchStatusResponse SearchStatus(IEqlSearchStatusRequest request) => DoRequest<IEqlSearchStatusRequest, EqlSearchStatusResponse>(request, request.RequestParameters);
127+
/// <summary>
128+
/// <c>GET</c> request to the <c>eql.get_status</c> API, read more about this API online:
129+
/// <para></para>
130+
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html">https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</a>
131+
/// </summary>
132+
public Task<EqlSearchStatusResponse> SearchStatusAsync(IEqlSearchStatusRequest request, CancellationToken ct = default) => DoRequestAsync<IEqlSearchStatusRequest, EqlSearchStatusResponse>(request, request.RequestParameters, ct);
57133
/// <summary>
58134
/// <c>POST</c> request to the <c>eql.search</c> API, read more about this API online:
59135
/// <para></para>

0 commit comments

Comments
 (0)