<commit_before>[role="xpack"]
[[condition-compare]]
=== Compare condition

Use the `compare` condition to perform a simple comparison against a value in 
the watch payload. You can use the `compare` condition without enabling 
dynamic scripting. 

[[condition-compare-operators]]
. Supported comparison operators
[options="header"]
|======
| Name      | Description

| `eq`      | Returns `true` when the resolved value equals the given one (applies
              to numeric, string, list, object and values)

| `not_eq`  | Returns `true` when the resolved value does not equal the given one
              (applies to numeric, string, list, object and null values)

| `gt`      | Returns `true` when the resolved value is greater than the given
              one (applies to numeric and string values)

| `gte`     | Returns `true` when the resolved value is greater/equal than/to the
              given one (applies to numeric and string values)

| `lt`      | Returns `true` when the resolved value is less than the given one
              (applies to numeric and string values)

| `lte`     | Returns `true` when the resolved value is less/equal than/to the
              given one (applies to numeric and string values)
|======

==== Using a compare condition

To use the `compare` condition, you specify the value in the execution context
that you want to evaluate, a <<condition-compare-operators,comparison operator>>, 
and the value you want to compare against. For example, the following `compare` 
condition returns `true` if the number of the total hits in the
<<input-search,search result>> is greater than or equal to 5:

[source,js]
--------------------------------------------------
{
  "condition" : {
    "compare" : {
      "ctx.payload.hits.total" : { <1>
        "gte" : 5 <2>
      }
    }
  }
}
--------------------------------------------------
// NOTCONSOLE
<1> Use dot notation to reference a value in the execution context.
<2> Specify a comparison operator and the value you want to compare against.
    
[[compare-condition-date-math]]    
When comparing dates and times, you can use date math expressions
of the form `<{expression}>`. For example, the following expression returns 
`true` if the watch was executed within the last five minutes:

[source,js]
--------------------------------------------------
{
  "condition" : {
    "compare" : {
      "ctx.execution_time" : {
        "gte" : "<{now-5m}>"
      }
    }
  }
}
--------------------------------------------------
// NOTCONSOLE

You can also compare two values in the execution context by specifying the 
compared value as a path of the form of `{{path}}`. For example, the following 
condition compares the `ctx.payload.aggregations.status.buckets.error.doc_count`
to the `ctx.payload.aggregations.handled.buckets.true.doc_count`:

[source,js]
--------------------------------------------------
{
  "condition" : {
    "compare" : {
      "ctx.payload.aggregations.status.buckets.error.doc_count" : {
        "not_eq" : "{{ctx.payload.aggregations.handled.buckets.true.doc_count}}"
      }
    }
  }
}
--------------------------------------------------
// NOTCONSOLE

==== Accessing values in the execution context

You use "dot-notation" to access values in the execution context. Values loaded 
into the execution context by the input are prefixed by `ctx.payload`. 

You can reference entries in arrays using their zero-based array indices.
For example, to access the third element of the `ctx.payload.hits.hits`
array, use `ctx.payload.hits.hits.2`.

[options="header"]
|======
| Name                         | Description
| `ctx.watch_id`               | The id of the watch that is currently executing.
| `ctx.execution_time`         | The time execution of this watch started.
| `ctx.trigger.triggered_time` | The time this watch was triggered.
| `ctx.trigger.scheduled_time` | The time this watch was supposed to be triggered.
| `ctx.metadata.*`             | Any metadata associated with the watch.
| `ctx.payload.*`              | The payload data loaded by the watch's input.
|======
<commit_msg>[DOCS] Fixes missing link title (#47481)<commit_after>[role="xpack"]
[[condition-compare]]
=== Compare condition

Use the `compare` condition to perform a simple comparison against a value in 
the watch payload. You can use the `compare` condition without enabling 
dynamic scripting. 

[[condition-compare-operators]]
.Supported comparison operators
[options="header"]
|======
| Name      | Description

| `eq`      | Returns `true` when the resolved value equals the given one (applies
              to numeric, string, list, object and values)

| `not_eq`  | Returns `true` when the resolved value does not equal the given one
              (applies to numeric, string, list, object and null values)

| `gt`      | Returns `true` when the resolved value is greater than the given
              one (applies to numeric and string values)

| `gte`     | Returns `true` when the resolved value is greater/equal than/to the
              given one (applies to numeric and string values)

| `lt`      | Returns `true` when the resolved value is less than the given one
              (applies to numeric and string values)

| `lte`     | Returns `true` when the resolved value is less/equal than/to the
              given one (applies to numeric and string values)
|======

==== Using a compare condition

To use the `compare` condition, you specify the value in the execution context
that you want to evaluate, a <<condition-compare-operators,comparison operator>>, 
and the value you want to compare against. For example, the following `compare` 
condition returns `true` if the number of the total hits in the
<<input-search,search result>> is greater than or equal to 5:

[source,js]
--------------------------------------------------
{
  "condition" : {
    "compare" : {
      "ctx.payload.hits.total" : { <1>
        "gte" : 5 <2>
      }
    }
  }
}
--------------------------------------------------
// NOTCONSOLE
<1> Use dot notation to reference a value in the execution context.
<2> Specify a comparison operator and the value you want to compare against.
    
[[compare-condition-date-math]]    
When comparing dates and times, you can use date math expressions
of the form `<{expression}>`. For example, the following expression returns 
`true` if the watch was executed within the last five minutes:

[source,js]
--------------------------------------------------
{
  "condition" : {
    "compare" : {
      "ctx.execution_time" : {
        "gte" : "<{now-5m}>"
      }
    }
  }
}
--------------------------------------------------
// NOTCONSOLE

You can also compare two values in the execution context by specifying the 
compared value as a path of the form of `{{path}}`. For example, the following 
condition compares the `ctx.payload.aggregations.status.buckets.error.doc_count`
to the `ctx.payload.aggregations.handled.buckets.true.doc_count`:

[source,js]
--------------------------------------------------
{
  "condition" : {
    "compare" : {
      "ctx.payload.aggregations.status.buckets.error.doc_count" : {
        "not_eq" : "{{ctx.payload.aggregations.handled.buckets.true.doc_count}}"
      }
    }
  }
}
--------------------------------------------------
// NOTCONSOLE

==== Accessing values in the execution context

You use "dot-notation" to access values in the execution context. Values loaded 
into the execution context by the input are prefixed by `ctx.payload`. 

You can reference entries in arrays using their zero-based array indices.
For example, to access the third element of the `ctx.payload.hits.hits`
array, use `ctx.payload.hits.hits.2`.

[options="header"]
|======
| Name                         | Description
| `ctx.watch_id`               | The id of the watch that is currently executing.
| `ctx.execution_time`         | The time execution of this watch started.
| `ctx.trigger.triggered_time` | The time this watch was triggered.
| `ctx.trigger.scheduled_time` | The time this watch was supposed to be triggered.
| `ctx.metadata.*`             | Any metadata associated with the watch.
| `ctx.payload.*`              | The payload data loaded by the watch's input.
|======

{'fraction_non_alphanumeric': 0.1675577156743621, 'fraction_numerical': 0.002551640340218712, 'mean_word_length': 2.3692181743757676, 'pattern_counts': {'":': 0, '<': 23, '<?xml version=': 0, '>': 23, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6980692', 'n_tokens_mistral': 2222, 'n_tokens_neox': 2149, 'n_words': 875}