Loading

PromQL operators

These operators are based on the Prometheus operators. Refer to the Prometheus documentation for the full semantics, and note any Elasticsearch-specific differences called out per operator.

Binary operators that perform arithmetic between scalars and instant vectors.

Binary operators that filter instant vectors or, with the bool modifier, return 0 or 1.

Binary operators that combine two instant vectors by matching their label sets.

Operators that apply to a single instant vector or scalar.

Operators used inside instant vector selectors ({...}) to match series by label.

PromQL follows the same binary operator precedence as Prometheus. The following list orders operators from highest to lowest precedence; operators listed together share the same precedence level:

  1. ^
  2. *, /, %, atan2
  3. +, -
  4. ==, !=, <=, <, >=, >
  5. and, unless
  6. or

^ is right-associative; all other binary operators are left-associative. Use parentheses to override the default precedence.

Note

atan2, and, and unless are listed here for completeness, but are not evaluated yet in Elasticsearch. See Not yet supported and PromQL limitations.

When a binary operator is applied between two instant vectors, PromQL matches samples that have identical label sets (one-to-one matching). Prometheus provides modifiers that change which labels are considered (on(...) and ignoring(...)) and that enable many-to-one and one-to-many matching (group_left and group_right).

Elasticsearch does not support the on(...), ignoring(...), group_left, or group_right vector matching modifiers yet. Using them returns a client error (4xx). See PromQL limitations.

By default, a comparison operator between two instant vectors acts as a filter: samples that do not satisfy the comparison are dropped, and matching samples keep their original values. Appending the bool modifier changes this behavior so that the comparison returns 0 for false and 1 for true, and keeps every sample. The bool modifier is required when comparing two scalars.

Example

requests_total > bool 256
		

Prometheus documents aggregation operators (such as sum, avg, min, max, and count) on its operators page. In Elasticsearch PromQL, these are documented as aggregation functions.

The following Prometheus operators are not supported in Elasticsearch PromQL yet:

  • </
  • >/
  • and
  • atan2
  • unless