Skip to content

Commit 795478b

Browse files
committed
support predicate_token_filter elastic/elasticsearch#33431
1 parent 3e60dab commit 795478b

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

src/Nest/Analysis/TokenFilters/TokenFilters.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,10 @@ public TokenFiltersDescriptor Standard(string name, Func<StandardTokenFilterDesc
225225
public TokenFiltersDescriptor Stemmer(string name, Func<StemmerTokenFilterDescriptor, IStemmerTokenFilter> selector) =>
226226
Assign(name, selector?.Invoke(new StemmerTokenFilterDescriptor()));
227227

228+
/// <inheritdoc cref="IPredicateTokenFilter" />
229+
public TokenFiltersDescriptor Predicate(string name, Func<PredicateTokenFilterDescriptor, IPredicateTokenFilter> selector) =>
230+
Assign(name, selector?.Invoke(new PredicateTokenFilterDescriptor()));
231+
228232
/// <inheritdoc cref="IConditionTokenFilter" />
229233
public TokenFiltersDescriptor Condition(string name, Func<ConditionTokenFilterDescriptor, IConditionTokenFilter> selector) =>
230234
Assign(name, selector?.Invoke(new ConditionTokenFilterDescriptor()));

src/Tests/Tests/Analysis/TokenFilters/TokenFilterTests.cs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -584,6 +584,28 @@ public class StemmerTests : TokenFilterAssertionBase<StemmerTests>
584584
public override string Name => "stem";
585585
}
586586

587+
[SkipVersion("<6.5.0", "predicate token filter not available in earlier versions")]
588+
public class PredicateTests : TokenFilterAssertionBase<PredicateTests>
589+
{
590+
private readonly string _predicate = "token.getTerm().length() > 5";
591+
592+
public override FuncTokenFilters Fluent => (n, tf) => tf.Predicate(n, t => t.Script(_predicate));
593+
594+
public override ITokenFilter Initializer => new PredicateTokenFilter { Script = new InlineScript(_predicate) };
595+
596+
public override object Json => new
597+
{
598+
type = "predicate_token_filter",
599+
script = new
600+
{
601+
source = _predicate
602+
}
603+
};
604+
605+
public override string Name => "predicate";
606+
}
607+
608+
587609
public class StemmerOverrideTests : TokenFilterAssertionBase<StemmerOverrideTests>
588610
{
589611
public override FuncTokenFilters Fluent => (n, tf) => tf.StemmerOverride(n, t => t.RulesPath("analysis/custom_stems.txt"));

0 commit comments

Comments
 (0)