diff --git a/src/Nest/IndexModules/IndexSettings/Settings/IndexSettingsConverter.cs b/src/Nest/IndexModules/IndexSettings/Settings/IndexSettingsConverter.cs
index 95fe0a27d58..1cc96746492 100644
--- a/src/Nest/IndexModules/IndexSettings/Settings/IndexSettingsConverter.cs
+++ b/src/Nest/IndexModules/IndexSettings/Settings/IndexSettingsConverter.cs
@@ -41,13 +41,13 @@ public override void WriteJson(JsonWriter writer, object value, JsonSerializer s
d[UpdatableIndexSettings.TranslogFlushThresholdSize] = flush?.ThresholdSize;
d[UpdatableIndexSettings.TranslogFlushThresholdPeriod] = flush?.ThresholdPeriod;
- d[UpdatableIndexSettings.MergePolicyExpungeDeletesAllowed] = ds.Merge?.Policy.ExpungeDeletesAllowed;
- d[UpdatableIndexSettings.MergePolicyFloorSegment] = ds.Merge?.Policy.FloorSegment;
- d[UpdatableIndexSettings.MergePolicyMaxMergeAtOnce] = ds.Merge?.Policy.MaxMergeAtOnce;
- d[UpdatableIndexSettings.MergePolicyMaxMergeAtOnceExplicit] = ds.Merge?.Policy.MaxMergeAtOnceExplicit;
- d[UpdatableIndexSettings.MergePolicyMaxMergedSegment] = ds.Merge?.Policy.MaxMergedSegment;
- d[UpdatableIndexSettings.MergePolicySegmentsPerTier] = ds.Merge?.Policy.SegmentsPerTier;
- d[UpdatableIndexSettings.MergePolicyReclaimDeletesWeight] = ds.Merge?.Policy.ReclaimDeletesWeight;
+ d[UpdatableIndexSettings.MergePolicyExpungeDeletesAllowed] = ds.Merge?.Policy?.ExpungeDeletesAllowed;
+ d[UpdatableIndexSettings.MergePolicyFloorSegment] = ds.Merge?.Policy?.FloorSegment;
+ d[UpdatableIndexSettings.MergePolicyMaxMergeAtOnce] = ds.Merge?.Policy?.MaxMergeAtOnce;
+ d[UpdatableIndexSettings.MergePolicyMaxMergeAtOnceExplicit] = ds.Merge?.Policy?.MaxMergeAtOnceExplicit;
+ d[UpdatableIndexSettings.MergePolicyMaxMergedSegment] = ds.Merge?.Policy?.MaxMergedSegment;
+ d[UpdatableIndexSettings.MergePolicySegmentsPerTier] = ds.Merge?.Policy?.SegmentsPerTier;
+ d[UpdatableIndexSettings.MergePolicyReclaimDeletesWeight] = ds.Merge?.Policy?.ReclaimDeletesWeight;
d[UpdatableIndexSettings.MergeSchedulerMaxThreadCount] = ds.Merge?.Scheduler?.MaxThreadCount;
d[UpdatableIndexSettings.MergeSchedulerAutoThrottle] = ds.Merge?.Scheduler?.AutoThrottle;
diff --git a/src/Tests/Reproduce/GithubIssue2690.cs b/src/Tests/Reproduce/GithubIssue2690.cs
new file mode 100644
index 00000000000..13832e37004
--- /dev/null
+++ b/src/Tests/Reproduce/GithubIssue2690.cs
@@ -0,0 +1,21 @@
+using FluentAssertions;
+using Tests.Framework;
+
+namespace Tests.Reproduce
+{
+ public class GithubIssue2690
+ {
+ [U] public void EmptyPolicyCausesNullReferenceException()
+ {
+ var client = TestClient.GetInMemoryClient();
+ var response = client.CreateIndex("foo", c => c
+ .Settings(s => s
+ .Merge(m => m
+ .Scheduler(sch => sch.MaxThreadCount(1))
+ )
+ )
+ );
+ response.IsValid.Should().BeTrue();
+ }
+ }
+}
diff --git a/src/Tests/Tests.csproj b/src/Tests/Tests.csproj
index 0dec1d2b732..f05f2fdb677 100644
--- a/src/Tests/Tests.csproj
+++ b/src/Tests/Tests.csproj
@@ -715,6 +715,7 @@
+