Skip to content

Backport additional EQL APIs to master #5672

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
May 4, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -44,12 +44,12 @@
namespace Elasticsearch.Net.Specification.EqlApi
{
///<summary>Request options for Delete <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</para></summary>
public class DeleteRequestParameters : RequestParameters<DeleteRequestParameters>
public class EqlDeleteRequestParameters : RequestParameters<EqlDeleteRequestParameters>
{
}

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

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

Expand Down
12 changes: 6 additions & 6 deletions src/Elasticsearch.Net/ElasticLowLevelClient.Eql.cs
Original file line number Diff line number Diff line change
Expand Up @@ -65,35 +65,35 @@ internal LowLevelEqlNamespace(ElasticLowLevelClient client): base(client)
///<summary>DELETE on /_eql/search/{id} <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</para></summary>
///<param name = "id">The async search ID</param>
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
public TResponse Delete<TResponse>(string id, DeleteRequestParameters requestParameters = null)
public TResponse Delete<TResponse>(string id, EqlDeleteRequestParameters requestParameters = null)
where TResponse : class, ITransportResponse, new() => DoRequest<TResponse>(DELETE, Url($"_eql/search/{id:id}"), null, RequestParams(requestParameters));
///<summary>DELETE on /_eql/search/{id} <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</para></summary>
///<param name = "id">The async search ID</param>
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
[MapsApi("eql.delete", "id")]
public Task<TResponse> DeleteAsync<TResponse>(string id, DeleteRequestParameters requestParameters = null, CancellationToken ctx = default)
public Task<TResponse> DeleteAsync<TResponse>(string id, EqlDeleteRequestParameters requestParameters = null, CancellationToken ctx = default)
where TResponse : class, ITransportResponse, new() => DoRequestAsync<TResponse>(DELETE, Url($"_eql/search/{id:id}"), ctx, null, RequestParams(requestParameters));
///<summary>GET on /_eql/search/{id} <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</para></summary>
///<param name = "id">The async search ID</param>
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
public TResponse Get<TResponse>(string id, GetRequestParameters requestParameters = null)
public TResponse Get<TResponse>(string id, EqlGetRequestParameters requestParameters = null)
where TResponse : class, ITransportResponse, new() => DoRequest<TResponse>(GET, Url($"_eql/search/{id:id}"), null, RequestParams(requestParameters));
///<summary>GET on /_eql/search/{id} <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</para></summary>
///<param name = "id">The async search ID</param>
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
[MapsApi("eql.get", "id")]
public Task<TResponse> GetAsync<TResponse>(string id, GetRequestParameters requestParameters = null, CancellationToken ctx = default)
public Task<TResponse> GetAsync<TResponse>(string id, EqlGetRequestParameters requestParameters = null, CancellationToken ctx = default)
where TResponse : class, ITransportResponse, new() => DoRequestAsync<TResponse>(GET, Url($"_eql/search/{id:id}"), ctx, null, RequestParams(requestParameters));
///<summary>GET on /_eql/search/status/{id} <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</para></summary>
///<param name = "id">The async search ID</param>
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
public TResponse GetStatus<TResponse>(string id, GetStatusRequestParameters requestParameters = null)
public TResponse SearchStatus<TResponse>(string id, EqlSearchStatusRequestParameters requestParameters = null)
where TResponse : class, ITransportResponse, new() => DoRequest<TResponse>(GET, Url($"_eql/search/status/{id:id}"), null, RequestParams(requestParameters));
///<summary>GET on /_eql/search/status/{id} <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</para></summary>
///<param name = "id">The async search ID</param>
///<param name = "requestParameters">Request specific configuration such as querystring parameters &amp; request specific connection settings.</param>
[MapsApi("eql.get_status", "id")]
public Task<TResponse> GetStatusAsync<TResponse>(string id, GetStatusRequestParameters requestParameters = null, CancellationToken ctx = default)
public Task<TResponse> SearchStatusAsync<TResponse>(string id, EqlSearchStatusRequestParameters requestParameters = null, CancellationToken ctx = default)
where TResponse : class, ITransportResponse, new() => DoRequestAsync<TResponse>(GET, Url($"_eql/search/status/{id:id}"), ctx, null, RequestParams(requestParameters));
///<summary>POST on /{index}/_eql/search <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</para></summary>
///<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>
Expand Down
73 changes: 73 additions & 0 deletions src/Nest/Descriptors.Eql.cs
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,79 @@
// ReSharper disable RedundantNameQualifier
namespace Nest
{
///<summary>Descriptor for Delete <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</para></summary>
public partial class EqlDeleteDescriptor : RequestDescriptorBase<EqlDeleteDescriptor, EqlDeleteRequestParameters, IEqlDeleteRequest>, IEqlDeleteRequest
{
internal override ApiUrls ApiUrls => ApiUrlsLookups.EqlDelete;
protected override HttpMethod HttpMethod => HttpMethod.DELETE;
protected override bool SupportsBody => false;
///<summary>/_eql/search/{id}</summary>
///<param name = "id">this parameter is required</param>
public EqlDeleteDescriptor(Id id): base(r => r.Required("id", id))
{
}

///<summary>Used for serialization purposes, making sure we have a parameterless constructor</summary>
[SerializationConstructor]
protected EqlDeleteDescriptor(): base()
{
}

// values part of the url path
Id IEqlDeleteRequest.Id => Self.RouteValues.Get<Id>("id");
// Request parameters
}

///<summary>Descriptor for Get <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</para></summary>
public partial class EqlGetDescriptor : RequestDescriptorBase<EqlGetDescriptor, EqlGetRequestParameters, IEqlGetRequest>, IEqlGetRequest
{
internal override ApiUrls ApiUrls => ApiUrlsLookups.EqlGet;
protected override HttpMethod HttpMethod => HttpMethod.GET;
protected override bool SupportsBody => false;
///<summary>/_eql/search/{id}</summary>
///<param name = "id">this parameter is required</param>
public EqlGetDescriptor(Id id): base(r => r.Required("id", id))
{
}

///<summary>Used for serialization purposes, making sure we have a parameterless constructor</summary>
[SerializationConstructor]
protected EqlGetDescriptor(): base()
{
}

// values part of the url path
Id IEqlGetRequest.Id => Self.RouteValues.Get<Id>("id");
// Request parameters
///<summary>Update the time interval in which the results (partial or final) for this search will be available</summary>
public EqlGetDescriptor KeepAlive(Time keepalive) => Qs("keep_alive", keepalive);
///<summary>Specify the time that the request should block waiting for the final response</summary>
public EqlGetDescriptor WaitForCompletionTimeout(Time waitforcompletiontimeout) => Qs("wait_for_completion_timeout", waitforcompletiontimeout);
}

///<summary>Descriptor for SearchStatus <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</para></summary>
public partial class EqlSearchStatusDescriptor : RequestDescriptorBase<EqlSearchStatusDescriptor, EqlSearchStatusRequestParameters, IEqlSearchStatusRequest>, IEqlSearchStatusRequest
{
internal override ApiUrls ApiUrls => ApiUrlsLookups.EqlSearchStatus;
protected override HttpMethod HttpMethod => HttpMethod.GET;
protected override bool SupportsBody => false;
///<summary>/_eql/search/status/{id}</summary>
///<param name = "id">this parameter is required</param>
public EqlSearchStatusDescriptor(Id id): base(r => r.Required("id", id))
{
}

///<summary>Used for serialization purposes, making sure we have a parameterless constructor</summary>
[SerializationConstructor]
protected EqlSearchStatusDescriptor(): base()
{
}

// values part of the url path
Id IEqlSearchStatusRequest.Id => Self.RouteValues.Get<Id>("id");
// Request parameters
}

///<summary>Descriptor for Search <para>https://www.elastic.co/guide/en/elasticsearch/reference/current/eql-search-api.html</para></summary>
public partial class EqlSearchDescriptor<TInferDocument> : RequestDescriptorBase<EqlSearchDescriptor<TInferDocument>, EqlSearchRequestParameters, IEqlSearchRequest<TInferDocument>>, IEqlSearchRequest<TInferDocument>
{
Expand Down
76 changes: 76 additions & 0 deletions src/Nest/ElasticClient.Eql.cs
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,82 @@ internal EqlNamespace(ElasticClient client): base(client)
{
}

/// <summary>
/// <c>DELETE</c> request to the <c>eql.delete</c> API, read more about this API online:
/// <para></para>
/// <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>
/// </summary>
public EqlDeleteResponse Delete(Id id, Func<EqlDeleteDescriptor, IEqlDeleteRequest> selector = null) => Delete(selector.InvokeOrDefault(new EqlDeleteDescriptor(id: id)));
/// <summary>
/// <c>DELETE</c> request to the <c>eql.delete</c> API, read more about this API online:
/// <para></para>
/// <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>
/// </summary>
public Task<EqlDeleteResponse> DeleteAsync(Id id, Func<EqlDeleteDescriptor, IEqlDeleteRequest> selector = null, CancellationToken ct = default) => DeleteAsync(selector.InvokeOrDefault(new EqlDeleteDescriptor(id: id)), ct);
/// <summary>
/// <c>DELETE</c> request to the <c>eql.delete</c> API, read more about this API online:
/// <para></para>
/// <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>
/// </summary>
public EqlDeleteResponse Delete(IEqlDeleteRequest request) => DoRequest<IEqlDeleteRequest, EqlDeleteResponse>(request, request.RequestParameters);
/// <summary>
/// <c>DELETE</c> request to the <c>eql.delete</c> API, read more about this API online:
/// <para></para>
/// <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>
/// </summary>
public Task<EqlDeleteResponse> DeleteAsync(IEqlDeleteRequest request, CancellationToken ct = default) => DoRequestAsync<IEqlDeleteRequest, EqlDeleteResponse>(request, request.RequestParameters, ct);
/// <summary>
/// <c>GET</c> request to the <c>eql.get</c> API, read more about this API online:
/// <para></para>
/// <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>
/// </summary>
public EqlGetResponse<TDocument> Get<TDocument>(Id id, Func<EqlGetDescriptor, IEqlGetRequest> selector = null)
where TDocument : class => Get<TDocument>(selector.InvokeOrDefault(new EqlGetDescriptor(id: id)));
/// <summary>
/// <c>GET</c> request to the <c>eql.get</c> API, read more about this API online:
/// <para></para>
/// <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>
/// </summary>
public Task<EqlGetResponse<TDocument>> GetAsync<TDocument>(Id id, Func<EqlGetDescriptor, IEqlGetRequest> selector = null, CancellationToken ct = default)
where TDocument : class => GetAsync<TDocument>(selector.InvokeOrDefault(new EqlGetDescriptor(id: id)), ct);
/// <summary>
/// <c>GET</c> request to the <c>eql.get</c> API, read more about this API online:
/// <para></para>
/// <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>
/// </summary>
public EqlGetResponse<TDocument> Get<TDocument>(IEqlGetRequest request)
where TDocument : class => DoRequest<IEqlGetRequest, EqlGetResponse<TDocument>>(request, request.RequestParameters);
/// <summary>
/// <c>GET</c> request to the <c>eql.get</c> API, read more about this API online:
/// <para></para>
/// <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>
/// </summary>
public Task<EqlGetResponse<TDocument>> GetAsync<TDocument>(IEqlGetRequest request, CancellationToken ct = default)
where TDocument : class => DoRequestAsync<IEqlGetRequest, EqlGetResponse<TDocument>>(request, request.RequestParameters, ct);
/// <summary>
/// <c>GET</c> request to the <c>eql.get_status</c> API, read more about this API online:
/// <para></para>
/// <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>
/// </summary>
public EqlSearchStatusResponse SearchStatus(Id id, Func<EqlSearchStatusDescriptor, IEqlSearchStatusRequest> selector = null) => SearchStatus(selector.InvokeOrDefault(new EqlSearchStatusDescriptor(id: id)));
/// <summary>
/// <c>GET</c> request to the <c>eql.get_status</c> API, read more about this API online:
/// <para></para>
/// <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>
/// </summary>
public Task<EqlSearchStatusResponse> SearchStatusAsync(Id id, Func<EqlSearchStatusDescriptor, IEqlSearchStatusRequest> selector = null, CancellationToken ct = default) => SearchStatusAsync(selector.InvokeOrDefault(new EqlSearchStatusDescriptor(id: id)), ct);
/// <summary>
/// <c>GET</c> request to the <c>eql.get_status</c> API, read more about this API online:
/// <para></para>
/// <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>
/// </summary>
public EqlSearchStatusResponse SearchStatus(IEqlSearchStatusRequest request) => DoRequest<IEqlSearchStatusRequest, EqlSearchStatusResponse>(request, request.RequestParameters);
/// <summary>
/// <c>GET</c> request to the <c>eql.get_status</c> API, read more about this API online:
/// <para></para>
/// <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>
/// </summary>
public Task<EqlSearchStatusResponse> SearchStatusAsync(IEqlSearchStatusRequest request, CancellationToken ct = default) => DoRequestAsync<IEqlSearchStatusRequest, EqlSearchStatusResponse>(request, request.RequestParameters, ct);
/// <summary>
/// <c>POST</c> request to the <c>eql.search</c> API, read more about this API online:
/// <para></para>
Expand Down
Loading