From db0b239104f862fc85151a6a71708daffd7523f2 Mon Sep 17 00:00:00 2001 From: Jay Aries Flores Date: Sun, 15 Feb 2026 04:13:29 +0800 Subject: [PATCH 1/3] Add runtimeMappings and fields methods to SearchParameters --- src/Search/SearchParameters.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/Search/SearchParameters.php b/src/Search/SearchParameters.php index eea5e40..fca9676 100644 --- a/src/Search/SearchParameters.php +++ b/src/Search/SearchParameters.php @@ -116,6 +116,18 @@ public function scriptFields(array $scriptFields): self return $this; } + public function runtimeMappings(array $runtimeFields): self + { + $this->params['body']['runtime_mappings'] = $runtimeFields; + return $this; + } + + public function fields(array $fields): self + { + $this->params['body']['fields'] = $fields; + return $this; + } + public function searchType(string $searchType): self { $this->params['search_type'] = $searchType; From a35cf00124b48ae9ce3fd90301cad6d8d139275a Mon Sep 17 00:00:00 2001 From: Jay Aries Flores Date: Sun, 15 Feb 2026 04:19:24 +0800 Subject: [PATCH 2/3] Add tests for runtimeMappings and fields methods in SearchParameters --- tests/Unit/Search/SearchParametersTest.php | 46 ++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/tests/Unit/Search/SearchParametersTest.php b/tests/Unit/Search/SearchParametersTest.php index b682994..950b797 100644 --- a/tests/Unit/Search/SearchParametersTest.php +++ b/tests/Unit/Search/SearchParametersTest.php @@ -314,6 +314,41 @@ public function test_array_casting_with_script_fields(): void ], $searchParameters->toArray()); } + public function test_array_casting_with_runtime_mappings(): void + { + $searchParameters = (new SearchParameters())->runtimeMappings([ + 'day_of_week' => [ + 'type' => 'long', + 'script' => [ + 'lang' => 'painless', + 'source' => 'doc[params.field] * params.multiplier', + 'params' => [ + 'field' => 'my_field', + 'multiplier' => 2, + ], + ], + ], + ]); + + $this->assertEquals([ + 'body' => [ + 'runtime_mappings' => [ + 'day_of_week' => [ + 'type' => 'long', + 'script' => [ + 'lang' => 'painless', + 'source' => 'doc[params.field] * params.multiplier', + 'params' => [ + 'field' => 'my_field', + 'multiplier' => 2, + ], + ], + ], + ], + ], + ], $searchParameters->toArray()); + } + public function test_array_casting_with_min_score(): void { $searchParameters = (new SearchParameters())->minScore(0.5); @@ -325,6 +360,17 @@ public function test_array_casting_with_min_score(): void ], $searchParameters->toArray()); } + public function test_array_casting_with_fields(): void + { + $searchParameters = (new SearchParameters())->fields(['my_field']); + + $this->assertEquals([ + 'body' => [ + 'fields' => ['my_field'], + ], + ], $searchParameters->toArray()); + } + public function test_array_casting_with_search_type(): void { $searchParameters = (new SearchParameters())->searchType('query_then_fetch'); From 22d1a25bf8af7994b8fef31e32190f7fa3aa7df7 Mon Sep 17 00:00:00 2001 From: Jay Aries Flores Date: Tue, 17 Feb 2026 01:29:59 +0800 Subject: [PATCH 3/3] Update README with runtimeMappings example in SearchParameters --- README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/README.md b/README.md index 723f753..560857c 100644 --- a/README.md +++ b/README.md @@ -436,6 +436,21 @@ $searchParameters->scriptFields([ ], ]); +// runtime mappings +$searchParameters->runtimeMappings([ + 'day_of_week' => [ + 'type' => 'long', + 'script' => [ + 'lang' => 'painless', + 'source' => 'doc[params.field] * params.multiplier', + 'params' => [ + 'field' => 'my_field', + 'multiplier' => 2, + ], + ], + ], +]); + // boost indices $searchParameters->indicesBoost([ ['my-alias' => 1.4],