Skip to content

Commit 1641cb6

Browse files
committed
Add support for default pipeline on index settings (#3530)
(cherry picked from commit 801522e)
1 parent ee01fd5 commit 1641cb6

File tree

5 files changed

+66
-44
lines changed

5 files changed

+66
-44
lines changed

src/Nest/IndexModules/IndexSettings/Settings/DynamicIndexSettings.cs

Lines changed: 49 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,13 @@ public interface IDynamicIndexSettings : IIsADictionary<string, object>
9797
/// delayed with this dynamic setting, which defaults to 1m.
9898
/// </summary>
9999
Time UnassignedNodeLeftDelayedTimeout { get; set; }
100+
101+
/// <summary>
102+
/// The default ingest node pipeline for this index. Index requests will fail if the default pipeline is set and
103+
/// the pipeline does not exist. The default may be overridden using the pipeline parameter.
104+
/// The special pipeline name _none indicates no ingest pipeline should be run.`
105+
/// </summary>
106+
string DefaultPipeline { get; set; }
100107
}
101108

102109
/// <inheritdoc />
@@ -108,37 +115,37 @@ public DynamicIndexSettings() { }
108115

109116
public DynamicIndexSettings(IDictionary<string, object> container) : base(container) { }
110117

111-
/// <inheritdoc />
118+
/// <inheritdoc cref="IDynamicIndexSettings.Analysis" />
112119
public IAnalysis Analysis { get; set; }
113120

114-
/// <inheritdoc />
121+
/// <inheritdoc cref="IDynamicIndexSettings.AutoExpandReplicas" />
115122
public AutoExpandReplicas AutoExpandReplicas { get; set; }
116123

117-
/// <inheritdoc />
124+
/// <inheritdoc cref="IDynamicIndexSettings.BlocksMetadata" />
118125
public bool? BlocksMetadata { get; set; }
119126

120-
/// <inheritdoc />
127+
/// <inheritdoc cref="IDynamicIndexSettings.BlocksRead" />
121128
public bool? BlocksRead { get; set; }
122129

123-
/// <inheritdoc />
130+
/// <inheritdoc cref="IDynamicIndexSettings.BlocksReadOnly" />
124131
public bool? BlocksReadOnly { get; set; }
125132

126-
/// <inheritdoc />
133+
/// <inheritdoc cref="IDynamicIndexSettings.BlocksWrite" />
127134
public bool? BlocksWrite { get; set; }
128135

129-
/// <inheritdoc />
136+
/// <inheritdoc cref="IDynamicIndexSettings.Merge" />
130137
public IMergeSettings Merge { get; set; }
131138

132-
/// <inheritdoc />
139+
/// <inheritdoc cref="IDynamicIndexSettings.NumberOfReplicas" />
133140
public int? NumberOfReplicas { get; set; }
134141

135-
/// <inheritdoc />
142+
/// <inheritdoc cref="IDynamicIndexSettings.Priority" />
136143
public int? Priority { get; set; }
137144

138-
/// <inheritdoc />
145+
/// <inheritdoc cref="IDynamicIndexSettings.RecoveryInitialShards" />
139146
public Union<int, RecoveryInitialShards> RecoveryInitialShards { get; set; }
140147

141-
/// <inheritdoc />
148+
/// <inheritdoc cref="IDynamicIndexSettings.RefreshInterval" />
142149
public Time RefreshInterval
143150
{
144151
get => _refreshInterval;
@@ -149,31 +156,32 @@ public Time RefreshInterval
149156
}
150157
}
151158

152-
/// <inheritdoc />
159+
/// <inheritdoc cref="IDynamicIndexSettings.RequestsCacheEnabled" />
153160
public bool? RequestsCacheEnabled { get; set; }
154161

155-
/// <inheritdoc />
162+
/// <inheritdoc cref="IDynamicIndexSettings.RoutingAllocationTotalShardsPerNode" />
156163
public int? RoutingAllocationTotalShardsPerNode { get; set; }
157164

158-
/// <inheritdoc />
165+
/// <inheritdoc cref="IDynamicIndexSettings.Similarity" />
159166
public ISimilarities Similarity { get; set; }
160167

161-
/// <inheritdoc />
168+
/// <inheritdoc cref="IDynamicIndexSettings.SlowLog" />
162169
public ISlowLog SlowLog { get; set; }
163170

164-
/// <inheritdoc />
171+
/// <inheritdoc cref="IDynamicIndexSettings.Translog" />
165172
public ITranslogSettings Translog { get; set; }
166173

