diff --git a/docs/aggregations/reserved-agg-names.asciidoc b/docs/aggregations/reserved-agg-names.asciidoc
index f1c24dba301..2b73c74a7a9 100644
--- a/docs/aggregations/reserved-agg-names.asciidoc
+++ b/docs/aggregations/reserved-agg-names.asciidoc
@@ -1,4 +1,4 @@
-:ref_current: https://www.elastic.co/guide/en/elasticsearch/reference/master
+:ref_current: https://www.elastic.co/guide/en/elasticsearch/reference/2.3
:github: https://github.com/elastic/elasticsearch-net
@@ -7,7 +7,7 @@
////
IMPORTANT NOTE
==============
-This file has been generated from https://github.com/elastic/elasticsearch-net/tree/master/src/Tests/Aggregations/ReservedAggNames.doc.cs.
+This file has been generated from https://github.com/elastic/elasticsearch-net/tree/2.x/src/Tests/Aggregations/ReservedAggNames.doc.cs.
If you wish to submit a PR for any spelling mistakes, typos or grammatical errors for this file,
please modify the original csharp file found at the link and submit the PR with that change. Thanks!
////
diff --git a/src/Nest/Nest.csproj b/src/Nest/Nest.csproj
index 121b96fadb1..475213f135a 100644
--- a/src/Nest/Nest.csproj
+++ b/src/Nest/Nest.csproj
@@ -1194,6 +1194,11 @@
+
+
+
+
+
diff --git a/src/Nest/Search/Suggesters/PhraseSuggester/PhraseSuggester.cs b/src/Nest/Search/Suggesters/PhraseSuggester/PhraseSuggester.cs
index c070ca1cbac..0541bd5a6ac 100644
--- a/src/Nest/Search/Suggesters/PhraseSuggester/PhraseSuggester.cs
+++ b/src/Nest/Search/Suggesters/PhraseSuggester/PhraseSuggester.cs
@@ -32,6 +32,9 @@ public interface IPhraseSuggester : ISuggester
[JsonProperty(PropertyName = "collate")]
IPhraseSuggestCollate Collate { get; set; }
+
+ [JsonProperty("smoothing")]
+ SmoothingModelContainer Smoothing { get; set; }
}
public class PhraseSuggester : SuggesterBase, IPhraseSuggester
@@ -44,6 +47,7 @@ public class PhraseSuggester : SuggesterBase, IPhraseSuggester
public IEnumerable DirectGenerator { get; set; }
public IPhraseSuggestHighlight Highlight { get; set; }
public IPhraseSuggestCollate Collate { get; set; }
+ public SmoothingModelContainer Smoothing { get; set; }
}
public class PhraseSuggesterDescriptor : SuggestDescriptorBase, IPhraseSuggester, T>, IPhraseSuggester
@@ -57,6 +61,7 @@ public class PhraseSuggesterDescriptor : SuggestDescriptorBase IPhraseSuggester.DirectGenerator { get; set; }
IPhraseSuggestHighlight IPhraseSuggester.Highlight { get; set; }
IPhraseSuggestCollate IPhraseSuggester.Collate { get; set; }
+ SmoothingModelContainer IPhraseSuggester.Smoothing { get; set; }
public PhraseSuggesterDescriptor GramSize(int? gramSize) => Assign(a => a.GramSize = gramSize);
@@ -69,7 +74,7 @@ public class PhraseSuggesterDescriptor : SuggestDescriptorBase DirectGenerator(params Func, IDirectGenerator>[] generators) =>
Assign(a=>a.DirectGenerator = generators.Select(g => g(new DirectGeneratorDescriptor())).ToList());
- public PhraseSuggesterDescriptor RealWordErrorLikelihood(double? realWordErrorLikelihood) =>
+ public PhraseSuggesterDescriptor RealWordErrorLikelihood(double? realWordErrorLikelihood) =>
Assign(a => a.RealWordErrorLikelihood = realWordErrorLikelihood);
public PhraseSuggesterDescriptor Highlight(Func selector) =>
@@ -77,5 +82,8 @@ public PhraseSuggesterDescriptor Highlight(Func Collate(Func, IPhraseSuggestCollate> selector) =>
Assign(a => a.Collate = selector?.Invoke(new PhraseSuggestCollateDescriptor()));
+
+ public PhraseSuggesterDescriptor Smoothing(Func selector) =>
+ Assign(a => a.Smoothing = selector?.Invoke(new SmoothingModelContainerDescriptor()));
}
}
diff --git a/src/Nest/Search/Suggesters/PhraseSuggester/SmoothingModel/LaplaceSmoothingModel.cs b/src/Nest/Search/Suggesters/PhraseSuggester/SmoothingModel/LaplaceSmoothingModel.cs
new file mode 100644
index 00000000000..7ed4e7b3542
--- /dev/null
+++ b/src/Nest/Search/Suggesters/PhraseSuggester/SmoothingModel/LaplaceSmoothingModel.cs
@@ -0,0 +1,27 @@
+using Newtonsoft.Json;
+using System;
+
+namespace Nest
+{
+ [JsonObject]
+ [JsonConverter(typeof(ReadAsTypeJsonConverter))]
+ public interface ILaplaceSmoothingModel : ISmoothingModel
+ {
+ [JsonProperty("alpha")]
+ double? Alpha { get; set; }
+ }
+
+ public class LaplaceSmoothingModel : SmoothingModelBase, ILaplaceSmoothingModel
+ {
+ public double? Alpha { get; set; }
+
+ internal override void WrapInContainer(ISmoothingModelContainer container) => container.Laplace = this;
+ }
+
+ public class LaplaceSmoothingModelDescriptor : DescriptorBase, ILaplaceSmoothingModel
+ {
+ double? ILaplaceSmoothingModel.Alpha{ get; set; }
+
+ public LaplaceSmoothingModelDescriptor Alpha(double? alpha) => Assign(a => a.Alpha = alpha);
+ }
+}
diff --git a/src/Nest/Search/Suggesters/PhraseSuggester/SmoothingModel/LinearInterpolationSmoothingModel.cs b/src/Nest/Search/Suggesters/PhraseSuggester/SmoothingModel/LinearInterpolationSmoothingModel.cs
new file mode 100644
index 00000000000..4fe2a6f063c
--- /dev/null
+++ b/src/Nest/Search/Suggesters/PhraseSuggester/SmoothingModel/LinearInterpolationSmoothingModel.cs
@@ -0,0 +1,37 @@
+using Newtonsoft.Json;
+using System;
+
+namespace Nest
+{
+ [JsonObject]
+ [JsonConverter(typeof(ReadAsTypeJsonConverter))]
+ public interface ILinearInterpolationSmoothingModel : ISmoothingModel
+ {
+ [JsonProperty("trigram_lambda")]
+ double TrigramLambda { get; set; }
+ [JsonProperty("bigram_lambda")]
+ double BigramLambda { get; set; }
+ [JsonProperty("unigram_lambda")]
+ double UnigramLambda { get; set; }
+ }
+
+ public class LinearInterpolationSmoothingModel : SmoothingModelBase, ILinearInterpolationSmoothingModel
+ {
+ public double TrigramLambda { get; set; }
+ public double BigramLambda { get; set; }
+ public double UnigramLambda { get; set; }
+
+ internal override void WrapInContainer(ISmoothingModelContainer container) => container.LinearInterpolation = this;
+ }
+
+ public class LinearInterpolationSmoothingModelDescriptor : DescriptorBase, ILinearInterpolationSmoothingModel
+ {
+ double ILinearInterpolationSmoothingModel.TrigramLambda { get; set; }
+ double ILinearInterpolationSmoothingModel.UnigramLambda { get; set; }
+ double ILinearInterpolationSmoothingModel.BigramLambda { get; set; }
+
+ public LinearInterpolationSmoothingModelDescriptor TrigramLambda(double lambda) => Assign(a => a.TrigramLambda = lambda);
+ public LinearInterpolationSmoothingModelDescriptor UnigramLambda(double lambda) => Assign(a => a.UnigramLambda = lambda);
+ public LinearInterpolationSmoothingModelDescriptor BigramLambda(double lambda) => Assign(a => a.BigramLambda = lambda);
+ }
+}
diff --git a/src/Nest/Search/Suggesters/PhraseSuggester/SmoothingModel/SmoothingModelBase.cs b/src/Nest/Search/Suggesters/PhraseSuggester/SmoothingModel/SmoothingModelBase.cs
new file mode 100644
index 00000000000..2c517130bbd
--- /dev/null
+++ b/src/Nest/Search/Suggesters/PhraseSuggester/SmoothingModel/SmoothingModelBase.cs
@@ -0,0 +1,16 @@
+using Newtonsoft.Json;
+
+namespace Nest
+{
+ [JsonObject]
+ public interface ISmoothingModel {}
+
+ public abstract class SmoothingModelBase
+ {
+ public static implicit operator SmoothingModelContainer(SmoothingModelBase model) => model == null
+ ? null
+ : new SmoothingModelContainer(model);
+
+ internal abstract void WrapInContainer(ISmoothingModelContainer container);
+ }
+}
diff --git a/src/Nest/Search/Suggesters/PhraseSuggester/SmoothingModel/SmoothingModelContainer.cs b/src/Nest/Search/Suggesters/PhraseSuggester/SmoothingModel/SmoothingModelContainer.cs
new file mode 100644
index 00000000000..ef79e8b9eeb
--- /dev/null
+++ b/src/Nest/Search/Suggesters/PhraseSuggester/SmoothingModel/SmoothingModelContainer.cs
@@ -0,0 +1,49 @@
+using System;
+using Newtonsoft.Json;
+
+namespace Nest
+{
+ [JsonObject(MemberSerialization.OptIn)]
+ [JsonConverter(typeof(ReserializeJsonConverter))]
+ public interface ISmoothingModelContainer
+ {
+ [JsonProperty("stupid_backoff")]
+ IStupidBackoffSmoothingModel StupidBackoff { get; set; }
+
+ [JsonProperty("laplace")]
+ ILaplaceSmoothingModel Laplace { get; set; }
+
+ [JsonProperty("linear_interpolation")]
+ ILinearInterpolationSmoothingModel LinearInterpolation { get; set; }
+ }
+
+ [JsonObject(MemberSerialization.OptIn)]
+ public class SmoothingModelContainer : ISmoothingModelContainer, IDescriptor
+ {
+ internal SmoothingModelContainer() {}
+
+ public SmoothingModelContainer(SmoothingModelBase model)
+ {
+ model.ThrowIfNull(nameof(model));
+ model.WrapInContainer(this);
+ }
+
+ IStupidBackoffSmoothingModel ISmoothingModelContainer.StupidBackoff { get; set; }
+ ILaplaceSmoothingModel ISmoothingModelContainer.Laplace { get; set; }
+ ILinearInterpolationSmoothingModel ISmoothingModelContainer.LinearInterpolation { get; set; }
+ }
+
+ public class SmoothingModelContainerDescriptor : SmoothingModelContainer
+ {
+ private SmoothingModelContainerDescriptor Assign(Action assigner) => Fluent.Assign(this, assigner);
+
+ public SmoothingModelContainerDescriptor StupidBackoff(Func selector) =>
+ Assign(a => a.StupidBackoff = selector?.InvokeOrDefault(new StupidBackoffSmoothingModelDescriptor()));
+
+ public SmoothingModelContainerDescriptor LinearInterpolation(Func selector) =>
+ Assign(a => a.LinearInterpolation = selector?.InvokeOrDefault(new LinearInterpolationSmoothingModelDescriptor()));
+
+ public SmoothingModelContainerDescriptor Laplace(Func selector) =>
+ Assign(a => a.Laplace = selector?.InvokeOrDefault(new LaplaceSmoothingModelDescriptor()));
+ }
+}
diff --git a/src/Nest/Search/Suggesters/PhraseSuggester/SmoothingModel/StupidBackoffSmoothingModel.cs b/src/Nest/Search/Suggesters/PhraseSuggester/SmoothingModel/StupidBackoffSmoothingModel.cs
new file mode 100644
index 00000000000..cdb5cdfe58d
--- /dev/null
+++ b/src/Nest/Search/Suggesters/PhraseSuggester/SmoothingModel/StupidBackoffSmoothingModel.cs
@@ -0,0 +1,27 @@
+using Newtonsoft.Json;
+using System;
+
+namespace Nest
+{
+ [JsonObject]
+ [JsonConverter(typeof(ReadAsTypeJsonConverter))]
+ public interface IStupidBackoffSmoothingModel : ISmoothingModel
+ {
+ [JsonProperty("discount")]
+ double? Discount { get; set; }
+ }
+
+ public class StupidBackoffSmoothingModel : SmoothingModelBase, IStupidBackoffSmoothingModel
+ {
+ public double? Discount { get; set; }
+
+ internal override void WrapInContainer(ISmoothingModelContainer container) => container.StupidBackoff = this;
+ }
+
+ public class StupidBackoffSmoothingModelDescriptor : DescriptorBase, IStupidBackoffSmoothingModel
+ {
+ double? IStupidBackoffSmoothingModel.Discount{ get; set; }
+
+ public StupidBackoffSmoothingModelDescriptor Discount(double? discount) => Assign(a => a.Discount = discount);
+ }
+}
diff --git a/src/Tests/CodeStandards/Descriptors.doc.cs b/src/Tests/CodeStandards/Descriptors.doc.cs
index 405d67490b3..7c985a23de8 100644
--- a/src/Tests/CodeStandards/Descriptors.doc.cs
+++ b/src/Tests/CodeStandards/Descriptors.doc.cs
@@ -45,6 +45,7 @@ where t.IsClass() && typeof(IDescriptor).IsAssignableFrom(t)
{ typeof(TriggerDescriptor), typeof(TriggerContainer) },
{ typeof(TransformDescriptor), typeof(TransformContainer) },
{ typeof(InputDescriptor), typeof(InputContainer) },
+ { typeof(SmoothingModelContainerDescriptor), typeof(SmoothingModelContainer) },
{ typeof(FluentDictionary<,>), typeof(FluentDictionary<,>) }
};