Skip to content

Commit 9acced2

Browse files
Support weight score on FunctionScore. (#7429) (#7435)
* Fix unrelated typo * Add initial function score query test * Fix formatting in test * Add manual WeightScore methods * Converter serialization updates for empty containers Co-authored-by: Steve Gordon <[email protected]>
1 parent 0dcd77b commit 9acced2

24 files changed

+809
-539
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
// Licensed to Elasticsearch B.V under one or more agreements.
2+
// Elasticsearch B.V licenses this file to you under the Apache 2.0 License.
3+
// See the LICENSE file in the project root for more information.
4+
5+
namespace Elastic.Clients.Elasticsearch.QueryDsl;
6+
7+
// A quirk of the function score type which is valid without a variant.
8+
9+
public partial class FunctionScore
10+
{
11+
internal FunctionScore() { }
12+
13+
/// <summary>
14+
/// The weight score allows you to multiply the score by the provided weight.
15+
/// </summary>
16+
public static FunctionScore WeightScore(double weight) => new() { Weight = weight };
17+
}
18+
19+
public partial class FunctionScoreDescriptor<TDocument>
20+
{
21+
public FunctionScoreDescriptor<TDocument> WeightScore(double weight) => Set(null, null).Weight(weight);
22+
}
23+
24+
public partial class FunctionScoreDescriptor
25+
{
26+
public FunctionScoreDescriptor WeightScore(double weight) => Set(null, null).Weight(weight);
27+
}

src/Elastic.Clients.Elasticsearch/Types/Scripting/InlineScript.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ namespace Elastic.Clients.Elasticsearch;
1212

1313
public sealed partial class InlineScript : ISelfTwoWaySerializable
1414
{
15-
// This type is ISelfTwoWaySerializable because it potentially uses the source serialiser for params serialisation
15+
// This type is ISelfTwoWaySerializable because it potentially uses the source serializer for params serialisation
1616

1717
public InlineScript(string source) => Source = source;
1818

src/Elastic.Clients.Elasticsearch/_Generated/Types/Aggregations/Aggregation.g.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@ public override void Write(Utf8JsonWriter writer, Aggregation value, JsonSeriali
292292
}
293293
else
294294
{
295-
throw new JsonException("Invalid container cannot be serialised");
295+
throw new JsonException("Invalid container cannot be serialized");
296296
}
297297
}
298298
}

src/Elastic.Clients.Elasticsearch/_Generated/Types/Aggregations/InferenceConfig.g.cs

