Skip to content

[Backport 8.x] Regenerate client using the latest specification #8371

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 1 commit into from
Sep 30, 2024
Merged
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
@@ -145,6 +145,14 @@ public sealed partial class HealthResponse : ElasticsearchResponse
[JsonInclude, JsonPropertyName("timed_out")]
public bool TimedOut { get; init; }

/// <summary>
/// <para>
/// The number of primary shards that are not allocated.
/// </para>
/// </summary>
[JsonInclude, JsonPropertyName("unassigned_primary_shards")]
public int UnassignedPrimaryShards { get; init; }

/// <summary>
/// <para>
/// The number of shards that are not allocated.
Original file line number Diff line number Diff line change
@@ -51,7 +51,7 @@ public sealed partial class EsqlQueryRequestParameters : RequestParameters
/// A short version of the Accept header, e.g. json, yaml.
/// </para>
/// </summary>
public string? Format { get => Q<string?>("format"); set => Q("format", value); }
public Elastic.Clients.Elasticsearch.Serverless.Esql.EsqlFormat? Format { get => Q<Elastic.Clients.Elasticsearch.Serverless.Esql.EsqlFormat?>("format"); set => Q("format", value); }
}

/// <summary>
@@ -92,7 +92,7 @@ public sealed partial class EsqlQueryRequest : PlainRequest<EsqlQueryRequestPara
/// </para>
/// </summary>
[JsonIgnore]
public string? Format { get => Q<string?>("format"); set => Q("format", value); }
public Elastic.Clients.Elasticsearch.Serverless.Esql.EsqlFormat? Format { get => Q<Elastic.Clients.Elasticsearch.Serverless.Esql.EsqlFormat?>("format"); set => Q("format", value); }

/// <summary>
/// <para>
@@ -163,7 +163,7 @@ public EsqlQueryRequestDescriptor()

public EsqlQueryRequestDescriptor<TDocument> Delimiter(string? delimiter) => Qs("delimiter", delimiter);
public EsqlQueryRequestDescriptor<TDocument> DropNullColumns(bool? dropNullColumns = true) => Qs("drop_null_columns", dropNullColumns);
public EsqlQueryRequestDescriptor<TDocument> Format(string? format) => Qs("format", format);
public EsqlQueryRequestDescriptor<TDocument> Format(Elastic.Clients.Elasticsearch.Serverless.Esql.EsqlFormat? format) => Qs("format", format);

private bool? ColumnarValue { get; set; }
private Elastic.Clients.Elasticsearch.Serverless.QueryDsl.Query? FilterValue { get; set; }
@@ -328,7 +328,7 @@ public EsqlQueryRequestDescriptor()

public EsqlQueryRequestDescriptor Delimiter(string? delimiter) => Qs("delimiter", delimiter);
public EsqlQueryRequestDescriptor DropNullColumns(bool? dropNullColumns = true) => Qs("drop_null_columns", dropNullColumns);
public EsqlQueryRequestDescriptor Format(string? format) => Qs("format", format);
public EsqlQueryRequestDescriptor Format(Elastic.Clients.Elasticsearch.Serverless.Esql.EsqlFormat? format) => Qs("format", format);

private bool? ColumnarValue { get; set; }
private Elastic.Clients.Elasticsearch.Serverless.QueryDsl.Query? FilterValue { get; set; }
Original file line number Diff line number Diff line change
@@ -52,6 +52,13 @@ public sealed partial class GetDataStreamRequestParameters : RequestParameters
/// </para>
/// </summary>
public Elastic.Clients.Elasticsearch.Serverless.Duration? MasterTimeout { get => Q<Elastic.Clients.Elasticsearch.Serverless.Duration?>("master_timeout"); set => Q("master_timeout", value); }

/// <summary>
/// <para>
/// Whether the maximum timestamp for each data stream should be calculated and returned.
/// </para>
/// </summary>
public bool? Verbose { get => Q<bool?>("verbose"); set => Q("verbose", value); }
}

/// <summary>
@@ -102,6 +109,14 @@ public GetDataStreamRequest(Elastic.Clients.Elasticsearch.Serverless.DataStreamN
/// </summary>
[JsonIgnore]
public Elastic.Clients.Elasticsearch.Serverless.Duration? MasterTimeout { get => Q<Elastic.Clients.Elasticsearch.Serverless.Duration?>("master_timeout"); set => Q("master_timeout", value); }

/// <summary>
/// <para>
/// Whether the maximum timestamp for each data stream should be calculated and returned.
/// </para>
/// </summary>
[JsonIgnore]
public bool? Verbose { get => Q<bool?>("verbose"); set => Q("verbose", value); }
}

/// <summary>
@@ -133,6 +148,7 @@ public GetDataStreamRequestDescriptor()
public GetDataStreamRequestDescriptor ExpandWildcards(ICollection<Elastic.Clients.Elasticsearch.Serverless.ExpandWildcard>? expandWildcards) => Qs("expand_wildcards", expandWildcards);
public GetDataStreamRequestDescriptor IncludeDefaults(bool? includeDefaults = true) => Qs("include_defaults", includeDefaults);
public GetDataStreamRequestDescriptor MasterTimeout(Elastic.Clients.Elasticsearch.Serverless.Duration? masterTimeout) => Qs("master_timeout", masterTimeout);
public GetDataStreamRequestDescriptor Verbose(bool? verbose = true) => Qs("verbose", verbose);

public GetDataStreamRequestDescriptor Name(Elastic.Clients.Elasticsearch.Serverless.DataStreamNames? name)
{
Original file line number Diff line number Diff line change
@@ -31,6 +31,15 @@ namespace Elastic.Clients.Elasticsearch.Serverless.IndexManagement;

public sealed partial class ResolveIndexRequestParameters : RequestParameters
{
/// <summary>
/// <para>
/// If <c>false</c>, the request returns an error if any wildcard expression, index alias, or <c>_all</c> value targets only missing or closed indices.
/// This behavior applies even if the request targets other open indices.
/// For example, a request targeting <c>foo*,bar*</c> returns an error if an index starts with <c>foo</c> but no index starts with <c>bar</c>.
/// </para>
/// </summary>
public bool? AllowNoIndices { get => Q<bool?>("allow_no_indices"); set => Q("allow_no_indices", value); }

/// <summary>
/// <para>
/// Type of index that wildcard patterns can match.
@@ -40,6 +49,13 @@ public sealed partial class ResolveIndexRequestParameters : RequestParameters
/// </para>
/// </summary>
public ICollection<Elastic.Clients.Elasticsearch.Serverless.ExpandWildcard>? ExpandWildcards { get => Q<ICollection<Elastic.Clients.Elasticsearch.Serverless.ExpandWildcard>?>("expand_wildcards"); set => Q("expand_wildcards", value); }

/// <summary>
/// <para>
/// If <c>false</c>, the request returns an error if it targets a missing or closed index.
/// </para>
/// </summary>
public bool? IgnoreUnavailable { get => Q<bool?>("ignore_unavailable"); set => Q("ignore_unavailable", value); }
}

/// <summary>
@@ -62,6 +78,16 @@ public ResolveIndexRequest(Elastic.Clients.Elasticsearch.Serverless.Names name)

internal override string OperationName => "indices.resolve_index";

/// <summary>
/// <para>
/// If <c>false</c>, the request returns an error if any wildcard expression, index alias, or <c>_all</c> value targets only missing or closed indices.
/// This behavior applies even if the request targets other open indices.
/// For example, a request targeting <c>foo*,bar*</c> returns an error if an index starts with <c>foo</c> but no index starts with <c>bar</c>.
/// </para>
/// </summary>
[JsonIgnore]
public bool? AllowNoIndices { get => Q<bool?>("allow_no_indices"); set => Q("allow_no_indices", value); }

/// <summary>
/// <para>
/// Type of index that wildcard patterns can match.
@@ -72,6 +98,14 @@ public ResolveIndexRequest(Elastic.Clients.Elasticsearch.Serverless.Names name)
/// </summary>
[JsonIgnore]
public ICollection<Elastic.Clients.Elasticsearch.Serverless.ExpandWildcard>? ExpandWildcards { get => Q<ICollection<Elastic.Clients.Elasticsearch.Serverless.ExpandWildcard>?>("expand_wildcards"); set => Q("expand_wildcards", value); }

/// <summary>
/// <para>
/// If <c>false</c>, the request returns an error if it targets a missing or closed index.
/// </para>
/// </summary>
[JsonIgnore]
public bool? IgnoreUnavailable { get => Q<bool?>("ignore_unavailable"); set => Q("ignore_unavailable", value); }
}

