Skip to content

Implement indices.reload_search_analyzers #4529

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 9 commits into from
Apr 16, 2020
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
1 change: 0 additions & 1 deletion src/ApiGenerator/Configuration/CodeConfiguration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,6 @@ public static class CodeConfiguration
"cluster.delete_component_template.json",
"cluster.get_component_template.json",
"cluster.put_component_template.json",
"indices.reload_search_analyzers.json",
"ml.estimate_model_memory.json",
"ml.set_upgrade_mode.json",
"security.get_builtin_privileges.json",
Expand Down
34 changes: 34 additions & 0 deletions src/Nest/Descriptors.Indices.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1118,6 +1118,40 @@ public RefreshDescriptor Index<TOther>()
public RefreshDescriptor IgnoreUnavailable(bool? ignoreunavailable = true) => Qs("ignore_unavailable", ignoreunavailable);
}

///<summary>Descriptor for ReloadSearchAnalyzers <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html</para></summary>
public partial class ReloadSearchAnalyzersDescriptor : RequestDescriptorBase<ReloadSearchAnalyzersDescriptor, ReloadSearchAnalyzersRequestParameters, IReloadSearchAnalyzersRequest>, IReloadSearchAnalyzersRequest
{
internal override ApiUrls ApiUrls => ApiUrlsLookups.IndicesReloadSearchAnalyzers;
///<summary>/{index}/_reload_search_analyzers</summary>
///<param name = "index">this parameter is required</param>
public ReloadSearchAnalyzersDescriptor(Indices index): base(r => r.Required("index", index))
{
}

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

// values part of the url path
Indices IReloadSearchAnalyzersRequest.Index => Self.RouteValues.Get<Indices>("index");
///<summary>A comma-separated list of index names to reload analyzers for</summary>
public ReloadSearchAnalyzersDescriptor Index(Indices index) => Assign(index, (a, v) => a.RouteValues.Required("index", v));
///<summary>a shortcut into calling Index(typeof(TOther))</summary>
public ReloadSearchAnalyzersDescriptor Index<TOther>()
where TOther : class => Assign(typeof(TOther), (a, v) => a.RouteValues.Required("index", (Indices)v));
///<summary>A shortcut into calling Index(Indices.All)</summary>
public ReloadSearchAnalyzersDescriptor AllIndices() => Index(Indices.All);
// Request parameters
///<summary>Whether to ignore if a wildcard indices expression resolves into no concrete indices. (This includes `_all` string or when no indices have been specified)</summary>
public ReloadSearchAnalyzersDescriptor AllowNoIndices(bool? allownoindices = true) => Qs("allow_no_indices", allownoindices);
///<summary>Whether to expand wildcard expression to concrete indices that are open, closed or both.</summary>
public ReloadSearchAnalyzersDescriptor ExpandWildcards(ExpandWildcards? expandwildcards) => Qs("expand_wildcards", expandwildcards);
///<summary>Whether specified concrete indices should be ignored when unavailable (missing or closed)</summary>
public ReloadSearchAnalyzersDescriptor IgnoreUnavailable(bool? ignoreunavailable = true) => Qs("ignore_unavailable", ignoreunavailable);
}