+11-8
Original file line numberDiff line numberDiff line change
@@ -86,15 +86,18 @@ public override InferenceConfig Read(ref Utf8JsonReader reader, Type typeToConve
8686
public override void Write(Utf8JsonWriter writer, InferenceConfig value, JsonSerializerOptions options)
8787
{
8888
writer.WriteStartObject();
89-
writer.WritePropertyName(value.VariantName);
90-
switch (value.VariantName)
89+
if (value.VariantName is not null & value.Variant is not null)
9190
{
92-
case "classification":
93-
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Ml.ClassificationInferenceOptions>(writer, (Elastic.Clients.Elasticsearch.Ml.ClassificationInferenceOptions)value.Variant, options);
94-
break;
95-
case "regression":
96-
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Ml.RegressionInferenceOptions>(writer, (Elastic.Clients.Elasticsearch.Ml.RegressionInferenceOptions)value.Variant, options);
97-
break;
91+
writer.WritePropertyName(value.VariantName);
92+
switch (value.VariantName)
93+
{
94+
case "classification":
95+
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Ml.ClassificationInferenceOptions>(writer, (Elastic.Clients.Elasticsearch.Ml.ClassificationInferenceOptions)value.Variant, options);
96+
break;
97+
case "regression":
98+
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Ml.RegressionInferenceOptions>(writer, (Elastic.Clients.Elasticsearch.Ml.RegressionInferenceOptions)value.Variant, options);
99+
break;
100+
}
98101
}
99102

100103
writer.WriteEndObject();

src/Elastic.Clients.Elasticsearch/_Generated/Types/Core/Search/FieldSuggester.g.cs

+34-35
Original file line numberDiff line numberDiff line change
@@ -156,18 +156,21 @@ public override void Write(Utf8JsonWriter writer, FieldSuggester value, JsonSeri
156156
writer.WriteStringValue(value.Text);
157157
}
158158

159-
writer.WritePropertyName(value.VariantName);
160-
switch (value.VariantName)
159+
if (value.VariantName is not null & value.Variant is not null)
161160
{
162-
case "completion":
163-
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Core.Search.CompletionSuggester>(writer, (Elastic.Clients.Elasticsearch.Core.Search.CompletionSuggester)value.Variant, options);
164-
break;
165-
case "phrase":
166-
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Core.Search.PhraseSuggester>(writer, (Elastic.Clients.Elasticsearch.Core.Search.PhraseSuggester)value.Variant, options);
167-
break;
168-
case "term":
169-
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Core.Search.TermSuggester>(writer, (Elastic.Clients.Elasticsearch.Core.Search.TermSuggester)value.Variant, options);
170-
break;
161+
writer.WritePropertyName(value.VariantName);
162+
switch (value.VariantName)
163+
{
164+
case "completion":
165+
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Core.Search.CompletionSuggester>(writer, (Elastic.Clients.Elasticsearch.Core.Search.CompletionSuggester)value.Variant, options);
166+
break;
167+
case "phrase":
168+
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Core.Search.PhraseSuggester>(writer, (Elastic.Clients.Elasticsearch.Core.Search.PhraseSuggester)value.Variant, options);
169+
break;
170+
case "term":
171+
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Core.Search.TermSuggester>(writer, (Elastic.Clients.Elasticsearch.Core.Search.TermSuggester)value.Variant, options);
172+
break;
173+
}
171174
}
172175

173176
writer.WriteEndObject();
@@ -236,12 +239,6 @@ public FieldSuggesterDescriptor<TDocument> Text(string? text)
236239

237240
protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings)
238241
{
239-
if (!ContainsVariant)
240-
{
241-
writer.WriteNullValue();
242-
return;
243-
}
244-
245242
writer.WriteStartObject();
246243
if (!string.IsNullOrEmpty(PrefixValue))
247244
{
@@ -261,15 +258,19 @@ protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions o
261258
writer.WriteStringValue(TextValue);
262259
}
263260

264-
writer.WritePropertyName(ContainedVariantName);
265-
if (Variant is not null)
261+
if (!string.IsNullOrEmpty(ContainedVariantName))
266262
{
267-
JsonSerializer.Serialize(writer, Variant, Variant.GetType(), options);
268-
writer.WriteEndObject();
269-
return;
263+
writer.WritePropertyName(ContainedVariantName);
264+
if (Variant is not null)
265+
{
266+
JsonSerializer.Serialize(writer, Variant, Variant.GetType(), options);
267+
writer.WriteEndObject();
268+
return;
269+
}
270+
271+
JsonSerializer.Serialize(writer, Descriptor, Descriptor.GetType(), options);
270272
}
271273

272-
JsonSerializer.Serialize(writer, Descriptor, Descriptor.GetType(), options);
273274
writer.WriteEndObject();
274275
}
275276
}
@@ -339,12 +340,6 @@ public FieldSuggesterDescriptor Text(string? text)
339340

340341
protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings)
341342
{
342-
if (!ContainsVariant)
343-
{
344-
writer.WriteNullValue();
345-
return;
346-
}
347-
348343
writer.WriteStartObject();
349344
if (!string.IsNullOrEmpty(PrefixValue))
350345
{
@@ -364,15 +359,19 @@ protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions o
364359
writer.WriteStringValue(TextValue);
365360
}
366361

367-
writer.WritePropertyName(ContainedVariantName);
368-
if (Variant is not null)
362+
if (!string.IsNullOrEmpty(ContainedVariantName))
369363
{
370-
JsonSerializer.Serialize(writer, Variant, Variant.GetType(), options);
371-
writer.WriteEndObject();
372-
return;
364+
writer.WritePropertyName(ContainedVariantName);
365+
if (Variant is not null)
366+
{
367+
JsonSerializer.Serialize(writer, Variant, Variant.GetType(), options);
368+
writer.WriteEndObject();
369+
return;
370+
}
371+
372+
JsonSerializer.Serialize(writer, Descriptor, Descriptor.GetType(), options);
373373
}
374374

375-
JsonSerializer.Serialize(writer, Descriptor, Descriptor.GetType(), options);
376375
writer.WriteEndObject();
377376
}
378377
}

src/Elastic.Clients.Elasticsearch/_Generated/Types/Core/Search/SmoothingModel.g.cs

