Skip to content

Commit e15ec06

Browse files
committed
add MultiplexerMapping
1 parent f9637a8 commit e15ec06

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
using System.Collections;
2+
using System.Collections.Generic;
3+
using Newtonsoft.Json;
4+
5+
namespace Nest
6+
{
7+
/// <summary>
8+
/// A token filter of type multiplexer will emit multiple tokens at the same position, each version of the token having
9+
/// been run through a different filter. Identical output tokens at the same position will be removed.
10+
/// </summary>
11+
public interface IMultiplexerTokenFilter : ITokenFilter
12+
{
13+
[JsonProperty("filters")]
14+
IEnumerable<string> Filters { get; set; }
15+
16+
[JsonProperty("preserve_original")]
17+
bool? PreserveOriginal { get; set; }
18+
}
19+
public class MultiplexerTokenFilter : TokenFilterBase, IMultiplexerTokenFilter
20+
{
21+
internal const string TokenType = "multiplexer";
22+
public MultiplexerTokenFilter() : base(TokenType) { }
23+
24+
/// <inheritdoc cref="IMultiplexerTokenFilter.Filters"/>
25+
public IEnumerable<string> Filters { get; set; }
26+
27+
/// <inheritdoc cref="IMultiplexerTokenFilter.PreserveOriginal"/>
28+
public bool? PreserveOriginal { get; set; }
29+
30+
}
31+
///<inheritdoc cref="IMultiplexerTokenFilter"/>
32+
public class MultiplexerTokenFilterDescriptor
33+
: TokenFilterDescriptorBase<MultiplexerTokenFilterDescriptor, IMultiplexerTokenFilter>, IMultiplexerTokenFilter
34+
{
35+
protected override string Type => MultiplexerTokenFilter.TokenType;
36+
37+
IEnumerable<string> IMultiplexerTokenFilter.Filters { get; set; }
38+
bool? IMultiplexerTokenFilter.PreserveOriginal { get; set; }
39+
40+
/// <inheritdoc cref="IMultiplexerTokenFilter.Filters"/>
41+
public MultiplexerTokenFilterDescriptor Filters(IEnumerable<string> filters) => Assign(a => a.Filters = filters);
42+
43+
/// <inheritdoc cref="IMultiplexerTokenFilter.Filters"/>
44+
public MultiplexerTokenFilterDescriptor Filters(params string[] filters) => Assign(a => a.Filters = filters);
45+
46+
/// <inheritdoc cref="IMultiplexerTokenFilter.PreserveOriginal"/>
47+
public MultiplexerTokenFilterDescriptor PreserveOriginal(bool? preserve = true) => Assign(a => a.PreserveOriginal = preserve);
48+
}
49+
50+
}

0 commit comments

Comments
 (0)