Skip to content

Commit 3ea2abd

Browse files
authored
Merge pull request #1997 from aleho/master
Support priority flag for index templates
2 parents 62d3f82 + 3410b4e commit 3ea2abd

8 files changed

Lines changed: 32 additions & 4 deletions

File tree

src/Configuration/IndexConfigInterface.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
* mapping: TMapping,
3232
* model: mixed,
3333
* index_patterns?: list<non-empty-string>,
34+
* priority?: int,
3435
* }
3536
* @phpstan-type TElasticConfig = array{
3637
* date_detection?: bool,

src/Configuration/IndexTemplateConfig.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,11 @@ class IndexTemplateConfig implements IndexConfigInterface
3131
*/
3232
private array $indexPatterns;
3333

34+
/**
35+
* The priority of the index template.
36+
*/
37+
private int $priority;
38+
3439
/**
3540
* Constructor expects an array as generated by the Container Configuration builder.
3641
*
@@ -43,6 +48,7 @@ public function __construct(array $config)
4348
$this->settings = $config['settings'] ?? [];
4449
$this->config = $config['config'];
4550
$this->mapping = $config['mapping'];
51+
$this->priority = $config['priority'];
4652

4753
if (!isset($config['index_patterns']) || !\is_array($config['index_patterns']) || \count($config['index_patterns']) < 1) {
4854
throw new \InvalidArgumentException('Index patterns value(s) must be set');
@@ -60,4 +66,12 @@ public function getIndexPatterns(): array
6066
{
6167
return $this->indexPatterns;
6268
}
69+
70+
/**
71+
* Gets index template priority.
72+
*/
73+
public function getPriority(): int
74+
{
75+
return $this->priority;
76+
}
6377
}

src/DependencyInjection/Configuration.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -486,6 +486,7 @@ private function addIndexTemplatesSection(ArrayNodeDefinition $rootNode): void
486486
->prototype('scalar')
487487
->end()
488488
->end()
489+
->integerNode('priority')->defaultValue(0)->end()
489490
->scalarNode('client')->end()
490491
->variableNode('settings')->defaultValue([])->end()
491492
->booleanNode('date_detection')->end()

src/DependencyInjection/FOSElasticaExtension.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,7 @@ private function loadIndexTemplates(array $indexTemplates, ContainerBuilder $con
337337
'name' => $name,
338338
'settings' => $indexTemplate['settings'],
339339
'index_patterns' => $indexTemplate['index_patterns'],
340+
'priority' => $indexTemplate['priority'],
340341
];
341342

342343
$this->loadIndexConfig((array) $indexTemplate, $this->indexTemplateConfigs[$name]);

src/Index/MappingBuilder.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public function buildIndexMapping(IndexConfigInterface $indexConfig): array
5555
/**
5656
* Builds mappings for an entire index template.
5757
*
58-
* @return array{index_patterns: list<non-empty-string>, mappings?: TMapping, settings?: TSettings, template?: array{mappings?: TMapping, settings?: TSettings}}
58+
* @return array{index_patterns: list<non-empty-string>, mappings?: TMapping, settings?: TSettings, template?: array{mappings?: TMapping, settings?: TSettings}, priority: int}
5959
*/
6060
public function buildIndexTemplateMapping(IndexTemplateConfig $indexTemplateConfig): array
6161
{
@@ -74,6 +74,8 @@ public function buildIndexTemplateMapping(IndexTemplateConfig $indexTemplateConf
7474
if ($template) {
7575
$mapping['template'] = $template;
7676
}
77+
78+
$mapping['priority'] = $indexTemplateConfig->getPriority();
7779
}
7880

7981
$mapping['index_patterns'] = $indexTemplateConfig->getIndexPatterns();

tests/Unit/Configuration/IndexTemplateConfigTest.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public function testInstantiate(): void
2929
'index_patterns' => ['t*'],
3030
'config' => [],
3131
'mapping' => [],
32+
'priority' => 0,
3233
];
3334
$indexTemplate = new IndexTemplateConfig($config);
3435
$this->assertEquals($name, $indexTemplate->getName());
@@ -39,6 +40,7 @@ public function testInstantiate(): void
3940
'name' => $indexTemplate->getName(),
4041
'settings' => $indexTemplate->getSettings(),
4142
'index_patterns' => $indexTemplate->getIndexPatterns(),
43+
'priority' => $indexTemplate->getPriority(),
4244
'config' => [],
4345
'mapping' => [],
4446
]
@@ -53,6 +55,7 @@ public function testIncorrectInstantiate(): void
5355
'settings' => [1],
5456
'config' => [],
5557
'mapping' => [],
58+
'priority' => 0,
5659
];
5760

5861
$this->expectException(\InvalidArgumentException::class);

tests/Unit/Configuration/Source/TemplateContainerSourceTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ public function testGetConfiguration(): void
4646
'some_setting' => 'setting_value',
4747
],
4848
'index_patterns' => ['some_index_config_*'],
49+
'priority' => 0,
4950
],
5051
]
5152
);

tests/Unit/Index/MappingBuilderTest.php

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,16 +69,21 @@ public function testMappingBuilderStoreProperty(): void
6969

7070
public function testBuildIndexTemplateMapping(): void
7171
{
72-
$config = new IndexTemplateConfig(
73-
['index_patterns' => ['index_template_*'], 'name' => 'some_template', 'config' => [], 'mapping' => $this->indexConfig->getMapping()]
74-
);
72+
$config = new IndexTemplateConfig([
73+
'index_patterns' => ['index_template_*'],
74+
'name' => 'some_template',
75+
'config' => [],
76+
'mapping' => $this->indexConfig->getMapping(),
77+
'priority' => 0,
78+
]);
7579

7680
$expected = ElasticsearchVersionDetector::usesNewIndexTemplateApi()
7781
? [
7882
'template' => [
7983
'mappings' => $this->indexConfig->getMapping(),
8084
],
8185
'index_patterns' => ['index_template_*'],
86+
'priority' => 0,
8287
]
8388
: [
8489
'index_patterns' => ['index_template_*'],

0 commit comments

Comments
 (0)