Skip to content

Commit

Permalink
Implement indices.reload_search_analyzers (#4529)
Browse files Browse the repository at this point in the history
Implement indices.reload_search_analyzers
  • Loading branch information
codebrain committed Apr 16, 2020
1 parent aae3269 commit 8e1f5d0
Show file tree
Hide file tree
Showing 9 changed files with 224 additions and 1 deletion.
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 RefreshRequest(Indices index): base(r => r.Optional("index", index))
}
}

[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)))
;
}
}
}

0 comments on commit 8e1f5d0

Please sign in to comment.