167-
/// <inheritdoc />
174+
/// <inheritdoc cref="IDynamicIndexSettings.UnassignedNodeLeftDelayedTimeout" />
168175
public Time UnassignedNodeLeftDelayedTimeout { get; set; }
169176

170-
/// <summary>
171-
/// Add any setting to the index
172-
/// </summary>
177+
/// <inheritdoc cref="IDynamicIndexSettings.DefaultPipeline" />
178+
public string DefaultPipeline { get; set; }
179+
180+
/// <summary> Add any setting to the index </summary>
173181
public void Add(string setting, object value) => BackingDictionary[setting] = value;
174182
}
175183

176-
/// <inheritdoc cref="DynamicIndexSettings" />
184+
/// <inheritdoc cref="IDynamicIndexSettings" />
177185
public class DynamicIndexSettingsDescriptor : DynamicIndexSettingsDescriptorBase<DynamicIndexSettingsDescriptor, DynamicIndexSettings>
178186
{
179187
public DynamicIndexSettingsDescriptor() : base(new DynamicIndexSettings()) { }
@@ -194,64 +202,67 @@ public TDescriptor Setting(string setting, object value)
194202
return (TDescriptor)this;
195203
}
196204

197-
/// <inheritdoc cref="DynamicIndexSettings.NumberOfReplicas" />
205+
/// <inheritdoc cref="IDynamicIndexSettings.NumberOfReplicas" />
198206
public TDescriptor NumberOfReplicas(int? numberOfReplicas) => Assign(a => a.NumberOfReplicas = numberOfReplicas);
199207

200-
/// <inheritdoc cref="DynamicIndexSettings.AutoExpandReplicas" />
208+
/// <inheritdoc cref="IDynamicIndexSettings.AutoExpandReplicas" />
201209
public TDescriptor AutoExpandReplicas(AutoExpandReplicas autoExpandReplicas) => Assign(a => a.AutoExpandReplicas = autoExpandReplicas);
202210

203-
/// <inheritdoc cref="DynamicIndexSettings.BlocksMetadata" />
211+
/// <inheritdoc cref="IDynamicIndexSettings.DefaultPipeline" />
212+
public TDescriptor DefaultPipeline(string defaultPipeline) => Assign(a => a.DefaultPipeline = defaultPipeline);
213+
214+
/// <inheritdoc cref="IDynamicIndexSettings.BlocksMetadata" />
204215
public TDescriptor BlocksMetadata(bool? blocksMetadata = true) => Assign(a => a.BlocksMetadata = blocksMetadata);
205216

206-
/// <inheritdoc cref="DynamicIndexSettings.BlocksRead" />
217+
/// <inheritdoc cref="IDynamicIndexSettings.BlocksRead" />
207218
public TDescriptor BlocksRead(bool? blocksRead = true) => Assign(a => a.BlocksRead = blocksRead);
208219

209-
/// <inheritdoc cref="DynamicIndexSettings.BlocksReadOnly" />
220+
/// <inheritdoc cref="IDynamicIndexSettings.BlocksReadOnly" />
210221
public TDescriptor BlocksReadOnly(bool? blocksReadOnly = true) => Assign(a => a.BlocksReadOnly = blocksReadOnly);
211222

212-
/// <inheritdoc cref="DynamicIndexSettings.BlocksWrite" />
223+
/// <inheritdoc cref="IDynamicIndexSettings.BlocksWrite" />
213224
public TDescriptor BlocksWrite(bool? blocksWrite = true) => Assign(a => a.BlocksWrite = blocksWrite);
214225

215-
/// <inheritdoc cref="DynamicIndexSettings.Priority" />
226+
/// <inheritdoc cref="IDynamicIndexSettings.Priority" />
216227
public TDescriptor Priority(int? priority) => Assign(a => a.Priority = priority);
217228

218-
/// <inheritdoc cref="DynamicIndexSettings.Merge" />
229+
/// <inheritdoc cref="IDynamicIndexSettings.Merge" />
219230
public TDescriptor Merge(Func<MergeSettingsDescriptor, IMergeSettings> merge) =>
220231
Assign(a => a.Merge = merge?.Invoke(new MergeSettingsDescriptor()));
221232