+14-11
Original file line numberDiff line numberDiff line change
@@ -94,18 +94,21 @@ public override SmoothingModel Read(ref Utf8JsonReader reader, Type typeToConver
9494
public override void Write(Utf8JsonWriter writer, SmoothingModel value, JsonSerializerOptions options)
9595
{
9696
writer.WriteStartObject();
97-
writer.WritePropertyName(value.VariantName);
98-
switch (value.VariantName)
97+
if (value.VariantName is not null & value.Variant is not null)
9998
{
100-
case "laplace":
101-
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Core.Search.LaplaceSmoothingModel>(writer, (Elastic.Clients.Elasticsearch.Core.Search.LaplaceSmoothingModel)value.Variant, options);
102-
break;
103-
case "linear_interpolation":
104-
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Core.Search.LinearInterpolationSmoothingModel>(writer, (Elastic.Clients.Elasticsearch.Core.Search.LinearInterpolationSmoothingModel)value.Variant, options);
105-
break;
106-
case "stupid_backoff":
107-
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Core.Search.StupidBackoffSmoothingModel>(writer, (Elastic.Clients.Elasticsearch.Core.Search.StupidBackoffSmoothingModel)value.Variant, options);
108-
break;
99+
writer.WritePropertyName(value.VariantName);
100+
switch (value.VariantName)
101+
{
102+
case "laplace":
103+
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Core.Search.LaplaceSmoothingModel>(writer, (Elastic.Clients.Elasticsearch.Core.Search.LaplaceSmoothingModel)value.Variant, options);
104+
break;
105+
case "linear_interpolation":
106+
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Core.Search.LinearInterpolationSmoothingModel>(writer, (Elastic.Clients.Elasticsearch.Core.Search.LinearInterpolationSmoothingModel)value.Variant, options);
107+
break;
108+
case "stupid_backoff":
109+
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Core.Search.StupidBackoffSmoothingModel>(writer, (Elastic.Clients.Elasticsearch.Core.Search.StupidBackoffSmoothingModel)value.Variant, options);
110+
break;
111+
}
109112
}
110113

111114
writer.WriteEndObject();

src/Elastic.Clients.Elasticsearch/_Generated/Types/IndexManagement/Action.g.cs

+14-11
Original file line numberDiff line numberDiff line change
@@ -94,18 +94,21 @@ public override Action Read(ref Utf8JsonReader reader, Type typeToConvert, JsonS
9494
public override void Write(Utf8JsonWriter writer, Action value, JsonSerializerOptions options)
9595
{
9696
writer.WriteStartObject();
97-
writer.WritePropertyName(value.VariantName);
98-
switch (value.VariantName)
97+
if (value.VariantName is not null & value.Variant is not null)
9998
{
100-
case "add":
101-
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.IndexManagement.AddAction>(writer, (Elastic.Clients.Elasticsearch.IndexManagement.AddAction)value.Variant, options);
102-
break;
103-
case "remove":
104-
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.IndexManagement.RemoveAction>(writer, (Elastic.Clients.Elasticsearch.IndexManagement.RemoveAction)value.Variant, options);
105-
break;
106-
case "remove_index":
107-
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.IndexManagement.RemoveIndexAction>(writer, (Elastic.Clients.Elasticsearch.IndexManagement.RemoveIndexAction)value.Variant, options);
108-
break;
99+
writer.WritePropertyName(value.VariantName);
100+
switch (value.VariantName)
101+
{
102+
case "add":
103+
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.IndexManagement.AddAction>(writer, (Elastic.Clients.Elasticsearch.IndexManagement.AddAction)value.Variant, options);
104+
break;
105+
case "remove":
106+
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.IndexManagement.RemoveAction>(writer, (Elastic.Clients.Elasticsearch.IndexManagement.RemoveAction)value.Variant, options);
107+
break;
108+
case "remove_index":
109+
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.IndexManagement.RemoveIndexAction>(writer, (Elastic.Clients.Elasticsearch.IndexManagement.RemoveIndexAction)value.Variant, options);
110+
break;
111+
}
109112
}
110113

111114
writer.WriteEndObject();

src/Elastic.Clients.Elasticsearch/_Generated/Types/Ingest/InferenceConfig.g.cs

+11-8
Original file line numberDiff line numberDiff line change
@@ -86,15 +86,18 @@ public override InferenceConfig Read(ref Utf8JsonReader reader, Type typeToConve
8686
public override void Write(Utf8JsonWriter writer, InferenceConfig value, JsonSerializerOptions options)
8787
{
8888
writer.WriteStartObject();
89-
writer.WritePropertyName(value.VariantName);
90-
switch (value.VariantName)
89+
if (value.VariantName is not null & value.Variant is not null)
9190
{
92-
case "classification":
93-
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Ingest.InferenceConfigClassification>(writer, (Elastic.Clients.Elasticsearch.Ingest.InferenceConfigClassification)value.Variant, options);
94-
break;
95-
case "regression":
96-
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Ingest.InferenceConfigRegression>(writer, (Elastic.Clients.Elasticsearch.Ingest.InferenceConfigRegression)value.Variant, options);
97-
break;
91+
writer.WritePropertyName(value.VariantName);
92+
switch (value.VariantName)
93+
{
94+
case "classification":
95+
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Ingest.InferenceConfigClassification>(writer, (Elastic.Clients.Elasticsearch.Ingest.InferenceConfigClassification)value.Variant, options);
96+
break;
97+
case "regression":
98+
JsonSerializer.Serialize<Elastic.Clients.Elasticsearch.Ingest.InferenceConfigRegression>(writer, (Elastic.Clients.Elasticsearch.Ingest.InferenceConfigRegression)value.Variant, options);
99+
break;
100+
}
98101
}
99102

100103
writer.WriteEndObject();

0 commit comments

Comments
 (0)