/// <summary>
@@ -96,7 +130,9 @@ public ResolveIndexRequestDescriptor(Elastic.Clients.Elasticsearch.Serverless.Na

internal override string OperationName => "indices.resolve_index";

public ResolveIndexRequestDescriptor AllowNoIndices(bool? allowNoIndices = true) => Qs("allow_no_indices", allowNoIndices);
public ResolveIndexRequestDescriptor ExpandWildcards(ICollection<Elastic.Clients.Elasticsearch.Serverless.ExpandWildcard>? expandWildcards) => Qs("expand_wildcards", expandWildcards);
public ResolveIndexRequestDescriptor IgnoreUnavailable(bool? ignoreUnavailable = true) => Qs("ignore_unavailable", ignoreUnavailable);

public ResolveIndexRequestDescriptor Name(Elastic.Clients.Elasticsearch.Serverless.Names name)
{
Original file line number Diff line number Diff line change
@@ -97,6 +97,15 @@ public PutPipelineRequest(Elastic.Clients.Elasticsearch.Serverless.Id id) : base
[JsonIgnore]
public Elastic.Clients.Elasticsearch.Serverless.Duration? Timeout { get => Q<Elastic.Clients.Elasticsearch.Serverless.Duration?>("timeout"); set => Q("timeout", value); }

/// <summary>
/// <para>
/// Marks this ingest pipeline as deprecated.
/// When a deprecated ingest pipeline is referenced as the default or final pipeline when creating or updating a non-deprecated index template, Elasticsearch will emit a deprecation warning.
/// </para>
/// </summary>
[JsonInclude, JsonPropertyName("deprecated")]
public bool? Deprecated { get; set; }

/// <summary>
/// <para>
/// Description of the ingest pipeline.
@@ -170,6 +179,7 @@ public PutPipelineRequestDescriptor<TDocument> Id(Elastic.Clients.Elasticsearch.
return Self;
}

private bool? DeprecatedValue { get; set; }
private string? DescriptionValue { get; set; }
private IDictionary<string, object>? MetaValue { get; set; }
private ICollection<Elastic.Clients.Elasticsearch.Serverless.Ingest.Processor>? OnFailureValue { get; set; }
@@ -182,6 +192,18 @@ public PutPipelineRequestDescriptor<TDocument> Id(Elastic.Clients.Elasticsearch.
private Action<Elastic.Clients.Elasticsearch.Serverless.Ingest.ProcessorDescriptor<TDocument>>[] ProcessorsDescriptorActions { get; set; }
private long? VersionValue { get; set; }

/// <summary>
/// <para>
/// Marks this ingest pipeline as deprecated.
/// When a deprecated ingest pipeline is referenced as the default or final pipeline when creating or updating a non-deprecated index template, Elasticsearch will emit a deprecation warning.
/// </para>
/// </summary>
public PutPipelineRequestDescriptor<TDocument> Deprecated(bool? deprecated = true)
{
DeprecatedValue = deprecated;
return Self;
}

/// <summary>
/// <para>
/// Description of the ingest pipeline.
@@ -300,6 +322,12 @@ public PutPipelineRequestDescriptor<TDocument> Version(long? version)
protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings)
{
writer.WriteStartObject();
if (DeprecatedValue.HasValue)
{
writer.WritePropertyName("deprecated");
writer.WriteBooleanValue(DeprecatedValue.Value);
}

if (!string.IsNullOrEmpty(DescriptionValue))
{
writer.WritePropertyName("description");
@@ -416,6 +444,7 @@ public PutPipelineRequestDescriptor Id(Elastic.Clients.Elasticsearch.Serverless.
return Self;
}

private bool? DeprecatedValue { get; set; }
private string? DescriptionValue { get; set; }
private IDictionary<string, object>? MetaValue { get; set; }
private ICollection<Elastic.Clients.Elasticsearch.Serverless.Ingest.Processor>? OnFailureValue { get; set; }
@@ -428,6 +457,18 @@ public PutPipelineRequestDescriptor Id(Elastic.Clients.Elasticsearch.Serverless.
private Action<Elastic.Clients.Elasticsearch.Serverless.Ingest.ProcessorDescriptor>[] ProcessorsDescriptorActions { get; set; }
private long? VersionValue { get; set; }

/// <summary>
/// <para>
/// Marks this ingest pipeline as deprecated.
/// When a deprecated ingest pipeline is referenced as the default or final pipeline when creating or updating a non-deprecated index template, Elasticsearch will emit a deprecation warning.
/// </para>
/// </summary>
public PutPipelineRequestDescriptor Deprecated(bool? deprecated = true)
{
DeprecatedValue = deprecated;
return Self;
}

/// <summary>
/// <para>
/// Description of the ingest pipeline.
@@ -546,6 +587,12 @@ public PutPipelineRequestDescriptor Version(long? version)
protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings)
{
writer.WriteStartObject();
if (DeprecatedValue.HasValue)
{
writer.WritePropertyName("deprecated");
writer.WriteBooleanValue(DeprecatedValue.Value);
}

if (!string.IsNullOrEmpty(DescriptionValue))
{
writer.WritePropertyName("description");
Original file line number Diff line number Diff line change
@@ -90,7 +90,7 @@ public OpenPointInTimeRequest(Elastic.Clients.Elasticsearch.Serverless.Indices i

protected override HttpMethod StaticHttpMethod => HttpMethod.POST;

internal override bool SupportsBody => false;
internal override bool SupportsBody => true;

internal override string OperationName => "open_point_in_time";

@@ -136,6 +136,14 @@ public OpenPointInTimeRequest(Elastic.Clients.Elasticsearch.Serverless.Indices i
/// </summary>
[JsonIgnore]
public Elastic.Clients.Elasticsearch.Serverless.Routing? Routing { get => Q<Elastic.Clients.Elasticsearch.Serverless.Routing?>("routing"); set => Q("routing", value); }

/// <summary>
/// <para>
/// Allows to filter indices if the provided query rewrites to <c>match_none</c> on every shard.
/// </para>
/// </summary>
[JsonInclude, JsonPropertyName("index_filter")]
public Elastic.Clients.Elasticsearch.Serverless.QueryDsl.Query? IndexFilter { get; set; }
}

/// <summary>
@@ -164,7 +172,7 @@ public OpenPointInTimeRequestDescriptor() : this(typeof(TDocument))

protected override HttpMethod StaticHttpMethod => HttpMethod.POST;

internal override bool SupportsBody => false;
internal override bool SupportsBody => true;

internal override string OperationName => "open_point_in_time";

@@ -180,8 +188,59 @@ public OpenPointInTimeRequestDescriptor<TDocument> Indices(Elastic.Clients.Elast
return Self;
}

private Elastic.Clients.Elasticsearch.Serverless.QueryDsl.Query? IndexFilterValue { get; set; }
private Elastic.Clients.Elasticsearch.Serverless.QueryDsl.QueryDescriptor<TDocument> IndexFilterDescriptor { get; set; }
private Action<Elastic.Clients.Elasticsearch.Serverless.QueryDsl.QueryDescriptor<TDocument>> IndexFilterDescriptorAction { get; set; }

/// <summary>
/// <para>
/// Allows to filter indices if the provided query rewrites to <c>match_none</c> on every shard.
/// </para>
/// </summary>
public OpenPointInTimeRequestDescriptor<TDocument> IndexFilter(Elastic.Clients.Elasticsearch.Serverless.QueryDsl.Query? indexFilter)
{
IndexFilterDescriptor = null;
IndexFilterDescriptorAction = null;
IndexFilterValue = indexFilter;
return Self;
}

public OpenPointInTimeRequestDescriptor<TDocument> IndexFilter(Elastic.Clients.Elasticsearch.Serverless.QueryDsl.QueryDescriptor<TDocument> descriptor)
{
IndexFilterValue = null;
IndexFilterDescriptorAction = null;
IndexFilterDescriptor = descriptor;
return Self;
}

public OpenPointInTimeRequestDescriptor<TDocument> IndexFilter(Action<Elastic.Clients.Elasticsearch.Serverless.QueryDsl.QueryDescriptor<TDocument>> configure)
{
IndexFilterValue = null;
IndexFilterDescriptor = null;
IndexFilterDescriptorAction = configure;
return Self;
}

protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings)
{
writer.WriteStartObject();
if (IndexFilterDescriptor is not null)
{
writer.WritePropertyName("index_filter");
JsonSerializer.Serialize(writer, IndexFilterDescriptor, options);
}
else if (IndexFilterDescriptorAction is not null)
{
writer.WritePropertyName("index_filter");
JsonSerializer.Serialize(writer, new Elastic.Clients.Elasticsearch.Serverless.QueryDsl.QueryDescriptor<TDocument>(IndexFilterDescriptorAction), options);
}
else if (IndexFilterValue is not null)
{
writer.WritePropertyName("index_filter");
JsonSerializer.Serialize(writer, IndexFilterValue, options);
}

writer.WriteEndObject();
}
}

@@ -207,7 +266,7 @@ public OpenPointInTimeRequestDescriptor(Elastic.Clients.Elasticsearch.Serverless

protected override HttpMethod StaticHttpMethod => HttpMethod.POST;

internal override bool SupportsBody => false;
internal override bool SupportsBody => true;

internal override string OperationName => "open_point_in_time";

@@ -223,7 +282,58 @@ public OpenPointInTimeRequestDescriptor Indices(Elastic.Clients.Elasticsearch.Se
return Self;
}

private Elastic.Clients.Elasticsearch.Serverless.QueryDsl.Query? IndexFilterValue { get; set; }
private Elastic.Clients.Elasticsearch.Serverless.QueryDsl.QueryDescriptor IndexFilterDescriptor { get; set; }
private Action<Elastic.Clients.Elasticsearch.Serverless.QueryDsl.QueryDescriptor> IndexFilterDescriptorAction { get; set; }

/// <summary>
/// <para>
/// Allows to filter indices if the provided query rewrites to <c>match_none</c> on every shard.
/// </para>
/// </summary>
public OpenPointInTimeRequestDescriptor IndexFilter(Elastic.Clients.Elasticsearch.Serverless.QueryDsl.Query? indexFilter)
{
IndexFilterDescriptor = null;
IndexFilterDescriptorAction = null;
IndexFilterValue = indexFilter;
return Self;
}

public OpenPointInTimeRequestDescriptor IndexFilter(Elastic.Clients.Elasticsearch.Serverless.QueryDsl.QueryDescriptor descriptor)
{
IndexFilterValue = null;
IndexFilterDescriptorAction = null;
IndexFilterDescriptor = descriptor;
return Self;
}

public OpenPointInTimeRequestDescriptor IndexFilter(Action<Elastic.Clients.Elasticsearch.Serverless.QueryDsl.QueryDescriptor> configure)
{
IndexFilterValue = null;
IndexFilterDescriptor = null;
IndexFilterDescriptorAction = configure;
return Self;
}

protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings)
{
writer.WriteStartObject();
if (IndexFilterDescriptor is not null)
{
writer.WritePropertyName("index_filter");
JsonSerializer.Serialize(writer, IndexFilterDescriptor, options);
}
else if (IndexFilterDescriptorAction is not null)
{
writer.WritePropertyName("index_filter");
JsonSerializer.Serialize(writer, new Elastic.Clients.Elasticsearch.Serverless.QueryDsl.QueryDescriptor(IndexFilterDescriptorAction), options);
}
else if (IndexFilterValue is not null)
{
writer.WritePropertyName("index_filter");
JsonSerializer.Serialize(writer, IndexFilterValue, options);
}

writer.WriteEndObject();
}
}
Original file line number Diff line number Diff line change
@@ -30,4 +30,12 @@ public sealed partial class OpenPointInTimeResponse : ElasticsearchResponse
{
[JsonInclude, JsonPropertyName("id")]
public string Id { get; init; }

/// <summary>
/// <para>
/// Shards used to create the PIT
/// </para>
/// </summary>
[JsonInclude, JsonPropertyName("_shards")]
public Elastic.Clients.Elasticsearch.Serverless.ShardStatistics Shards { get; init; }
}
Original file line number Diff line number Diff line change
@@ -373,12 +373,6 @@ public override SearchRequest Read(ref Utf8JsonReader reader, Type typeToConvert
continue;
}

if (property == "rank")
{
variant.Rank = JsonSerializer.Deserialize<Elastic.Clients.Elasticsearch.Serverless.Rank?>(ref reader, options);
continue;
}

if (property == "rescore")
{
variant.Rescore = JsonSerializer.Deserialize<ICollection<Elastic.Clients.Elasticsearch.Serverless.Core.Search.Rescore>?>(ref reader, options);
@@ -585,12 +579,6 @@ public override void Write(Utf8JsonWriter writer, SearchRequest value, JsonSeria
JsonSerializer.Serialize(writer, value.Query, options);
}

if (value.Rank is not null)
{
writer.WritePropertyName("rank");
JsonSerializer.Serialize(writer, value.Rank, options);
}

if (value.Rescore is not null)
{
writer.WritePropertyName("rescore");
@@ -1128,14 +1116,6 @@ public SearchRequest(Elastic.Clients.Elasticsearch.Serverless.Indices? indices)
[JsonInclude, JsonPropertyName("query")]
public Elastic.Clients.Elasticsearch.Serverless.QueryDsl.Query? Query { get; set; }

/// <summary>
/// <para>
/// Defines the Reciprocal Rank Fusion (RRF) to use.
/// </para>
/// </summary>
[JsonInclude, JsonPropertyName("rank")]
public Elastic.Clients.Elasticsearch.Serverless.Rank? Rank { get; set; }

/// <summary>
/// <para>
/// Can be used to improve precision by reordering just the top (for example 100 - 500) documents returned by the <c>query</c> and <c>post_filter</c> phases.
@@ -1401,9 +1381,6 @@ public SearchRequestDescriptor<TDocument> Indices(Elastic.Clients.Elasticsearch.
private Elastic.Clients.Elasticsearch.Serverless.QueryDsl.Query? QueryValue { get; set; }
private Elastic.Clients.Elasticsearch.Serverless.QueryDsl.QueryDescriptor<TDocument> QueryDescriptor { get; set; }
private Action<Elastic.Clients.Elasticsearch.Serverless.QueryDsl.QueryDescriptor<TDocument>> QueryDescriptorAction { get; set; }
private Elastic.Clients.Elasticsearch.Serverless.Rank? RankValue { get; set; }
private Elastic.Clients.Elasticsearch.Serverless.RankDescriptor RankDescriptor { get; set; }
private Action<Elastic.Clients.Elasticsearch.Serverless.RankDescriptor> RankDescriptorAction { get; set; }
private ICollection<Elastic.Clients.Elasticsearch.Serverless.Core.Search.Rescore>? RescoreValue { get; set; }
private Elastic.Clients.Elasticsearch.Serverless.Core.Search.RescoreDescriptor<TDocument> RescoreDescriptor { get; set; }
private Action<Elastic.Clients.Elasticsearch.Serverless.Core.Search.RescoreDescriptor<TDocument>> RescoreDescriptorAction { get; set; }
@@ -1790,35 +1767,6 @@ public SearchRequestDescriptor<TDocument> Query(Action<Elastic.Clients.Elasticse
return Self;
}

/// <summary>
/// <para>
/// Defines the Reciprocal Rank Fusion (RRF) to use.
/// </para>
/// </summary>
public SearchRequestDescriptor<TDocument> Rank(Elastic.Clients.Elasticsearch.Serverless.Rank? rank)
{
RankDescriptor = null;
RankDescriptorAction = null;
RankValue = rank;
return Self;
}

public SearchRequestDescriptor<TDocument> Rank(Elastic.Clients.Elasticsearch.Serverless.RankDescriptor descriptor)
{
RankValue = null;
RankDescriptorAction = null;
RankDescriptor = descriptor;
return Self;
}

public SearchRequestDescriptor<TDocument> Rank(Action<Elastic.Clients.Elasticsearch.Serverless.RankDescriptor> configure)
{
RankValue = null;
RankDescriptor = null;
RankDescriptorAction = configure;
return Self;
}

/// <summary>
/// <para>
/// Can be used to improve precision by reordering just the top (for example 100 - 500) documents returned by the <c>query</c> and <c>post_filter</c> phases.
@@ -2367,22 +2315,6 @@ protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions o
JsonSerializer.Serialize(writer, QueryValue, options);
}

if (RankDescriptor is not null)
{
writer.WritePropertyName("rank");
JsonSerializer.Serialize(writer, RankDescriptor, options);
}
else if (RankDescriptorAction is not null)
{
writer.WritePropertyName("rank");
JsonSerializer.Serialize(writer, new Elastic.Clients.Elasticsearch.Serverless.RankDescriptor(RankDescriptorAction), options);
}
else if (RankValue is not null)
{
writer.WritePropertyName("rank");
JsonSerializer.Serialize(writer, RankValue, options);
}

if (RescoreDescriptor is not null)
{
writer.WritePropertyName("rescore");
@@ -2668,9 +2600,6 @@ public SearchRequestDescriptor Indices(Elastic.Clients.Elasticsearch.Serverless.
private Elastic.Clients.Elasticsearch.Serverless.QueryDsl.Query? QueryValue { get; set; }
private Elastic.Clients.Elasticsearch.Serverless.QueryDsl.QueryDescriptor QueryDescriptor { get; set; }
private Action<Elastic.Clients.Elasticsearch.Serverless.QueryDsl.QueryDescriptor> QueryDescriptorAction { get; set; }
private Elastic.Clients.Elasticsearch.Serverless.Rank? RankValue { get; set; }
private Elastic.Clients.Elasticsearch.Serverless.RankDescriptor RankDescriptor { get; set; }
private Action<Elastic.Clients.Elasticsearch.Serverless.RankDescriptor> RankDescriptorAction { get; set; }
private ICollection<Elastic.Clients.Elasticsearch.Serverless.Core.Search.Rescore>? RescoreValue { get; set; }
private Elastic.Clients.Elasticsearch.Serverless.Core.Search.RescoreDescriptor RescoreDescriptor { get; set; }
private Action<Elastic.Clients.Elasticsearch.Serverless.Core.Search.RescoreDescriptor> RescoreDescriptorAction { get; set; }
@@ -3057,35 +2986,6 @@ public SearchRequestDescriptor Query(Action<Elastic.Clients.Elasticsearch.Server
return Self;
}

/// <summary>
/// <para>
/// Defines the Reciprocal Rank Fusion (RRF) to use.
/// </para>
/// </summary>
public SearchRequestDescriptor Rank(Elastic.Clients.Elasticsearch.Serverless.Rank? rank)
{
RankDescriptor = null;
RankDescriptorAction = null;
RankValue = rank;
return Self;
}

public SearchRequestDescriptor Rank(Elastic.Clients.Elasticsearch.Serverless.RankDescriptor descriptor)
{
RankValue = null;
RankDescriptorAction = null;
RankDescriptor = descriptor;
return Self;
}

public SearchRequestDescriptor Rank(Action<Elastic.Clients.Elasticsearch.Serverless.RankDescriptor> configure)
{
RankValue = null;
RankDescriptor = null;
RankDescriptorAction = configure;
return Self;
}

/// <summary>
/// <para>
/// Can be used to improve precision by reordering just the top (for example 100 - 500) documents returned by the <c>query</c> and <c>post_filter</c> phases.
@@ -3634,22 +3534,6 @@ protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions o
JsonSerializer.Serialize(writer, QueryValue, options);
}

if (RankDescriptor is not null)
{
writer.WritePropertyName("rank");
JsonSerializer.Serialize(writer, RankDescriptor, options);
}
else if (RankDescriptorAction is not null)
{
writer.WritePropertyName("rank");
JsonSerializer.Serialize(writer, new Elastic.Clients.Elasticsearch.Serverless.RankDescriptor(RankDescriptorAction), options);
}
else if (RankValue is not null)
{
writer.WritePropertyName("rank");
JsonSerializer.Serialize(writer, RankValue, options);
}

if (RescoreDescriptor is not null)
{
writer.WritePropertyName("rescore");
Original file line number Diff line number Diff line change
@@ -36,7 +36,7 @@ public sealed partial class QueryRequestParameters : RequestParameters
/// Format for the response.
/// </para>
/// </summary>
public string? Format { get => Q<string?>("format"); set => Q("format", value); }
public Elastic.Clients.Elasticsearch.Serverless.Sql.SqlFormat? Format { get => Q<Elastic.Clients.Elasticsearch.Serverless.Sql.SqlFormat?>("format"); set => Q("format", value); }
}

/// <summary>
@@ -60,7 +60,7 @@ public sealed partial class QueryRequest : PlainRequest<QueryRequestParameters>
/// </para>
/// </summary>
[JsonIgnore]
public string? Format { get => Q<string?>("format"); set => Q("format", value); }
public Elastic.Clients.Elasticsearch.Serverless.Sql.SqlFormat? Format { get => Q<Elastic.Clients.Elasticsearch.Serverless.Sql.SqlFormat?>("format"); set => Q("format", value); }

/// <summary>
/// <para>
@@ -215,7 +215,7 @@ public QueryRequestDescriptor()

internal override string OperationName => "sql.query";

public QueryRequestDescriptor<TDocument> Format(string? format) => Qs("format", format);
public QueryRequestDescriptor<TDocument> Format(Elastic.Clients.Elasticsearch.Serverless.Sql.SqlFormat? format) => Qs("format", format);

private string? CatalogValue { get; set; }
private bool? ColumnarValue { get; set; }
@@ -567,7 +567,7 @@ public QueryRequestDescriptor()

internal override string OperationName => "sql.query";

public QueryRequestDescriptor Format(string? format) => Qs("format", format);
public QueryRequestDescriptor Format(Elastic.Clients.Elasticsearch.Serverless.Sql.SqlFormat? format) => Qs("format", format);

private string? CatalogValue { get; set; }
private bool? ColumnarValue { get; set; }
Original file line number Diff line number Diff line change
@@ -43,7 +43,7 @@ public sealed partial class XpackInfoRequestParameters : RequestParameters
/// A comma-separated list of the information categories to include in the response. For example, <c>build,license,features</c>.
/// </para>
/// </summary>
public ICollection<string>? Categories { get => Q<ICollection<string>?>("categories"); set => Q("categories", value); }
public ICollection<Elastic.Clients.Elasticsearch.Serverless.Xpack.XPackCategory>? Categories { get => Q<ICollection<Elastic.Clients.Elasticsearch.Serverless.Xpack.XPackCategory>?>("categories"); set => Q("categories", value); }
}

/// <summary>
@@ -75,7 +75,7 @@ public sealed partial class XpackInfoRequest : PlainRequest<XpackInfoRequestPara
/// </para>
/// </summary>
[JsonIgnore]
public ICollection<string>? Categories { get => Q<ICollection<string>?>("categories"); set => Q("categories", value); }
public ICollection<Elastic.Clients.Elasticsearch.Serverless.Xpack.XPackCategory>? Categories { get => Q<ICollection<Elastic.Clients.Elasticsearch.Serverless.Xpack.XPackCategory>?>("categories"); set => Q("categories", value); }
}

/// <summary>
@@ -100,7 +100,7 @@ public XpackInfoRequestDescriptor()
internal override string OperationName => "xpack.info";

public XpackInfoRequestDescriptor AcceptEnterprise(bool? acceptEnterprise = true) => Qs("accept_enterprise", acceptEnterprise);
public XpackInfoRequestDescriptor Categories(ICollection<string>? categories) => Qs("categories", categories);
public XpackInfoRequestDescriptor Categories(ICollection<Elastic.Clients.Elasticsearch.Serverless.Xpack.XPackCategory>? categories) => Qs("categories", categories);

protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings)
{

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -101,6 +101,7 @@ public AggregateDictionary(IReadOnlyDictionary<string, IAggregate> backingDictio
public Elastic.Clients.Elasticsearch.Serverless.Aggregations.SumAggregate? GetSum(string key) => TryGet<Elastic.Clients.Elasticsearch.Serverless.Aggregations.SumAggregate>(key);
public Elastic.Clients.Elasticsearch.Serverless.Aggregations.TDigestPercentileRanksAggregate? GetTDigestPercentileRanks(string key) => TryGet<Elastic.Clients.Elasticsearch.Serverless.Aggregations.TDigestPercentileRanksAggregate>(key);
public Elastic.Clients.Elasticsearch.Serverless.Aggregations.TDigestPercentilesAggregate? GetTDigestPercentiles(string key) => TryGet<Elastic.Clients.Elasticsearch.Serverless.Aggregations.TDigestPercentilesAggregate>(key);
public Elastic.Clients.Elasticsearch.Serverless.Aggregations.TimeSeriesAggregate? GetTimeSeries(string key) => TryGet<Elastic.Clients.Elasticsearch.Serverless.Aggregations.TimeSeriesAggregate>(key);
public Elastic.Clients.Elasticsearch.Serverless.Aggregations.TopHitsAggregate? GetTopHits(string key) => TryGet<Elastic.Clients.Elasticsearch.Serverless.Aggregations.TopHitsAggregate>(key);
public Elastic.Clients.Elasticsearch.Serverless.Aggregations.TopMetricsAggregate? GetTopMetrics(string key) => TryGet<Elastic.Clients.Elasticsearch.Serverless.Aggregations.TopMetricsAggregate>(key);
public Elastic.Clients.Elasticsearch.Serverless.Aggregations.TTestAggregate? GetTTest(string key) => TryGet<Elastic.Clients.Elasticsearch.Serverless.Aggregations.TTestAggregate>(key);
@@ -559,6 +560,13 @@ public static void ReadItem(ref Utf8JsonReader reader, JsonSerializerOptions opt
break;
}

case "time_series":
{
var item = JsonSerializer.Deserialize<Elastic.Clients.Elasticsearch.Serverless.Aggregations.TimeSeriesAggregate>(ref reader, options);
dictionary.Add(nameParts[1], item);
break;
}

case "top_hits":
{
var item = JsonSerializer.Deserialize<Elastic.Clients.Elasticsearch.Serverless.Aggregations.TopHitsAggregate>(ref reader, options);
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
// Licensed to Elasticsearch B.V under one or more agreements.
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information.
//
// ███╗ ██╗ ██████╗ ████████╗██╗ ██████╗███████╗
// ████╗ ██║██╔═══██╗╚══██╔══╝██║██╔════╝██╔════╝
// ██╔██╗ ██║██║ ██║ ██║ ██║██║ █████╗
// ██║╚██╗██║██║ ██║ ██║ ██║██║ ██╔══╝
// ██║ ╚████║╚██████╔╝ ██║ ██║╚██████╗███████╗
// ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝
// ------------------------------------------------
//
// This file is automatically generated.
// Please do not edit these files manually.
//
// ------------------------------------------------

#nullable restore

using Elastic.Clients.Elasticsearch.Serverless.Fluent;
using Elastic.Clients.Elasticsearch.Serverless.Serialization;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Text.Json;
using System.Text.Json.Serialization;

namespace Elastic.Clients.Elasticsearch.Serverless.Aggregations;

public sealed partial class TimeSeriesAggregate : IAggregate
{
[JsonInclude, JsonPropertyName("buckets")]
public IReadOnlyCollection<Elastic.Clients.Elasticsearch.Serverless.Aggregations.TimeSeriesBucket> Buckets { get; init; }
[JsonInclude, JsonPropertyName("meta")]
public IReadOnlyDictionary<string, object>? Meta { get; init; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
// Licensed to Elasticsearch B.V under one or more agreements.
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information.
//
// ███╗ ██╗ ██████╗ ████████╗██╗ ██████╗███████╗
// ████╗ ██║██╔═══██╗╚══██╔══╝██║██╔════╝██╔════╝
// ██╔██╗ ██║██║ ██║ ██║ ██║██║ █████╗
// ██║╚██╗██║██║ ██║ ██║ ██║██║ ██╔══╝
// ██║ ╚████║╚██████╔╝ ██║ ██║╚██████╗███████╗
// ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝
// ------------------------------------------------
//
// This file is automatically generated.
// Please do not edit these files manually.
//
// ------------------------------------------------

#nullable restore

using Elastic.Clients.Elasticsearch.Serverless.Fluent;
using Elastic.Clients.Elasticsearch.Serverless.Serialization;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Text.Json;
using System.Text.Json.Serialization;

namespace Elastic.Clients.Elasticsearch.Serverless.Aggregations;

internal sealed partial class TimeSeriesBucketConverter : JsonConverter<TimeSeriesBucket>
{
public override TimeSeriesBucket Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
if (reader.TokenType != JsonTokenType.StartObject)
throw new JsonException("Unexpected JSON detected.");
long docCount = default;
IReadOnlyDictionary<Elastic.Clients.Elasticsearch.Serverless.Field, Elastic.Clients.Elasticsearch.Serverless.FieldValue> key = default;
Dictionary<string, Elastic.Clients.Elasticsearch.Serverless.Aggregations.IAggregate> additionalProperties = null;
while (reader.Read() && reader.TokenType != JsonTokenType.EndObject)
{
if (reader.TokenType == JsonTokenType.PropertyName)
{
var property = reader.GetString();
if (property == "doc_count")
{
docCount = JsonSerializer.Deserialize<long>(ref reader, options);
continue;
}

if (property == "key")
{
key = JsonSerializer.Deserialize<IReadOnlyDictionary<Elastic.Clients.Elasticsearch.Serverless.Field, Elastic.Clients.Elasticsearch.Serverless.FieldValue>>(ref reader, options);
continue;
}

if (property.Contains("#"))
{
additionalProperties ??= new Dictionary<string, Elastic.Clients.Elasticsearch.Serverless.Aggregations.IAggregate>();
AggregateDictionaryConverter.ReadItem(ref reader, options, additionalProperties, property);
continue;
}

throw new JsonException("Unknown property read from JSON.");
}
}

return new TimeSeriesBucket { Aggregations = new Elastic.Clients.Elasticsearch.Serverless.Aggregations.AggregateDictionary(additionalProperties), DocCount = docCount, Key = key };
}

public override void Write(Utf8JsonWriter writer, TimeSeriesBucket value, JsonSerializerOptions options)
{
throw new NotImplementedException("'TimeSeriesBucket' is a readonly type, used only on responses and does not support being written to JSON.");
}
}

[JsonConverter(typeof(TimeSeriesBucketConverter))]
public sealed partial class TimeSeriesBucket
{
/// <summary>
/// <para>
/// Nested aggregations
/// </para>
/// </summary>
public Elastic.Clients.Elasticsearch.Serverless.Aggregations.AggregateDictionary Aggregations { get; init; }
public long DocCount { get; init; }
public IReadOnlyDictionary<Elastic.Clients.Elasticsearch.Serverless.Field, Elastic.Clients.Elasticsearch.Serverless.FieldValue> Key { get; init; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
// Licensed to Elasticsearch B.V under one or more agreements.
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information.
//
// ███╗ ██╗ ██████╗ ████████╗██╗ ██████╗███████╗
// ████╗ ██║██╔═══██╗╚══██╔══╝██║██╔════╝██╔════╝
// ██╔██╗ ██║██║ ██║ ██║ ██║██║ █████╗
// ██║╚██╗██║██║ ██║ ██║ ██║██║ ██╔══╝
// ██║ ╚████║╚██████╔╝ ██║ ██║╚██████╗███████╗
// ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝
// ------------------------------------------------
//
// This file is automatically generated.
// Please do not edit these files manually.
//
// ------------------------------------------------

#nullable restore

using Elastic.Clients.Elasticsearch.Serverless.Fluent;
using Elastic.Clients.Elasticsearch.Serverless.Serialization;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Text.Json;
using System.Text.Json.Serialization;

namespace Elastic.Clients.Elasticsearch.Serverless.Analysis;

public sealed partial class ClassicTokenizer : ITokenizer
{
[JsonInclude, JsonPropertyName("max_token_length")]
public int? MaxTokenLength { get; set; }

[JsonInclude, JsonPropertyName("type")]
public string Type => "classic";

[JsonInclude, JsonPropertyName("version")]
public string? Version { get; set; }
}

public sealed partial class ClassicTokenizerDescriptor : SerializableDescriptor<ClassicTokenizerDescriptor>, IBuildableDescriptor<ClassicTokenizer>
{
internal ClassicTokenizerDescriptor(Action<ClassicTokenizerDescriptor> configure) => configure.Invoke(this);

public ClassicTokenizerDescriptor() : base()
{
}

private int? MaxTokenLengthValue { get; set; }
private string? VersionValue { get; set; }

public ClassicTokenizerDescriptor MaxTokenLength(int? maxTokenLength)
{
MaxTokenLengthValue = maxTokenLength;
return Self;
}

public ClassicTokenizerDescriptor Version(string? version)
{
VersionValue = version;
return Self;
}

protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings)
{
writer.WriteStartObject();
if (MaxTokenLengthValue.HasValue)
{
writer.WritePropertyName("max_token_length");
writer.WriteNumberValue(MaxTokenLengthValue.Value);
}

writer.WritePropertyName("type");
writer.WriteStringValue("classic");
if (!string.IsNullOrEmpty(VersionValue))
{
writer.WritePropertyName("version");
writer.WriteStringValue(VersionValue);
}

writer.WriteEndObject();
}

ClassicTokenizer IBuildableDescriptor<ClassicTokenizer>.Build() => new()
{
MaxTokenLength = MaxTokenLengthValue,
Version = VersionValue
};
}
Original file line number Diff line number Diff line change
@@ -36,7 +36,7 @@ public sealed partial class EdgeNGramTokenizer : ITokenizer
[JsonInclude, JsonPropertyName("min_gram")]
public int MinGram { get; set; }
[JsonInclude, JsonPropertyName("token_chars")]
public ICollection<Elastic.Clients.Elasticsearch.Serverless.Analysis.TokenChar> TokenChars { get; set; }
public ICollection<Elastic.Clients.Elasticsearch.Serverless.Analysis.TokenChar>? TokenChars { get; set; }

[JsonInclude, JsonPropertyName("type")]
public string Type => "edge_ngram";
@@ -56,7 +56,7 @@ public EdgeNGramTokenizerDescriptor() : base()
private string? CustomTokenCharsValue { get; set; }
private int MaxGramValue { get; set; }
private int MinGramValue { get; set; }
private ICollection<Elastic.Clients.Elasticsearch.Serverless.Analysis.TokenChar> TokenCharsValue { get; set; }
private ICollection<Elastic.Clients.Elasticsearch.Serverless.Analysis.TokenChar>? TokenCharsValue { get; set; }
private string? VersionValue { get; set; }

public EdgeNGramTokenizerDescriptor CustomTokenChars(string? customTokenChars)
@@ -77,7 +77,7 @@ public EdgeNGramTokenizerDescriptor MinGram(int minGram)
return Self;
}

public EdgeNGramTokenizerDescriptor TokenChars(ICollection<Elastic.Clients.Elasticsearch.Serverless.Analysis.TokenChar> tokenChars)
public EdgeNGramTokenizerDescriptor TokenChars(ICollection<Elastic.Clients.Elasticsearch.Serverless.Analysis.TokenChar>? tokenChars)
{
TokenCharsValue = tokenChars;
return Self;
@@ -102,8 +102,12 @@ protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions o
writer.WriteNumberValue(MaxGramValue);
writer.WritePropertyName("min_gram");
writer.WriteNumberValue(MinGramValue);
writer.WritePropertyName("token_chars");
JsonSerializer.Serialize(writer, TokenCharsValue, options);
if (TokenCharsValue is not null)
{
writer.WritePropertyName("token_chars");
JsonSerializer.Serialize(writer, TokenCharsValue, options);
}

writer.WritePropertyName("type");
writer.WriteStringValue("edge_ngram");
if (!string.IsNullOrEmpty(VersionValue))
Original file line number Diff line number Diff line change
@@ -32,6 +32,7 @@ public sealed partial class KeywordMarkerTokenFilter : ITokenFilter
[JsonInclude, JsonPropertyName("ignore_case")]
public bool? IgnoreCase { get; set; }
[JsonInclude, JsonPropertyName("keywords")]
[SingleOrManyCollectionConverter(typeof(string))]
public ICollection<string>? Keywords { get; set; }
[JsonInclude, JsonPropertyName("keywords_path")]
public string? KeywordsPath { get; set; }
@@ -101,7 +102,7 @@ protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions o
if (KeywordsValue is not null)
{
writer.WritePropertyName("keywords");
JsonSerializer.Serialize(writer, KeywordsValue, options);
SingleOrManySerializationHelper.Serialize<string>(KeywordsValue, writer, options);
}

if (!string.IsNullOrEmpty(KeywordsPathValue))
Original file line number Diff line number Diff line change
@@ -30,7 +30,7 @@ namespace Elastic.Clients.Elasticsearch.Serverless.Analysis;
public sealed partial class KeywordTokenizer : ITokenizer
{
[JsonInclude, JsonPropertyName("buffer_size")]
public int BufferSize { get; set; }
public int? BufferSize { get; set; }

[JsonInclude, JsonPropertyName("type")]
public string Type => "keyword";
@@ -47,10 +47,10 @@ public KeywordTokenizerDescriptor() : base()
{
}

private int BufferSizeValue { get; set; }
private int? BufferSizeValue { get; set; }
private string? VersionValue { get; set; }

public KeywordTokenizerDescriptor BufferSize(int bufferSize)
public KeywordTokenizerDescriptor BufferSize(int? bufferSize)
{
BufferSizeValue = bufferSize;
return Self;
@@ -65,8 +65,12 @@ public KeywordTokenizerDescriptor Version(string? version)
protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings)
{
writer.WriteStartObject();
writer.WritePropertyName("buffer_size");
writer.WriteNumberValue(BufferSizeValue);
if (BufferSizeValue.HasValue)
{
writer.WritePropertyName("buffer_size");
writer.WriteNumberValue(BufferSizeValue.Value);
}

writer.WritePropertyName("type");
writer.WriteStringValue("keyword");
if (!string.IsNullOrEmpty(VersionValue))
Original file line number Diff line number Diff line change
@@ -36,7 +36,7 @@ public sealed partial class NGramTokenizer : ITokenizer
[JsonInclude, JsonPropertyName("min_gram")]
public int MinGram { get; set; }
[JsonInclude, JsonPropertyName("token_chars")]
public ICollection<Elastic.Clients.Elasticsearch.Serverless.Analysis.TokenChar> TokenChars { get; set; }
public ICollection<Elastic.Clients.Elasticsearch.Serverless.Analysis.TokenChar>? TokenChars { get; set; }

[JsonInclude, JsonPropertyName("type")]
public string Type => "ngram";
@@ -56,7 +56,7 @@ public NGramTokenizerDescriptor() : base()
private string? CustomTokenCharsValue { get; set; }
private int MaxGramValue { get; set; }
private int MinGramValue { get; set; }
private ICollection<Elastic.Clients.Elasticsearch.Serverless.Analysis.TokenChar> TokenCharsValue { get; set; }
private ICollection<Elastic.Clients.Elasticsearch.Serverless.Analysis.TokenChar>? TokenCharsValue { get; set; }
private string? VersionValue { get; set; }

public NGramTokenizerDescriptor CustomTokenChars(string? customTokenChars)
@@ -77,7 +77,7 @@ public NGramTokenizerDescriptor MinGram(int minGram)
return Self;
}

public NGramTokenizerDescriptor TokenChars(ICollection<Elastic.Clients.Elasticsearch.Serverless.Analysis.TokenChar> tokenChars)
public NGramTokenizerDescriptor TokenChars(ICollection<Elastic.Clients.Elasticsearch.Serverless.Analysis.TokenChar>? tokenChars)
{
TokenCharsValue = tokenChars;
return Self;
@@ -102,8 +102,12 @@ protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions o
writer.WriteNumberValue(MaxGramValue);
writer.WritePropertyName("min_gram");
writer.WriteNumberValue(MinGramValue);
writer.WritePropertyName("token_chars");
JsonSerializer.Serialize(writer, TokenCharsValue, options);
if (TokenCharsValue is not null)
{
writer.WritePropertyName("token_chars");
JsonSerializer.Serialize(writer, TokenCharsValue, options);
}

writer.WritePropertyName("type");
writer.WriteStringValue("ngram");
if (!string.IsNullOrEmpty(VersionValue))
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
// Licensed to Elasticsearch B.V under one or more agreements.
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information.
//
// ███╗ ██╗ ██████╗ ████████╗██╗ ██████╗███████╗
// ████╗ ██║██╔═══██╗╚══██╔══╝██║██╔════╝██╔════╝
// ██╔██╗ ██║██║ ██║ ██║ ██║██║ █████╗
// ██║╚██╗██║██║ ██║ ██║ ██║██║ ██╔══╝
// ██║ ╚████║╚██████╔╝ ██║ ██║╚██████╗███████╗
// ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝
// ------------------------------------------------
//
// This file is automatically generated.
// Please do not edit these files manually.
//
// ------------------------------------------------

#nullable restore

using Elastic.Clients.Elasticsearch.Serverless.Fluent;
using Elastic.Clients.Elasticsearch.Serverless.Serialization;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Text.Json;
using System.Text.Json.Serialization;

namespace Elastic.Clients.Elasticsearch.Serverless.Analysis;

public sealed partial class SimplePatternSplitTokenizer : ITokenizer
{
[JsonInclude, JsonPropertyName("pattern")]
public string? Pattern { get; set; }

[JsonInclude, JsonPropertyName("type")]
public string Type => "simple_pattern_split";

[JsonInclude, JsonPropertyName("version")]
public string? Version { get; set; }
}

public sealed partial class SimplePatternSplitTokenizerDescriptor : SerializableDescriptor<SimplePatternSplitTokenizerDescriptor>, IBuildableDescriptor<SimplePatternSplitTokenizer>
{
internal SimplePatternSplitTokenizerDescriptor(Action<SimplePatternSplitTokenizerDescriptor> configure) => configure.Invoke(this);

public SimplePatternSplitTokenizerDescriptor() : base()
{
}

private string? PatternValue { get; set; }
private string? VersionValue { get; set; }

public SimplePatternSplitTokenizerDescriptor Pattern(string? pattern)
{
PatternValue = pattern;
return Self;
}

public SimplePatternSplitTokenizerDescriptor Version(string? version)
{
VersionValue = version;
return Self;
}

protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings)
{
writer.WriteStartObject();
if (!string.IsNullOrEmpty(PatternValue))
{
writer.WritePropertyName("pattern");
writer.WriteStringValue(PatternValue);
}

writer.WritePropertyName("type");
writer.WriteStringValue("simple_pattern_split");
if (!string.IsNullOrEmpty(VersionValue))
{
writer.WritePropertyName("version");
writer.WriteStringValue(VersionValue);
}

writer.WriteEndObject();
}

SimplePatternSplitTokenizer IBuildableDescriptor<SimplePatternSplitTokenizer>.Build() => new()
{
Pattern = PatternValue,
Version = VersionValue
};
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
// Licensed to Elasticsearch B.V under one or more agreements.
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information.
//
// ███╗ ██╗ ██████╗ ████████╗██╗ ██████╗███████╗
// ████╗ ██║██╔═══██╗╚══██╔══╝██║██╔════╝██╔════╝
// ██╔██╗ ██║██║ ██║ ██║ ██║██║ █████╗
// ██║╚██╗██║██║ ██║ ██║ ██║██║ ██╔══╝
// ██║ ╚████║╚██████╔╝ ██║ ██║╚██████╗███████╗
// ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝
// ------------------------------------------------
//
// This file is automatically generated.
// Please do not edit these files manually.
//
// ------------------------------------------------

#nullable restore

using Elastic.Clients.Elasticsearch.Serverless.Fluent;
using Elastic.Clients.Elasticsearch.Serverless.Serialization;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Text.Json;
using System.Text.Json.Serialization;

namespace Elastic.Clients.Elasticsearch.Serverless.Analysis;

public sealed partial class SimplePatternTokenizer : ITokenizer
{
[JsonInclude, JsonPropertyName("pattern")]
public string? Pattern { get; set; }

[JsonInclude, JsonPropertyName("type")]
public string Type => "simple_pattern";

[JsonInclude, JsonPropertyName("version")]
public string? Version { get; set; }
}

public sealed partial class SimplePatternTokenizerDescriptor : SerializableDescriptor<SimplePatternTokenizerDescriptor>, IBuildableDescriptor<SimplePatternTokenizer>
{
internal SimplePatternTokenizerDescriptor(Action<SimplePatternTokenizerDescriptor> configure) => configure.Invoke(this);

public SimplePatternTokenizerDescriptor() : base()
{
}

private string? PatternValue { get; set; }
private string? VersionValue { get; set; }

public SimplePatternTokenizerDescriptor Pattern(string? pattern)
{
PatternValue = pattern;
return Self;
}

public SimplePatternTokenizerDescriptor Version(string? version)
{
VersionValue = version;
return Self;
}

protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings)
{
writer.WriteStartObject();
if (!string.IsNullOrEmpty(PatternValue))
{
writer.WritePropertyName("pattern");
writer.WriteStringValue(PatternValue);
}

writer.WritePropertyName("type");
writer.WriteStringValue("simple_pattern");
if (!string.IsNullOrEmpty(VersionValue))
{
writer.WritePropertyName("version");
writer.WriteStringValue(VersionValue);
}

writer.WriteEndObject();
}

SimplePatternTokenizer IBuildableDescriptor<SimplePatternTokenizer>.Build() => new()
{
Pattern = PatternValue,
Version = VersionValue
};
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
// Licensed to Elasticsearch B.V under one or more agreements.
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information.
//
// ███╗ ██╗ ██████╗ ████████╗██╗ ██████╗███████╗
// ████╗ ██║██╔═══██╗╚══██╔══╝██║██╔════╝██╔════╝
// ██╔██╗ ██║██║ ██║ ██║ ██║██║ █████╗
// ██║╚██╗██║██║ ██║ ██║ ██║██║ ██╔══╝
// ██║ ╚████║╚██████╔╝ ██║ ██║╚██████╗███████╗
// ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝
// ------------------------------------------------
//
// This file is automatically generated.
// Please do not edit these files manually.
//
// ------------------------------------------------

#nullable restore

using Elastic.Clients.Elasticsearch.Serverless.Fluent;
using Elastic.Clients.Elasticsearch.Serverless.Serialization;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Text.Json;
using System.Text.Json.Serialization;

namespace Elastic.Clients.Elasticsearch.Serverless.Analysis;

public sealed partial class ThaiTokenizer : ITokenizer
{
[JsonInclude, JsonPropertyName("type")]
public string Type => "thai";

[JsonInclude, JsonPropertyName("version")]
public string? Version { get; set; }
}

public sealed partial class ThaiTokenizerDescriptor : SerializableDescriptor<ThaiTokenizerDescriptor>, IBuildableDescriptor<ThaiTokenizer>
{
internal ThaiTokenizerDescriptor(Action<ThaiTokenizerDescriptor> configure) => configure.Invoke(this);

public ThaiTokenizerDescriptor() : base()
{
}

private string? VersionValue { get; set; }

public ThaiTokenizerDescriptor Version(string? version)
{
VersionValue = version;
return Self;
}

protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings)
{
writer.WriteStartObject();
writer.WritePropertyName("type");
writer.WriteStringValue("thai");
if (!string.IsNullOrEmpty(VersionValue))
{
writer.WritePropertyName("version");
writer.WriteStringValue(VersionValue);
}

writer.WriteEndObject();
}

ThaiTokenizer IBuildableDescriptor<ThaiTokenizer>.Build() => new()
{
Version = VersionValue
};
}
Original file line number Diff line number Diff line change
@@ -69,6 +69,9 @@ public TokenizersDescriptor() : base(new Tokenizers())
public TokenizersDescriptor CharGroup(string tokenizerName) => AssignVariant<Elastic.Clients.Elasticsearch.Serverless.Analysis.CharGroupTokenizerDescriptor, CharGroupTokenizer>(tokenizerName, null);
public TokenizersDescriptor CharGroup(string tokenizerName, Action<Elastic.Clients.Elasticsearch.Serverless.Analysis.CharGroupTokenizerDescriptor> configure) => AssignVariant<Elastic.Clients.Elasticsearch.Serverless.Analysis.CharGroupTokenizerDescriptor, CharGroupTokenizer>(tokenizerName, configure);
public TokenizersDescriptor CharGroup(string tokenizerName, CharGroupTokenizer charGroupTokenizer) => AssignVariant(tokenizerName, charGroupTokenizer);
public TokenizersDescriptor Classic(string tokenizerName) => AssignVariant<Elastic.Clients.Elasticsearch.Serverless.Analysis.ClassicTokenizerDescriptor, ClassicTokenizer>(tokenizerName, null);
public TokenizersDescriptor Classic(string tokenizerName, Action<Elastic.Clients.Elasticsearch.Serverless.Analysis.ClassicTokenizerDescriptor> configure) => AssignVariant<Elastic.Clients.Elasticsearch.Serverless.Analysis.ClassicTokenizerDescriptor, ClassicTokenizer>(tokenizerName, configure);
public TokenizersDescriptor Classic(string tokenizerName, ClassicTokenizer classicTokenizer) => AssignVariant(tokenizerName, classicTokenizer);
public TokenizersDescriptor EdgeNGram(string tokenizerName) => AssignVariant<Elastic.Clients.Elasticsearch.Serverless.Analysis.EdgeNGramTokenizerDescriptor, EdgeNGramTokenizer>(tokenizerName, null);
public TokenizersDescriptor EdgeNGram(string tokenizerName, Action<Elastic.Clients.Elasticsearch.Serverless.Analysis.EdgeNGramTokenizerDescriptor> configure) => AssignVariant<Elastic.Clients.Elasticsearch.Serverless.Analysis.EdgeNGramTokenizerDescriptor, EdgeNGramTokenizer>(tokenizerName, configure);
public TokenizersDescriptor EdgeNGram(string tokenizerName, EdgeNGramTokenizer edgeNGramTokenizer) => AssignVariant(tokenizerName, edgeNGramTokenizer);
@@ -99,9 +102,18 @@ public TokenizersDescriptor() : base(new Tokenizers())
public TokenizersDescriptor Pattern(string tokenizerName) => AssignVariant<Elastic.Clients.Elasticsearch.Serverless.Analysis.PatternTokenizerDescriptor, PatternTokenizer>(tokenizerName, null);
public TokenizersDescriptor Pattern(string tokenizerName, Action<Elastic.Clients.Elasticsearch.Serverless.Analysis.PatternTokenizerDescriptor> configure) => AssignVariant<Elastic.Clients.Elasticsearch.Serverless.Analysis.PatternTokenizerDescriptor, PatternTokenizer>(tokenizerName, configure);
public TokenizersDescriptor Pattern(string tokenizerName, PatternTokenizer patternTokenizer) => AssignVariant(tokenizerName, patternTokenizer);
public TokenizersDescriptor SimplePatternSplit(string tokenizerName) => AssignVariant<Elastic.Clients.Elasticsearch.Serverless.Analysis.SimplePatternSplitTokenizerDescriptor, SimplePatternSplitTokenizer>(tokenizerName, null);
public TokenizersDescriptor SimplePatternSplit(string tokenizerName, Action<Elastic.Clients.Elasticsearch.Serverless.Analysis.SimplePatternSplitTokenizerDescriptor> configure) => AssignVariant<Elastic.Clients.Elasticsearch.Serverless.Analysis.SimplePatternSplitTokenizerDescriptor, SimplePatternSplitTokenizer>(tokenizerName, configure);
public TokenizersDescriptor SimplePatternSplit(string tokenizerName, SimplePatternSplitTokenizer simplePatternSplitTokenizer) => AssignVariant(tokenizerName, simplePatternSplitTokenizer);
public TokenizersDescriptor SimplePattern(string tokenizerName) => AssignVariant<Elastic.Clients.Elasticsearch.Serverless.Analysis.SimplePatternTokenizerDescriptor, SimplePatternTokenizer>(tokenizerName, null);
public TokenizersDescriptor SimplePattern(string tokenizerName, Action<Elastic.Clients.Elasticsearch.Serverless.Analysis.SimplePatternTokenizerDescriptor> configure) => AssignVariant<Elastic.Clients.Elasticsearch.Serverless.Analysis.SimplePatternTokenizerDescriptor, SimplePatternTokenizer>(tokenizerName, configure);
public TokenizersDescriptor SimplePattern(string tokenizerName, SimplePatternTokenizer simplePatternTokenizer) => AssignVariant(tokenizerName, simplePatternTokenizer);
public TokenizersDescriptor Standard(string tokenizerName) => AssignVariant<Elastic.Clients.Elasticsearch.Serverless.Analysis.StandardTokenizerDescriptor, StandardTokenizer>(tokenizerName, null);
public TokenizersDescriptor Standard(string tokenizerName, Action<Elastic.Clients.Elasticsearch.Serverless.Analysis.StandardTokenizerDescriptor> configure) => AssignVariant<Elastic.Clients.Elasticsearch.Serverless.Analysis.StandardTokenizerDescriptor, StandardTokenizer>(tokenizerName, configure);
public TokenizersDescriptor Standard(string tokenizerName, StandardTokenizer standardTokenizer) => AssignVariant(tokenizerName, standardTokenizer);
public TokenizersDescriptor Thai(string tokenizerName) => AssignVariant<Elastic.Clients.Elasticsearch.Serverless.Analysis.ThaiTokenizerDescriptor, ThaiTokenizer>(tokenizerName, null);
public TokenizersDescriptor Thai(string tokenizerName, Action<Elastic.Clients.Elasticsearch.Serverless.Analysis.ThaiTokenizerDescriptor> configure) => AssignVariant<Elastic.Clients.Elasticsearch.Serverless.Analysis.ThaiTokenizerDescriptor, ThaiTokenizer>(tokenizerName, configure);
public TokenizersDescriptor Thai(string tokenizerName, ThaiTokenizer thaiTokenizer) => AssignVariant(tokenizerName, thaiTokenizer);
public TokenizersDescriptor UaxEmailUrl(string tokenizerName) => AssignVariant<Elastic.Clients.Elasticsearch.Serverless.Analysis.UaxEmailUrlTokenizerDescriptor, UaxEmailUrlTokenizer>(tokenizerName, null);
public TokenizersDescriptor UaxEmailUrl(string tokenizerName, Action<Elastic.Clients.Elasticsearch.Serverless.Analysis.UaxEmailUrlTokenizerDescriptor> configure) => AssignVariant<Elastic.Clients.Elasticsearch.Serverless.Analysis.UaxEmailUrlTokenizerDescriptor, UaxEmailUrlTokenizer>(tokenizerName, configure);
public TokenizersDescriptor UaxEmailUrl(string tokenizerName, UaxEmailUrlTokenizer uaxEmailUrlTokenizer) => AssignVariant(tokenizerName, uaxEmailUrlTokenizer);
@@ -126,6 +138,8 @@ public override ITokenizer Read(ref Utf8JsonReader reader, Type typeToConvert, J
{
case "char_group":
return JsonSerializer.Deserialize<Elastic.Clients.Elasticsearch.Serverless.Analysis.CharGroupTokenizer>(ref reader, options);
case "classic":
return JsonSerializer.Deserialize<Elastic.Clients.Elasticsearch.Serverless.Analysis.ClassicTokenizer>(ref reader, options);
case "edge_ngram":
return JsonSerializer.Deserialize<Elastic.Clients.Elasticsearch.Serverless.Analysis.EdgeNGramTokenizer>(ref reader, options);
case "icu_tokenizer":
@@ -146,8 +160,14 @@ public override ITokenizer Read(ref Utf8JsonReader reader, Type typeToConvert, J
return JsonSerializer.Deserialize<Elastic.Clients.Elasticsearch.Serverless.Analysis.PathHierarchyTokenizer>(ref reader, options);
case "pattern":
return JsonSerializer.Deserialize<Elastic.Clients.Elasticsearch.Serverless.Analysis.PatternTokenizer>(ref reader, options);
case "simple_pattern_split":
return JsonSerializer.Deserialize<Elastic.Clients.Elasticsearch.Serverless.Analysis.SimplePatternSplitTokenizer>(ref reader, options);
case "simple_pattern":
return JsonSerializer.Deserialize<Elastic.Clients.Elasticsearch.Serverless.Analysis.SimplePatternTokenizer>(ref reader, options);
case "standard":
return JsonSerializer.Deserialize<Elastic.Clients.Elasticsearch.Serverless.Analysis.StandardTokenizer>(ref reader, options);
case "thai":
return JsonSerializer.Deserialize<Elastic.Clients.Elasticsearch.Serverless.Analysis.ThaiTokenizer>(ref reader, options);
case "uax_url_email":
return JsonSerializer.Deserialize<Elastic.Clients.Elasticsearch.Serverless.Analysis.UaxEmailUrlTokenizer>(ref reader, options);
case "whitespace":
@@ -171,6 +191,9 @@ public override void Write(Utf8JsonWriter writer, ITokenizer value, JsonSerializ
case "char_group":
JsonSerializer.Serialize(writer, value, typeof(Elastic.Clients.Elasticsearch.Serverless.Analysis.CharGroupTokenizer), options);
return;
case "classic":
JsonSerializer.Serialize(writer, value, typeof(Elastic.Clients.Elasticsearch.Serverless.Analysis.ClassicTokenizer), options);
return;
case "edge_ngram":
JsonSerializer.Serialize(writer, value, typeof(Elastic.Clients.Elasticsearch.Serverless.Analysis.EdgeNGramTokenizer), options);
return;
@@ -201,9 +224,18 @@ public override void Write(Utf8JsonWriter writer, ITokenizer value, JsonSerializ
case "pattern":
JsonSerializer.Serialize(writer, value, typeof(Elastic.Clients.Elasticsearch.Serverless.Analysis.PatternTokenizer), options);
return;
case "simple_pattern_split":
JsonSerializer.Serialize(writer, value, typeof(Elastic.Clients.Elasticsearch.Serverless.Analysis.SimplePatternSplitTokenizer), options);
return;
case "simple_pattern":
JsonSerializer.Serialize(writer, value, typeof(Elastic.Clients.Elasticsearch.Serverless.Analysis.SimplePatternTokenizer), options);
return;
case "standard":
JsonSerializer.Serialize(writer, value, typeof(Elastic.Clients.Elasticsearch.Serverless.Analysis.StandardTokenizer), options);
return;
case "thai":
JsonSerializer.Serialize(writer, value, typeof(Elastic.Clients.Elasticsearch.Serverless.Analysis.ThaiTokenizer), options);
return;
case "uax_url_email":
JsonSerializer.Serialize(writer, value, typeof(Elastic.Clients.Elasticsearch.Serverless.Analysis.UaxEmailUrlTokenizer), options);
return;
Original file line number Diff line number Diff line change
@@ -35,6 +35,8 @@ public sealed partial class CurrentNode
public string Id { get; init; }
[JsonInclude, JsonPropertyName("name")]
public string Name { get; init; }
[JsonInclude, JsonPropertyName("roles")]
public IReadOnlyCollection<Elastic.Clients.Elasticsearch.Serverless.NodeRole> Roles { get; init; }
[JsonInclude, JsonPropertyName("transport_address")]
public string TransportAddress { get; init; }
[JsonInclude, JsonPropertyName("weight_ranking")]
Original file line number Diff line number Diff line change
@@ -45,6 +45,8 @@ public sealed partial class IndexHealthStats
public IReadOnlyDictionary<string, Elastic.Clients.Elasticsearch.Serverless.Cluster.ShardHealthStats>? Shards { get; init; }
[JsonInclude, JsonPropertyName("status")]
public Elastic.Clients.Elasticsearch.Serverless.HealthStatus Status { get; init; }
[JsonInclude, JsonPropertyName("unassigned_primary_shards")]
public int UnassignedPrimaryShards { get; init; }
[JsonInclude, JsonPropertyName("unassigned_shards")]
public int UnassignedShards { get; init; }
}
Original file line number Diff line number Diff line change
@@ -39,6 +39,8 @@ public sealed partial class NodeAllocationExplanation
public string NodeId { get; init; }
[JsonInclude, JsonPropertyName("node_name")]
public string NodeName { get; init; }
[JsonInclude, JsonPropertyName("roles")]
public IReadOnlyCollection<Elastic.Clients.Elasticsearch.Serverless.NodeRole> Roles { get; init; }
[JsonInclude, JsonPropertyName("store")]
public Elastic.Clients.Elasticsearch.Serverless.Cluster.AllocationStore? Store { get; init; }
[JsonInclude, JsonPropertyName("transport_address")]
Original file line number Diff line number Diff line change
@@ -39,6 +39,8 @@ public sealed partial class ShardHealthStats
public int RelocatingShards { get; init; }
[JsonInclude, JsonPropertyName("status")]
public Elastic.Clients.Elasticsearch.Serverless.HealthStatus Status { get; init; }
[JsonInclude, JsonPropertyName("unassigned_primary_shards")]
public int UnassignedPrimaryShards { get; init; }
[JsonInclude, JsonPropertyName("unassigned_shards")]
public int UnassignedShards { get; init; }
}
Original file line number Diff line number Diff line change
@@ -29,6 +29,8 @@ namespace Elastic.Clients.Elasticsearch.Serverless.Core.Search;

public sealed partial class AggregationProfileDebug
{
[JsonInclude, JsonPropertyName("brute_force_used")]
public int? BruteForceUsed { get; init; }
[JsonInclude, JsonPropertyName("built_buckets")]
public int? BuiltBuckets { get; init; }
[JsonInclude, JsonPropertyName("chars_fetched")]
@@ -45,6 +47,10 @@ public sealed partial class AggregationProfileDebug
public string? Delegate { get; init; }
[JsonInclude, JsonPropertyName("delegate_debug")]
public Elastic.Clients.Elasticsearch.Serverless.Core.Search.AggregationProfileDebug? DelegateDebug { get; init; }
[JsonInclude, JsonPropertyName("dynamic_pruning_attempted")]
public int? DynamicPruningAttempted { get; init; }
[JsonInclude, JsonPropertyName("dynamic_pruning_used")]
public int? DynamicPruningUsed { get; init; }
[JsonInclude, JsonPropertyName("empty_collectors_used")]
public int? EmptyCollectorsUsed { get; init; }
[JsonInclude, JsonPropertyName("extract_count")]
@@ -77,6 +83,8 @@ public sealed partial class AggregationProfileDebug
public int? SegmentsWithMultiValuedOrds { get; init; }
[JsonInclude, JsonPropertyName("segments_with_single_valued_ords")]
public int? SegmentsWithSingleValuedOrds { get; init; }
[JsonInclude, JsonPropertyName("skipped_due_to_no_data")]
public int? SkippedDueToNoData { get; init; }
[JsonInclude, JsonPropertyName("string_hashing_collectors_used")]
public int? StringHashingCollectorsUsed { get; init; }
[JsonInclude, JsonPropertyName("surviving_buckets")]
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
// Licensed to Elasticsearch B.V under one or more agreements.
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information.
//
// ███╗ ██╗ ██████╗ ████████╗██╗ ██████╗███████╗
// ████╗ ██║██╔═══██╗╚══██╔══╝██║██╔════╝██╔════╝
// ██╔██╗ ██║██║ ██║ ██║ ██║██║ █████╗
// ██║╚██╗██║██║ ██║ ██║ ██║██║ ██╔══╝
// ██║ ╚████║╚██████╔╝ ██║ ██║╚██████╗███████╗
// ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝
// ------------------------------------------------
//
// This file is automatically generated.
// Please do not edit these files manually.
//
// ------------------------------------------------

#nullable restore

using Elastic.Clients.Elasticsearch.Serverless.Fluent;
using Elastic.Clients.Elasticsearch.Serverless.Serialization;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Text.Json;
using System.Text.Json.Serialization;

namespace Elastic.Clients.Elasticsearch.Serverless.Core.Search;

public sealed partial class DfsKnnProfile
{
[JsonInclude, JsonPropertyName("collector")]
public IReadOnlyCollection<Elastic.Clients.Elasticsearch.Serverless.Core.Search.KnnCollectorResult> Collector { get; init; }
[JsonInclude, JsonPropertyName("query")]
public IReadOnlyCollection<Elastic.Clients.Elasticsearch.Serverless.Core.Search.KnnQueryProfileResult> Query { get; init; }
[JsonInclude, JsonPropertyName("rewrite_time")]
public long RewriteTime { get; init; }
[JsonInclude, JsonPropertyName("vector_operations_count")]
public long? VectorOperationsCount { get; init; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
// Licensed to Elasticsearch B.V under one or more agreements.
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information.
//
// ███╗ ██╗ ██████╗ ████████╗██╗ ██████╗███████╗
// ████╗ ██║██╔═══██╗╚══██╔══╝██║██╔════╝██╔════╝
// ██╔██╗ ██║██║ ██║ ██║ ██║██║ █████╗
// ██║╚██╗██║██║ ██║ ██║ ██║██║ ██╔══╝
// ██║ ╚████║╚██████╔╝ ██║ ██║╚██████╗███████╗
// ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝
// ------------------------------------------------
//
// This file is automatically generated.
// Please do not edit these files manually.
//
// ------------------------------------------------

#nullable restore

using Elastic.Clients.Elasticsearch.Serverless.Fluent;
using Elastic.Clients.Elasticsearch.Serverless.Serialization;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Text.Json;
using System.Text.Json.Serialization;

namespace Elastic.Clients.Elasticsearch.Serverless.Core.Search;

public sealed partial class DfsProfile
{
[JsonInclude, JsonPropertyName("knn")]
public IReadOnlyCollection<Elastic.Clients.Elasticsearch.Serverless.Core.Search.DfsKnnProfile>? Knn { get; init; }
[JsonInclude, JsonPropertyName("statistics")]
public Elastic.Clients.Elasticsearch.Serverless.Core.Search.DfsStatisticsProfile? Statistics { get; init; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
// Licensed to Elasticsearch B.V under one or more agreements.
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information.
//
// ███╗ ██╗ ██████╗ ████████╗██╗ ██████╗███████╗
// ████╗ ██║██╔═══██╗╚══██╔══╝██║██╔════╝██╔════╝
// ██╔██╗ ██║██║ ██║ ██║ ██║██║ █████╗
// ██║╚██╗██║██║ ██║ ██║ ██║██║ ██╔══╝
// ██║ ╚████║╚██████╔╝ ██║ ██║╚██████╗███████╗
// ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝
// ------------------------------------------------
//
// This file is automatically generated.
// Please do not edit these files manually.
//
// ------------------------------------------------

#nullable restore

using Elastic.Clients.Elasticsearch.Serverless.Fluent;
using Elastic.Clients.Elasticsearch.Serverless.Serialization;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Text.Json;
using System.Text.Json.Serialization;

namespace Elastic.Clients.Elasticsearch.Serverless.Core.Search;

public sealed partial class DfsStatisticsBreakdown
{
[JsonInclude, JsonPropertyName("collection_statistics")]
public long CollectionStatistics { get; init; }
[JsonInclude, JsonPropertyName("collection_statistics_count")]
public long CollectionStatisticsCount { get; init; }
[JsonInclude, JsonPropertyName("create_weight")]
public long CreateWeight { get; init; }
[JsonInclude, JsonPropertyName("create_weight_count")]
public long CreateWeightCount { get; init; }
[JsonInclude, JsonPropertyName("rewrite")]
public long Rewrite { get; init; }
[JsonInclude, JsonPropertyName("rewrite_count")]
public long RewriteCount { get; init; }
[JsonInclude, JsonPropertyName("term_statistics")]
public long TermStatistics { get; init; }
[JsonInclude, JsonPropertyName("term_statistics_count")]
public long TermStatisticsCount { get; init; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
// Licensed to Elasticsearch B.V under one or more agreements.
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information.
//
// ███╗ ██╗ ██████╗ ████████╗██╗ ██████╗███████╗
// ████╗ ██║██╔═══██╗╚══██╔══╝██║██╔════╝██╔════╝
// ██╔██╗ ██║██║ ██║ ██║ ██║██║ █████╗
// ██║╚██╗██║██║ ██║ ██║ ██║██║ ██╔══╝
// ██║ ╚████║╚██████╔╝ ██║ ██║╚██████╗███████╗
// ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝
// ------------------------------------------------
//
// This file is automatically generated.
// Please do not edit these files manually.
//
// ------------------------------------------------

#nullable restore

using Elastic.Clients.Elasticsearch.Serverless.Fluent;
using Elastic.Clients.Elasticsearch.Serverless.Serialization;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Text.Json;
using System.Text.Json.Serialization;

namespace Elastic.Clients.Elasticsearch.Serverless.Core.Search;

public sealed partial class DfsStatisticsProfile
{
[JsonInclude, JsonPropertyName("breakdown")]
public Elastic.Clients.Elasticsearch.Serverless.Core.Search.DfsStatisticsBreakdown Breakdown { get; init; }
[JsonInclude, JsonPropertyName("children")]
public IReadOnlyCollection<Elastic.Clients.Elasticsearch.Serverless.Core.Search.DfsStatisticsProfile>? Children { get; init; }
[JsonInclude, JsonPropertyName("debug")]
public IReadOnlyDictionary<string, object>? Debug { get; init; }
[JsonInclude, JsonPropertyName("description")]
public string Description { get; init; }
[JsonInclude, JsonPropertyName("time")]
public Elastic.Clients.Elasticsearch.Serverless.Duration? Time { get; init; }
[JsonInclude, JsonPropertyName("time_in_nanos")]
public long TimeInNanos { get; init; }
[JsonInclude, JsonPropertyName("type")]
public string Type { get; init; }
}
Original file line number Diff line number Diff line change
@@ -40,7 +40,7 @@ public sealed partial class Hit<TDocument>
[JsonInclude, JsonPropertyName("_ignored")]
public IReadOnlyCollection<string>? Ignored { get; init; }
[JsonInclude, JsonPropertyName("ignored_field_values")]
public IReadOnlyDictionary<string, IReadOnlyCollection<string>>? IgnoredFieldValues { get; init; }
public IReadOnlyDictionary<string, IReadOnlyCollection<Elastic.Clients.Elasticsearch.Serverless.FieldValue>>? IgnoredFieldValues { get; init; }
[JsonInclude, JsonPropertyName("_index")]
public string Index { get; init; }
[JsonInclude, JsonPropertyName("inner_hits")]
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
// Licensed to Elasticsearch B.V under one or more agreements.
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information.
//
// ███╗ ██╗ ██████╗ ████████╗██╗ ██████╗███████╗
// ████╗ ██║██╔═══██╗╚══██╔══╝██║██╔════╝██╔════╝
// ██╔██╗ ██║██║ ██║ ██║ ██║██║ █████╗
// ██║╚██╗██║██║ ██║ ██║ ██║██║ ██╔══╝
// ██║ ╚████║╚██████╔╝ ██║ ██║╚██████╗███████╗
// ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝
// ------------------------------------------------
//
// This file is automatically generated.
// Please do not edit these files manually.
//
// ------------------------------------------------

#nullable restore

using Elastic.Clients.Elasticsearch.Serverless.Fluent;
using Elastic.Clients.Elasticsearch.Serverless.Serialization;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Text.Json;
using System.Text.Json.Serialization;

namespace Elastic.Clients.Elasticsearch.Serverless.Core.Search;

public sealed partial class KnnCollectorResult
{
[JsonInclude, JsonPropertyName("children")]
public IReadOnlyCollection<Elastic.Clients.Elasticsearch.Serverless.Core.Search.KnnCollectorResult>? Children { get; init; }
[JsonInclude, JsonPropertyName("name")]
public string Name { get; init; }
[JsonInclude, JsonPropertyName("reason")]
public string Reason { get; init; }
[JsonInclude, JsonPropertyName("time")]
public Elastic.Clients.Elasticsearch.Serverless.Duration? Time { get; init; }
[JsonInclude, JsonPropertyName("time_in_nanos")]
public long TimeInNanos { get; init; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
// Licensed to Elasticsearch B.V under one or more agreements.
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information.
//
// ███╗ ██╗ ██████╗ ████████╗██╗ ██████╗███████╗
// ████╗ ██║██╔═══██╗╚══██╔══╝██║██╔════╝██╔════╝
// ██╔██╗ ██║██║ ██║ ██║ ██║██║ █████╗
// ██║╚██╗██║██║ ██║ ██║ ██║██║ ██╔══╝
// ██║ ╚████║╚██████╔╝ ██║ ██║╚██████╗███████╗
// ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝
// ------------------------------------------------
//
// This file is automatically generated.
// Please do not edit these files manually.
//
// ------------------------------------------------

#nullable restore

using Elastic.Clients.Elasticsearch.Serverless.Fluent;
using Elastic.Clients.Elasticsearch.Serverless.Serialization;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Text.Json;
using System.Text.Json.Serialization;

namespace Elastic.Clients.Elasticsearch.Serverless.Core.Search;

public sealed partial class KnnQueryProfileBreakdown
{
[JsonInclude, JsonPropertyName("advance")]
public long Advance { get; init; }
[JsonInclude, JsonPropertyName("advance_count")]
public long AdvanceCount { get; init; }
[JsonInclude, JsonPropertyName("build_scorer")]
public long BuildScorer { get; init; }
[JsonInclude, JsonPropertyName("build_scorer_count")]
public long BuildScorerCount { get; init; }
[JsonInclude, JsonPropertyName("compute_max_score")]
public long ComputeMaxScore { get; init; }
[JsonInclude, JsonPropertyName("compute_max_score_count")]
public long ComputeMaxScoreCount { get; init; }
[JsonInclude, JsonPropertyName("count_weight")]
public long CountWeight { get; init; }
[JsonInclude, JsonPropertyName("count_weight_count")]
public long CountWeightCount { get; init; }
[JsonInclude, JsonPropertyName("create_weight")]
public long CreateWeight { get; init; }
[JsonInclude, JsonPropertyName("create_weight_count")]
public long CreateWeightCount { get; init; }
[JsonInclude, JsonPropertyName("match")]
public long Match { get; init; }
[JsonInclude, JsonPropertyName("match_count")]
public long MatchCount { get; init; }
[JsonInclude, JsonPropertyName("next_doc")]
public long NextDoc { get; init; }
[JsonInclude, JsonPropertyName("next_doc_count")]
public long NextDocCount { get; init; }
[JsonInclude, JsonPropertyName("score")]
public long Score { get; init; }
[JsonInclude, JsonPropertyName("score_count")]
public long ScoreCount { get; init; }
[JsonInclude, JsonPropertyName("set_min_competitive_score")]
public long SetMinCompetitiveScore { get; init; }
[JsonInclude, JsonPropertyName("set_min_competitive_score_count")]
public long SetMinCompetitiveScoreCount { get; init; }
[JsonInclude, JsonPropertyName("shallow_advance")]
public long ShallowAdvance { get; init; }
[JsonInclude, JsonPropertyName("shallow_advance_count")]
public long ShallowAdvanceCount { get; init; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
// Licensed to Elasticsearch B.V under one or more agreements.
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information.
//
// ███╗ ██╗ ██████╗ ████████╗██╗ ██████╗███████╗
// ████╗ ██║██╔═══██╗╚══██╔══╝██║██╔════╝██╔════╝
// ██╔██╗ ██║██║ ██║ ██║ ██║██║ █████╗
// ██║╚██╗██║██║ ██║ ██║ ██║██║ ██╔══╝
// ██║ ╚████║╚██████╔╝ ██║ ██║╚██████╗███████╗
// ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝
// ------------------------------------------------
//
// This file is automatically generated.
// Please do not edit these files manually.
//
// ------------------------------------------------

#nullable restore

using Elastic.Clients.Elasticsearch.Serverless.Fluent;
using Elastic.Clients.Elasticsearch.Serverless.Serialization;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Text.Json;
using System.Text.Json.Serialization;

namespace Elastic.Clients.Elasticsearch.Serverless.Core.Search;

public sealed partial class KnnQueryProfileResult
{
[JsonInclude, JsonPropertyName("breakdown")]
public Elastic.Clients.Elasticsearch.Serverless.Core.Search.KnnQueryProfileBreakdown Breakdown { get; init; }
[JsonInclude, JsonPropertyName("children")]
public IReadOnlyCollection<Elastic.Clients.Elasticsearch.Serverless.Core.Search.KnnQueryProfileResult>? Children { get; init; }
[JsonInclude, JsonPropertyName("debug")]
public IReadOnlyDictionary<string, object>? Debug { get; init; }
[JsonInclude, JsonPropertyName("description")]
public string Description { get; init; }
[JsonInclude, JsonPropertyName("time")]
public Elastic.Clients.Elasticsearch.Serverless.Duration? Time { get; init; }
[JsonInclude, JsonPropertyName("time_in_nanos")]
public long TimeInNanos { get; init; }
[JsonInclude, JsonPropertyName("type")]
public string Type { get; init; }
}
Original file line number Diff line number Diff line change
@@ -41,6 +41,10 @@ public sealed partial class QueryBreakdown
public long ComputeMaxScore { get; init; }
[JsonInclude, JsonPropertyName("compute_max_score_count")]
public long ComputeMaxScoreCount { get; init; }
[JsonInclude, JsonPropertyName("count_weight")]
public long CountWeight { get; init; }
[JsonInclude, JsonPropertyName("count_weight_count")]
public long CountWeightCount { get; init; }
[JsonInclude, JsonPropertyName("create_weight")]
public long CreateWeight { get; init; }
[JsonInclude, JsonPropertyName("create_weight_count")]
Original file line number Diff line number Diff line change
@@ -31,10 +31,20 @@ public sealed partial class ShardProfile
{
[JsonInclude, JsonPropertyName("aggregations")]
public IReadOnlyCollection<Elastic.Clients.Elasticsearch.Serverless.Core.Search.AggregationProfile> Aggregations { get; init; }
[JsonInclude, JsonPropertyName("cluster")]
public string Cluster { get; init; }
[JsonInclude, JsonPropertyName("dfs")]
public Elastic.Clients.Elasticsearch.Serverless.Core.Search.DfsProfile? Dfs { get; init; }
[JsonInclude, JsonPropertyName("fetch")]
public Elastic.Clients.Elasticsearch.Serverless.Core.Search.FetchProfile? Fetch { get; init; }
[JsonInclude, JsonPropertyName("id")]
public string Id { get; init; }
[JsonInclude, JsonPropertyName("index")]
public string Index { get; init; }
[JsonInclude, JsonPropertyName("node_id")]
public string NodeId { get; init; }
[JsonInclude, JsonPropertyName("searches")]
public IReadOnlyCollection<Elastic.Clients.Elasticsearch.Serverless.Core.Search.SearchProfile> Searches { get; init; }
[JsonInclude, JsonPropertyName("shard_id")]
public long ShardId { get; init; }
}
Original file line number Diff line number Diff line change
@@ -35,8 +35,14 @@ public sealed partial class CacheStats
public int Evictions { get; init; }
[JsonInclude, JsonPropertyName("hits")]
public int Hits { get; init; }
[JsonInclude, JsonPropertyName("hits_time_in_millis")]
public long HitsTimeInMillis { get; init; }
[JsonInclude, JsonPropertyName("misses")]
public int Misses { get; init; }
[JsonInclude, JsonPropertyName("misses_time_in_millis")]
public long MissesTimeInMillis { get; init; }
[JsonInclude, JsonPropertyName("node_id")]
public string NodeId { get; init; }
[JsonInclude, JsonPropertyName("size_in_bytes")]
public long SizeInBytes { get; init; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
// Licensed to Elasticsearch B.V under one or more agreements.
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information.
//
// ███╗ ██╗ ██████╗ ████████╗██╗ ██████╗███████╗
// ████╗ ██║██╔═══██╗╚══██╔══╝██║██╔════╝██╔════╝
// ██╔██╗ ██║██║ ██║ ██║ ██║██║ █████╗
// ██║╚██╗██║██║ ██║ ██║ ██║██║ ██╔══╝
// ██║ ╚████║╚██████╔╝ ██║ ██║╚██████╗███████╗
// ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝
// ------------------------------------------------
//
// This file is automatically generated.
// Please do not edit these files manually.
//
// ------------------------------------------------

#nullable restore

using Elastic.Clients.Elasticsearch.Serverless.Core;
using Elastic.Clients.Elasticsearch.Serverless.Serialization;
using Elastic.Transport;
using System;
using System.Runtime.Serialization;
using System.Text;
using System.Text.Json;
using System.Text.Json.Serialization;

namespace Elastic.Clients.Elasticsearch.Serverless.Esql;

[JsonConverter(typeof(EsqlFormatConverter))]
public enum EsqlFormat
{
[EnumMember(Value = "yaml")]
Yaml,
[EnumMember(Value = "txt")]
Txt,
[EnumMember(Value = "tsv")]
Tsv,
[EnumMember(Value = "smile")]
Smile,
[EnumMember(Value = "json")]
Json,
[EnumMember(Value = "csv")]
Csv,
[EnumMember(Value = "cbor")]
Cbor,
[EnumMember(Value = "arrow")]
Arrow
}

internal sealed class EsqlFormatConverter : JsonConverter<EsqlFormat>
{
public override EsqlFormat Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
var enumString = reader.GetString();
switch (enumString)
{
case "yaml":
return EsqlFormat.Yaml;
case "txt":
return EsqlFormat.Txt;
case "tsv":
return EsqlFormat.Tsv;
case "smile":
return EsqlFormat.Smile;
case "json":
return EsqlFormat.Json;
case "csv":
return EsqlFormat.Csv;
case "cbor":
return EsqlFormat.Cbor;
case "arrow":
return EsqlFormat.Arrow;
}

ThrowHelper.ThrowJsonException();
return default;
}

public override void Write(Utf8JsonWriter writer, EsqlFormat value, JsonSerializerOptions options)
{
switch (value)
{
case EsqlFormat.Yaml:
writer.WriteStringValue("yaml");
return;
case EsqlFormat.Txt:
writer.WriteStringValue("txt");
return;
case EsqlFormat.Tsv:
writer.WriteStringValue("tsv");
return;
case EsqlFormat.Smile:
writer.WriteStringValue("smile");
return;
case EsqlFormat.Json:
writer.WriteStringValue("json");
return;
case EsqlFormat.Csv:
writer.WriteStringValue("csv");
return;
case EsqlFormat.Cbor:
writer.WriteStringValue("cbor");
return;
case EsqlFormat.Arrow:
writer.WriteStringValue("arrow");
return;
}

writer.WriteNullValue();
}
}
Original file line number Diff line number Diff line change
@@ -105,6 +105,97 @@ public override void Write(Utf8JsonWriter writer, ConvertType value, JsonSeriali
}
}

[JsonConverter(typeof(GeoGridTargetFormatConverter))]
public enum GeoGridTargetFormat
{
[EnumMember(Value = "wkt")]
Wkt,
[EnumMember(Value = "geojson")]
Geojson
}

internal sealed class GeoGridTargetFormatConverter : JsonConverter<GeoGridTargetFormat>
{
public override GeoGridTargetFormat Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
var enumString = reader.GetString();
switch (enumString)
{
case "wkt":
return GeoGridTargetFormat.Wkt;
case "geojson":
return GeoGridTargetFormat.Geojson;
}

ThrowHelper.ThrowJsonException();
return default;
}

public override void Write(Utf8JsonWriter writer, GeoGridTargetFormat value, JsonSerializerOptions options)
{
switch (value)
{
case GeoGridTargetFormat.Wkt:
writer.WriteStringValue("wkt");
return;
case GeoGridTargetFormat.Geojson:
writer.WriteStringValue("geojson");
return;
}

writer.WriteNullValue();
}
}

[JsonConverter(typeof(GeoGridTileTypeConverter))]
public enum GeoGridTileType
{
[EnumMember(Value = "geotile")]
Geotile,
[EnumMember(Value = "geohex")]
Geohex,
[EnumMember(Value = "geohash")]
Geohash
}

internal sealed class GeoGridTileTypeConverter : JsonConverter<GeoGridTileType>
{
public override GeoGridTileType Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
var enumString = reader.GetString();
switch (enumString)
{
case "geotile":
return GeoGridTileType.Geotile;
case "geohex":
return GeoGridTileType.Geohex;
case "geohash":
return GeoGridTileType.Geohash;
}

ThrowHelper.ThrowJsonException();
return default;
}

public override void Write(Utf8JsonWriter writer, GeoGridTileType value, JsonSerializerOptions options)
{
switch (value)
{
case GeoGridTileType.Geotile:
writer.WriteStringValue("geotile");
return;
case GeoGridTileType.Geohex:
writer.WriteStringValue("geohex");
return;
case GeoGridTileType.Geohash:
writer.WriteStringValue("geohash");
return;
}

writer.WriteNullValue();
}
}

[JsonConverter(typeof(JsonProcessorConflictStrategyConverter))]
public enum JsonProcessorConflictStrategy
{
@@ -202,26 +293,16 @@ public override void Write(Utf8JsonWriter writer, ShapeType value, JsonSerialize
[JsonConverter(typeof(UserAgentPropertyConverter))]
public enum UserAgentProperty
{
[EnumMember(Value = "PATCH")]
Patch,
[EnumMember(Value = "OS_NAME")]
OsName,
[EnumMember(Value = "OS_MINOR")]
OsMinor,
[EnumMember(Value = "OS_MAJOR")]
OsMajor,
[EnumMember(Value = "OS")]
[EnumMember(Value = "version")]
Version,
[EnumMember(Value = "os")]
Os,
[EnumMember(Value = "NAME")]
[EnumMember(Value = "original")]
Original,
[EnumMember(Value = "name")]
Name,
[EnumMember(Value = "MINOR")]
Minor,
[EnumMember(Value = "MAJOR")]
Major,
[EnumMember(Value = "DEVICE")]
Device,
[EnumMember(Value = "BUILD")]
Build
[EnumMember(Value = "device")]
Device
}

internal sealed class UserAgentPropertyConverter : JsonConverter<UserAgentProperty>
@@ -231,26 +312,16 @@ public override UserAgentProperty Read(ref Utf8JsonReader reader, Type typeToCon
var enumString = reader.GetString();
switch (enumString)
{
case "PATCH":
return UserAgentProperty.Patch;
case "OS_NAME":
return UserAgentProperty.OsName;
case "OS_MINOR":
return UserAgentProperty.OsMinor;
case "OS_MAJOR":
return UserAgentProperty.OsMajor;
case "OS":
case "version":
return UserAgentProperty.Version;
case "os":
return UserAgentProperty.Os;
case "NAME":
case "original":
return UserAgentProperty.Original;
case "name":
return UserAgentProperty.Name;
case "MINOR":
return UserAgentProperty.Minor;
case "MAJOR":
return UserAgentProperty.Major;
case "DEVICE":
case "device":
return UserAgentProperty.Device;
case "BUILD":
return UserAgentProperty.Build;
}

ThrowHelper.ThrowJsonException();
@@ -261,35 +332,20 @@ public override void Write(Utf8JsonWriter writer, UserAgentProperty value, JsonS
{
switch (value)
{
case UserAgentProperty.Patch:
writer.WriteStringValue("PATCH");
return;
case UserAgentProperty.OsName:
writer.WriteStringValue("OS_NAME");
return;
case UserAgentProperty.OsMinor:
writer.WriteStringValue("OS_MINOR");
return;
case UserAgentProperty.OsMajor:
writer.WriteStringValue("OS_MAJOR");
case UserAgentProperty.Version:
writer.WriteStringValue("version");
return;
case UserAgentProperty.Os:
writer.WriteStringValue("OS");
writer.WriteStringValue("os");
return;
case UserAgentProperty.Name:
writer.WriteStringValue("NAME");
case UserAgentProperty.Original:
writer.WriteStringValue("original");
return;
case UserAgentProperty.Minor:
writer.WriteStringValue("MINOR");
return;
case UserAgentProperty.Major:
writer.WriteStringValue("MAJOR");
case UserAgentProperty.Name:
writer.WriteStringValue("name");
return;
case UserAgentProperty.Device:
writer.WriteStringValue("DEVICE");
return;
case UserAgentProperty.Build:
writer.WriteStringValue("BUILD");
writer.WriteStringValue("device");
return;
}

Original file line number Diff line number Diff line change
@@ -417,12 +417,32 @@ public override void Write(Utf8JsonWriter writer, DeploymentAllocationState valu
[JsonConverter(typeof(DeploymentAssignmentStateConverter))]
public enum DeploymentAssignmentState
{
/// <summary>
/// <para>
/// The deployment is preparing to stop and deallocate the model from the relevant nodes.
/// </para>
/// </summary>
[EnumMember(Value = "stopping")]
Stopping,
/// <summary>
/// <para>
/// The deployment has recently started but is not yet usable; the model is not allocated on any nodes.
/// </para>
/// </summary>
[EnumMember(Value = "starting")]
Starting,
/// <summary>
/// <para>
/// The deployment is usable; at least one node has the model allocated.
/// </para>
/// </summary>
[EnumMember(Value = "started")]
Started,
/// <summary>
/// <para>
/// The deployment is on a failed state and must be re-deployed.
/// </para>
/// </summary>
[EnumMember(Value = "failed")]
Failed
}
@@ -470,70 +490,6 @@ public override void Write(Utf8JsonWriter writer, DeploymentAssignmentState valu
}
}

[JsonConverter(typeof(DeploymentStateConverter))]
public enum DeploymentState
{
/// <summary>
/// <para>
/// The deployment is preparing to stop and deallocate the model from the relevant nodes.
/// </para>
/// </summary>
[EnumMember(Value = "stopping")]
Stopping,
/// <summary>
/// <para>
/// The deployment has recently started but is not yet usable; the model is not allocated on any nodes.
/// </para>
/// </summary>
[EnumMember(Value = "starting")]
Starting,
/// <summary>
/// <para>
/// The deployment is usable; at least one node has the model allocated.
/// </para>
/// </summary>
[EnumMember(Value = "started")]
Started
}

internal sealed class DeploymentStateConverter : JsonConverter<DeploymentState>
{
public override DeploymentState Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
var enumString = reader.GetString();
switch (enumString)
{
case "stopping":
return DeploymentState.Stopping;
case "starting":
return DeploymentState.Starting;
case "started":
return DeploymentState.Started;
}

ThrowHelper.ThrowJsonException();
return default;
}

public override void Write(Utf8JsonWriter writer, DeploymentState value, JsonSerializerOptions options)
{
switch (value)
{
case DeploymentState.Stopping:
writer.WriteStringValue("stopping");
return;
case DeploymentState.Starting:
writer.WriteStringValue("starting");
return;
case DeploymentState.Started:
writer.WriteStringValue("started");
return;
}

writer.WriteNullValue();
}
}

[JsonConverter(typeof(ExcludeFrequentConverter))]
public enum ExcludeFrequent
{
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
// Licensed to Elasticsearch B.V under one or more agreements.
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information.
//
// ███╗ ██╗ ██████╗ ████████╗██╗ ██████╗███████╗
// ████╗ ██║██╔═══██╗╚══██╔══╝██║██╔════╝██╔════╝
// ██╔██╗ ██║██║ ██║ ██║ ██║██║ █████╗
// ██║╚██╗██║██║ ██║ ██║ ██║██║ ██╔══╝
// ██║ ╚████║╚██████╔╝ ██║ ██║╚██████╗███████╗
// ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝
// ------------------------------------------------
//
// This file is automatically generated.
// Please do not edit these files manually.
//
// ------------------------------------------------

#nullable restore

using Elastic.Clients.Elasticsearch.Serverless.Core;
using Elastic.Clients.Elasticsearch.Serverless.Serialization;
using Elastic.Transport;
using System;
using System.Runtime.Serialization;
using System.Text;
using System.Text.Json;
using System.Text.Json.Serialization;

namespace Elastic.Clients.Elasticsearch.Serverless.Sql;

[JsonConverter(typeof(SqlFormatConverter))]
public enum SqlFormat
{
[EnumMember(Value = "yaml")]
Yaml,
[EnumMember(Value = "txt")]
Txt,
[EnumMember(Value = "tsv")]
Tsv,
[EnumMember(Value = "smile")]
Smile,
[EnumMember(Value = "json")]
Json,
[EnumMember(Value = "csv")]
Csv,
[EnumMember(Value = "cbor")]
Cbor
}

internal sealed class SqlFormatConverter : JsonConverter<SqlFormat>
{
public override SqlFormat Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
var enumString = reader.GetString();
switch (enumString)
{
case "yaml":
return SqlFormat.Yaml;
case "txt":
return SqlFormat.Txt;
case "tsv":
return SqlFormat.Tsv;
case "smile":
return SqlFormat.Smile;
case "json":
return SqlFormat.Json;
case "csv":
return SqlFormat.Csv;
case "cbor":
return SqlFormat.Cbor;
}

ThrowHelper.ThrowJsonException();
return default;
}

public override void Write(Utf8JsonWriter writer, SqlFormat value, JsonSerializerOptions options)
{
switch (value)
{
case SqlFormat.Yaml:
writer.WriteStringValue("yaml");
return;
case SqlFormat.Txt:
writer.WriteStringValue("txt");
return;
case SqlFormat.Tsv:
writer.WriteStringValue("tsv");
return;
case SqlFormat.Smile:
writer.WriteStringValue("smile");
return;
case SqlFormat.Json:
writer.WriteStringValue("json");
return;
case SqlFormat.Csv:
writer.WriteStringValue("csv");
return;
case SqlFormat.Cbor:
writer.WriteStringValue("cbor");
return;
}

writer.WriteNullValue();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
// Licensed to Elasticsearch B.V under one or more agreements.
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
// See the LICENSE file in the project root for more information.
//
// ███╗ ██╗ ██████╗ ████████╗██╗ ██████╗███████╗
// ████╗ ██║██╔═══██╗╚══██╔══╝██║██╔════╝██╔════╝
// ██╔██╗ ██║██║ ██║ ██║ ██║██║ █████╗
// ██║╚██╗██║██║ ██║ ██║ ██║██║ ██╔══╝
// ██║ ╚████║╚██████╔╝ ██║ ██║╚██████╗███████╗
// ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝
// ------------------------------------------------
//
// This file is automatically generated.
// Please do not edit these files manually.
//
// ------------------------------------------------

#nullable restore

using Elastic.Clients.Elasticsearch.Serverless.Core;
using Elastic.Clients.Elasticsearch.Serverless.Serialization;
using Elastic.Transport;
using System;
using System.Runtime.Serialization;
using System.Text;
using System.Text.Json;
using System.Text.Json.Serialization;

namespace Elastic.Clients.Elasticsearch.Serverless.Xpack;

[JsonConverter(typeof(XPackCategoryConverter))]
public enum XPackCategory
{
[EnumMember(Value = "license")]
License,
[EnumMember(Value = "features")]
Features,
[EnumMember(Value = "build")]
Build
}

internal sealed class XPackCategoryConverter : JsonConverter<XPackCategory>
{
public override XPackCategory Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
var enumString = reader.GetString();
switch (enumString)
{
case "license":
return XPackCategory.License;
case "features":
return XPackCategory.Features;
case "build":
return XPackCategory.Build;
}

ThrowHelper.ThrowJsonException();
return default;
}

public override void Write(Utf8JsonWriter writer, XPackCategory value, JsonSerializerOptions options)
{
switch (value)
{
case XPackCategory.License:
writer.WriteStringValue("license");
return;
case XPackCategory.Features:
writer.WriteStringValue("features");
return;
case XPackCategory.Build:
writer.WriteStringValue("build");
return;
}

writer.WriteNullValue();
}
}
Original file line number Diff line number Diff line change
@@ -94,6 +94,7 @@ public sealed partial class AppendProcessor
/// </para>
/// </summary>
[JsonInclude, JsonPropertyName("value")]
[SingleOrManyCollectionConverter(typeof(object))]
public ICollection<object> Value { get; set; }

public static implicit operator Elastic.Clients.Elasticsearch.Serverless.Ingest.Processor(AppendProcessor appendProcessor) => Elastic.Clients.Elasticsearch.Serverless.Ingest.Processor.Append(appendProcessor);
@@ -331,7 +332,7 @@ protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions o
}

writer.WritePropertyName("value");
JsonSerializer.Serialize(writer, ValueValue, options);
SingleOrManySerializationHelper.Serialize<object>(ValueValue, writer, options);
writer.WriteEndObject();
}
}
@@ -568,7 +569,7 @@ protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions o
}

writer.WritePropertyName("value");
JsonSerializer.Serialize(writer, ValueValue, options);
SingleOrManySerializationHelper.Serialize<object>(ValueValue, writer, options);
writer.WriteEndObject();
}
}
Original file line number Diff line number Diff line change
@@ -71,6 +71,16 @@ public sealed partial class DotExpanderProcessor
[JsonInclude, JsonPropertyName("on_failure")]
public ICollection<Elastic.Clients.Elasticsearch.Serverless.Ingest.Processor>? OnFailure { get; set; }

/// <summary>
/// <para>
/// Controls the behavior when there is already an existing nested object that conflicts with the expanded field.
/// When <c>false</c>, the processor will merge conflicts by combining the old and the new values into an array.
/// When <c>true</c>, the value from the expanded field will overwrite the existing value.
/// </para>
/// </summary>
[JsonInclude, JsonPropertyName("override")]
public bool? Override { get; set; }

/// <summary>
/// <para>
/// The field that contains the field to expand.
@@ -108,6 +118,7 @@ public DotExpanderProcessorDescriptor() : base()
private Elastic.Clients.Elasticsearch.Serverless.Ingest.ProcessorDescriptor<TDocument> OnFailureDescriptor { get; set; }
private Action<Elastic.Clients.Elasticsearch.Serverless.Ingest.ProcessorDescriptor<TDocument>> OnFailureDescriptorAction { get; set; }
private Action<Elastic.Clients.Elasticsearch.Serverless.Ingest.ProcessorDescriptor<TDocument>>[] OnFailureDescriptorActions { get; set; }
private bool? OverrideValue { get; set; }
private string? PathValue { get; set; }
private string? TagValue { get; set; }

@@ -222,6 +233,19 @@ public DotExpanderProcessorDescriptor<TDocument> OnFailure(params Action<Elastic
return Self;
}

/// <summary>
/// <para>
/// Controls the behavior when there is already an existing nested object that conflicts with the expanded field.
/// When <c>false</c>, the processor will merge conflicts by combining the old and the new values into an array.
/// When <c>true</c>, the value from the expanded field will overwrite the existing value.
/// </para>
/// </summary>
public DotExpanderProcessorDescriptor<TDocument> Override(bool? value = true)
{
OverrideValue = value;
return Self;
}

/// <summary>
/// <para>
/// The field that contains the field to expand.
@@ -300,6 +324,12 @@ protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions o
JsonSerializer.Serialize(writer, OnFailureValue, options);
}

if (OverrideValue.HasValue)
{
writer.WritePropertyName("override");
writer.WriteBooleanValue(OverrideValue.Value);
}

if (!string.IsNullOrEmpty(PathValue))
{
writer.WritePropertyName("path");
@@ -332,6 +362,7 @@ public DotExpanderProcessorDescriptor() : base()
private Elastic.Clients.Elasticsearch.Serverless.Ingest.ProcessorDescriptor OnFailureDescriptor { get; set; }
private Action<Elastic.Clients.Elasticsearch.Serverless.Ingest.ProcessorDescriptor> OnFailureDescriptorAction { get; set; }
private Action<Elastic.Clients.Elasticsearch.Serverless.Ingest.ProcessorDescriptor>[] OnFailureDescriptorActions { get; set; }
private bool? OverrideValue { get; set; }
private string? PathValue { get; set; }
private string? TagValue { get; set; }

@@ -446,6 +477,19 @@ public DotExpanderProcessorDescriptor OnFailure(params Action<Elastic.Clients.El
return Self;
}

/// <summary>
/// <para>
/// Controls the behavior when there is already an existing nested object that conflicts with the expanded field.
/// When <c>false</c>, the processor will merge conflicts by combining the old and the new values into an array.
/// When <c>true</c>, the value from the expanded field will overwrite the existing value.
/// </para>
/// </summary>
public DotExpanderProcessorDescriptor Override(bool? value = true)
{
OverrideValue = value;
return Self;
}

/// <summary>
/// <para>
/// The field that contains the field to expand.
@@ -524,6 +568,12 @@ protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions o
JsonSerializer.Serialize(writer, OnFailureValue, options);
}

if (OverrideValue.HasValue)
{
writer.WritePropertyName("override");
writer.WriteBooleanValue(OverrideValue.Value);
}

if (!string.IsNullOrEmpty(PathValue))
{
writer.WritePropertyName("path");
Loading