222-
/// <inheritdoc cref="DynamicIndexSettings.RecoveryInitialShards" />
233+
/// <inheritdoc cref="IDynamicIndexSettings.RecoveryInitialShards" />
223234
public TDescriptor RecoveryInitialShards(Union<int, RecoveryInitialShards> initialShards) =>
224235
Assign(a => a.RecoveryInitialShards = initialShards);
225236

226-
/// <inheritdoc cref="DynamicIndexSettings.RequestsCacheEnabled" />
237+
/// <inheritdoc cref="IDynamicIndexSettings.RequestsCacheEnabled" />
227238
public TDescriptor RequestsCacheEnabled(bool? enable = true) =>
228239
Assign(a => a.RequestsCacheEnabled = enable);
229240

230-
/// <inheritdoc cref="DynamicIndexSettings.RefreshInterval" />
241+
/// <inheritdoc cref="IDynamicIndexSettings.RefreshInterval" />
231242
public TDescriptor RefreshInterval(Time time) => Assign(a => a.RefreshInterval = time);
232243

233244
// TODO: align name for 7.x
234-
/// <inheritdoc cref="DynamicIndexSettings.RoutingAllocationTotalShardsPerNode" />
245+
/// <inheritdoc cref="IDynamicIndexSettings.RoutingAllocationTotalShardsPerNode" />
235246
public TDescriptor TotalShardsPerNode(int? totalShardsPerNode) =>
236247
Assign(a => a.RoutingAllocationTotalShardsPerNode = totalShardsPerNode);
237248

238-
/// <inheritdoc cref="DynamicIndexSettings.SlowLog" />
249+
/// <inheritdoc cref="IDynamicIndexSettings.SlowLog" />
239250
public TDescriptor SlowLog(Func<SlowLogDescriptor, ISlowLog> slowLogSelector) =>
240251
Assign(a => a.SlowLog = slowLogSelector?.Invoke(new SlowLogDescriptor()));
241252

242-
/// <inheritdoc cref="DynamicIndexSettings.Translog" />
253+
/// <inheritdoc cref="IDynamicIndexSettings.Translog" />
243254
public TDescriptor Translog(Func<TranslogSettingsDescriptor, ITranslogSettings> translogSelector) =>
244255
Assign(a => a.Translog = translogSelector?.Invoke(new TranslogSettingsDescriptor()));
245256

246-
/// <inheritdoc cref="DynamicIndexSettings.UnassignedNodeLeftDelayedTimeout" />
257+
/// <inheritdoc cref="IDynamicIndexSettings.UnassignedNodeLeftDelayedTimeout" />
247258
public TDescriptor UnassignedNodeLeftDelayedTimeout(Time time) =>
248259
Assign(a => a.UnassignedNodeLeftDelayedTimeout = time);
249260

250-
/// <inheritdoc cref="DynamicIndexSettings.Analysis" />
261+
/// <inheritdoc cref="IDynamicIndexSettings.Analysis" />
251262
public TDescriptor Analysis(Func<AnalysisDescriptor, IAnalysis> selector) =>
252263
Assign(a => a.Analysis = selector?.Invoke(new AnalysisDescriptor()));
253264

254-
/// <inheritdoc cref="DynamicIndexSettings.Similarity" />
265+
/// <inheritdoc cref="IDynamicIndexSettings.Similarity" />
255266
public TDescriptor Similarity(Func<SimilaritiesDescriptor, IPromise<ISimilarities>> selector) =>
256267
Assign(a => a.Similarity = selector?.Invoke(new SimilaritiesDescriptor())?.Value);
257268
}

src/Nest/IndexModules/IndexSettings/Settings/IndexSettings.cs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ public interface IIndexSettings : IDynamicIndexSettings
4444
/// https://www.elastic.co/guide/en/elasticsearch/reference/6.0/index-modules-index-sorting.html
4545
/// </summary>
4646
ISortingSettings Sorting { get; set; }
47+
48+
4749
}
4850

4951
/// <inheritdoc cref="IIndexSettings" />
@@ -53,22 +55,22 @@ public IndexSettings() { }
5355

5456
public IndexSettings(IDictionary<string, object> container) : base(container) { }
5557

56-
/// <inheritdoc />
58+
/// <inheritdoc cref="IIndexSettings.FileSystemStorageImplementation" />
5759
public FileSystemStorageImplementation? FileSystemStorageImplementation { get; set; }
5860

59-
/// <inheritdoc />
61+
/// <inheritdoc cref="IIndexSettings.NumberOfRoutingShards" />
6062
public int? NumberOfRoutingShards { get; set; }
6163