///<summary>Descriptor for Rollover <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-rollover-index.html</para></summary>
public partial class RolloverIndexDescriptor : RequestDescriptorBase<RolloverIndexDescriptor, RolloverIndexRequestParameters, IRolloverIndexRequest>, IRolloverIndexRequest
{
Expand Down
24 changes: 24 additions & 0 deletions src/Nest/ElasticClient.Indices.cs
Original file line number Diff line number Diff line change
Expand Up @@ -739,6 +739,30 @@ public Task<PutMappingResponse> PutMappingAsync<TDocument>(Func<PutMappingDescri
/// </summary>
public Task<RefreshResponse> RefreshAsync(IRefreshRequest request, CancellationToken ct = default) => DoRequestAsync<IRefreshRequest, RefreshResponse>(request, request.RequestParameters, ct);
/// <summary>
/// <c>POST</c> request to the <c>indices.reload_search_analyzers</c> API, read more about this API online:
/// <para></para>
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html</a>
/// </summary>
public ReloadSearchAnalyzersResponse ReloadSearchAnalyzers(Indices index, Func<ReloadSearchAnalyzersDescriptor, IReloadSearchAnalyzersRequest> selector = null) => ReloadSearchAnalyzers(selector.InvokeOrDefault(new ReloadSearchAnalyzersDescriptor(index: index)));
/// <summary>
/// <c>POST</c> request to the <c>indices.reload_search_analyzers</c> API, read more about this API online:
/// <para></para>
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html</a>
/// </summary>
public Task<ReloadSearchAnalyzersResponse> ReloadSearchAnalyzersAsync(Indices index, Func<ReloadSearchAnalyzersDescriptor, IReloadSearchAnalyzersRequest> selector = null, CancellationToken ct = default) => ReloadSearchAnalyzersAsync(selector.InvokeOrDefault(new ReloadSearchAnalyzersDescriptor(index: index)), ct);
/// <summary>
/// <c>POST</c> request to the <c>indices.reload_search_analyzers</c> API, read more about this API online:
/// <para></para>
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html</a>
/// </summary>
public ReloadSearchAnalyzersResponse ReloadSearchAnalyzers(IReloadSearchAnalyzersRequest request) => DoRequest<IReloadSearchAnalyzersRequest, ReloadSearchAnalyzersResponse>(request, request.RequestParameters);
/// <summary>
/// <c>POST</c> request to the <c>indices.reload_search_analyzers</c> API, read more about this API online:
/// <para></para>
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html</a>
/// </summary>
public Task<ReloadSearchAnalyzersResponse> ReloadSearchAnalyzersAsync(IReloadSearchAnalyzersRequest request, CancellationToken ct = default) => DoRequestAsync<IReloadSearchAnalyzersRequest, ReloadSearchAnalyzersResponse>(request, request.RequestParameters, ct);
/// <summary>
/// <c>POST</c> request to the <c>indices.rollover</c> API, read more about this API online:
/// <para></para>
/// <a href = "https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-rollover-index.html">https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-rollover-index.html</a>
Expand Down
18 changes: 18 additions & 0 deletions src/Nest/Indices/ReloadSearchAnalyzers/ReloadDetails.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
using System.Collections.Generic;
using System.Runtime.Serialization;
using Elasticsearch.Net;

namespace Nest
{
public class ReloadDetails
{
[DataMember(Name ="index")]
public string Index { get; internal set; }

[DataMember(Name ="reloaded_analyzers")]
public IReadOnlyCollection<string> ReloadedAnalyzers { get; internal set; } = EmptyReadOnly<string>.Collection;

[DataMember(Name ="reloaded_node_ids")]
public IReadOnlyCollection<string> ReloadedNodeIds { get; internal set; } = EmptyReadOnly<string>.Collection;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
namespace Nest
{
[MapsApi("indices.reload_search_analyzers.json")]
public partial interface IReloadSearchAnalyzersRequest { }

public partial class ReloadSearchAnalyzersRequest { }

public partial class ReloadSearchAnalyzersDescriptor { }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
using System.Collections.Generic;
using System.Runtime.Serialization;
using Elasticsearch.Net;

namespace Nest
{
public class ReloadSearchAnalyzersResponse : ResponseBase
{
[DataMember(Name ="_shards")]
public ShardStatistics Shards { get; internal set; }

[DataMember(Name ="reload_details")]
public IReadOnlyCollection<ReloadDetails> ReloadDetails { get; internal set; } = EmptyReadOnly<ReloadDetails>.Collection;
}
}
56 changes: 56 additions & 0 deletions src/Nest/Requests.Indices.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2055,6 +2055,62 @@ public bool? IgnoreUnavailable
}
}

[InterfaceDataContract]
public partial interface IReloadSearchAnalyzersRequest : IRequest<ReloadSearchAnalyzersRequestParameters>
{
[IgnoreDataMember]
Indices Index
{
get;
}
}

///<summary>Request for ReloadSearchAnalyzers <para>https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-reload-analyzers.html</para></summary>
public partial class ReloadSearchAnalyzersRequest : PlainRequestBase<ReloadSearchAnalyzersRequestParameters>, IReloadSearchAnalyzersRequest
{
protected IReloadSearchAnalyzersRequest Self => this;
internal override ApiUrls ApiUrls => ApiUrlsLookups.IndicesReloadSearchAnalyzers;
///<summary>/{index}/_reload_search_analyzers</summary>
///<param name = "index">this parameter is required</param>
public ReloadSearchAnalyzersRequest(Indices index): base(r => r.Required("index", index))
{
}

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

// values part of the url path
[IgnoreDataMember]
Indices IReloadSearchAnalyzersRequest.Index => Self.RouteValues.Get<Indices>("index");
// Request parameters
///<summary>
/// Whether to ignore if a wildcard indices expression resolves into no concrete indices. (This includes `_all` string or when no indices have
/// been specified)
///</summary>
public bool? AllowNoIndices
{
get => Q<bool? >("allow_no_indices");
set => Q("allow_no_indices", value);
}

///<summary>Whether to expand wildcard expression to concrete indices that are open, closed or both.</summary>
public ExpandWildcards? ExpandWildcards
{
get => Q<ExpandWildcards? >("expand_wildcards");
set => Q("expand_wildcards", value);
}

///<summary>Whether specified concrete indices should be ignored when unavailable (missing or closed)</summary>
public bool? IgnoreUnavailable
{
get => Q<bool? >("ignore_unavailable");
set => Q("ignore_unavailable", value);
}
}

[InterfaceDataContract]
public partial interface IRolloverIndexRequest : IRequest<RolloverIndexRequestParameters>
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
using System;
using Elastic.Xunit.XunitPlumbing;
using Elasticsearch.Net;
using Nest;
using Tests.Core.Extensions;
using Tests.Core.ManagedElasticsearch.Clusters;
using Tests.Framework.EndpointTests;
using Tests.Framework.EndpointTests.TestState;

namespace Tests.Indices.ReloadSearchAnalyzers
{
[SkipVersion("<7.7.0", "Introduced in 7.7.0")]
public class ReloadSearchAnalyzersApiTests
: ApiIntegrationTestBase<ReadOnlyCluster, ReloadSearchAnalyzersResponse, IReloadSearchAnalyzersRequest, ReloadSearchAnalyzersDescriptor, ReloadSearchAnalyzersRequest>
{
public ReloadSearchAnalyzersApiTests(ReadOnlyCluster cluster, EndpointUsage usage) : base(cluster, usage) { }

protected override bool ExpectIsValid => true;
protected override int ExpectStatusCode => 200;

protected override ReloadSearchAnalyzersDescriptor NewDescriptor() => new ReloadSearchAnalyzersDescriptor(CallIsolatedValue);

protected override Func<ReloadSearchAnalyzersDescriptor, IReloadSearchAnalyzersRequest> Fluent => d => d.Index(CallIsolatedValue);
protected override HttpMethod HttpMethod => HttpMethod.POST;

protected override ReloadSearchAnalyzersRequest Initializer => new ReloadSearchAnalyzersRequest(CallIsolatedValue);
protected override string UrlPath => $"/{CallIsolatedValue}/_reload_search_analyzers";

protected override LazyResponses ClientUsage() => Calls(
(client, f) => client.Indices.ReloadSearchAnalyzers(CallIsolatedValue, f),
(client, f) => client.Indices.ReloadSearchAnalyzersAsync(CallIsolatedValue, f),
(client, r) => client.Indices.ReloadSearchAnalyzers(r),
(client, r) => client.Indices.ReloadSearchAnalyzersAsync(r)
);

protected override void ExpectResponse(ReloadSearchAnalyzersResponse response) => response.ShouldBeValid();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
using System.Threading.Tasks;
using Elastic.Xunit.XunitPlumbing;
using Nest;
using Tests.Framework.EndpointTests;
using static Tests.Framework.EndpointTests.UrlTester;
using static Nest.Indices;

namespace Tests.Indices.ReloadSearchAnalyzers
{
public class ReloadSearchAnalyzersUrlTests
{
[U] public async Task Urls()
{
await POST($"/_all/_reload_search_analyzers")
.Fluent(c => c.Indices.ReloadSearchAnalyzers(All))
.Request(c => c.Indices.ReloadSearchAnalyzers(new ReloadSearchAnalyzersRequest(All)))
.FluentAsync(c => c.Indices.ReloadSearchAnalyzersAsync(All))
.RequestAsync(c => c.Indices.ReloadSearchAnalyzersAsync(new ReloadSearchAnalyzersRequest(All)))
;

var index = "index1,index2";
await POST($"/index1%2Cindex2/_reload_search_analyzers")
.Fluent(c => c.Indices.ReloadSearchAnalyzers(index))
.Request(c => c.Indices.ReloadSearchAnalyzers(new ReloadSearchAnalyzersRequest(index)))
.FluentAsync(c => c.Indices.ReloadSearchAnalyzersAsync(index))
.RequestAsync(c => c.Indices.ReloadSearchAnalyzersAsync(new ReloadSearchAnalyzersRequest(index)))
;
}
}
}