$rule e.g. ['match' => ['query' => 'my favorite food', 'max_gaps' => 0]] * or ['all_of' => ['intervals' => [...], 'max_gaps' => 0]]. */ public function __construct( private string $field, private array $rule, ) { if ($rule === []) { throw new \Spameri\ElasticQuery\Exception\InvalidArgumentException( 'Intervals query requires at least one rule.', ); } } public function key(): string { return 'intervals_' . $this->field; } /** * @return array>> */ public function toArray(): array { return [ 'intervals' => [ $this->field => $this->rule, ], ]; } }