62-
/// <inheritdoc />
64+
/// <inheritdoc cref="IIndexSettings.NumberOfShards" />
6365
public int? NumberOfShards { get; set; }
6466

65-
/// <inheritdoc />
67+
/// <inheritdoc cref="IIndexSettings.Queries" />
6668
public IQueriesSettings Queries { get; set; }
6769

68-
/// <inheritdoc />
70+
/// <inheritdoc cref="IIndexSettings.RoutingPartitionSize" />
6971
public int? RoutingPartitionSize { get; set; }
7072

71-
/// <inheritdoc />
73+
/// <inheritdoc cref="IIndexSettings.Sorting" />
7274
public ISortingSettings Sorting { get; set; }
7375
}
7476

src/Nest/IndexModules/IndexSettings/Settings/IndexSettingsConverter.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ void Set(string knownKey, object newValue)
3434

3535
Set(NumberOfReplicas, ds.NumberOfReplicas);
3636
Set(RefreshInterval, ds.RefreshInterval);
37+
Set(DefaultPipeline, ds.DefaultPipeline);
3738
Set(BlocksReadOnly, ds.BlocksReadOnly);
3839
Set(BlocksRead, ds.BlocksRead);
3940
Set(BlocksWrite, ds.BlocksWrite);
@@ -155,6 +156,8 @@ private static void SetKnownIndexSettings(JsonReader reader, JsonSerializer seri
155156
Set<bool?>(s, settings, BlocksWrite, v => s.BlocksWrite = v);
156157
Set<bool?>(s, settings, BlocksMetadata, v => s.BlocksMetadata = v);
157158
Set<int?>(s, settings, Priority, v => s.Priority = v);
159+
Set<string>(s, settings, DefaultPipeline, v => s.DefaultPipeline = v);
160+
158161
Set<Union<int, RecoveryInitialShards>>(s, settings, UpdatableIndexSettings.RecoveryInitialShards,
159162
v => s.RecoveryInitialShards = v, serializer);
160163
Set<bool?>(s, settings, RequestsCacheEnable, v => s.RequestsCacheEnabled = v);

src/Nest/IndexModules/IndexSettings/Settings/UpdatableIndexSettings.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ public static class UpdatableIndexSettings
3333
public const string RecoveryInitialShards = "index.recovery.initial_shards";
3434
public const string RefreshInterval = "index.refresh_interval";
3535

36+
public const string DefaultPipeline = "index.default_pipeline";
37+
3638
public const string RequestsCacheEnable = "index.requests.cache.enable";
3739
public const string RoutingAllocationDisableAllication = "index.routing.allocation.disable_allocation";
3840
public const string RoutingAllocationDisableNewAllocation = "index.routing.allocation.disable_new_allocation";

src/Tests/Tests/IndexModules/IndexSettings/Settings/TypedIndexSettings.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections.Generic;
33
using Nest;
4+
using Tests.Core.ManagedElasticsearch.NodeSeeders;
45
using Tests.Framework;
56

67
namespace Tests.IndexModules.IndexSettings.Settings
@@ -20,6 +21,7 @@ public class Usage : PromiseUsageTestBase<IIndexSettings, IndexSettingsDescripto
2021
{ "enums", "offsets" },
2122
{ "index.number_of_replicas", 2 },
2223
{ "index.auto_expand_replicas", "1-3" },
24+
{ "index.default_pipeline", "a-default-pipeline" },
2325
{ "index.refresh_interval", -1 },
2426
{ "index.blocks.read_only", true },
2527
{ "index.blocks.read", true },
@@ -45,6 +47,7 @@ public class Usage : PromiseUsageTestBase<IIndexSettings, IndexSettingsDescripto
4547
.Setting("enums", IndexOptions.Offsets)
4648
.NumberOfShards(1)
4749
.NumberOfReplicas(2)
50+
.DefaultPipeline("a-default-pipeline")
4851
.AutoExpandReplicas("1-3")
4952
.BlocksMetadata()
5053
.BlocksRead()
@@ -72,6 +75,7 @@ public class Usage : PromiseUsageTestBase<IIndexSettings, IndexSettingsDescripto
7275
{
7376
NumberOfShards = 1,
7477
NumberOfReplicas = 2,
78+
DefaultPipeline = "a-default-pipeline",
7579
AutoExpandReplicas = "1-3",
7680
BlocksMetadata = true,
7781
BlocksRead = true,

0 commit comments

Comments
 (0)