Skip to content
Snippets Groups Projects
Mapping.php 1.44 KiB
<?php

declare(strict_types=1);

namespace IQDEV\ElasticSearch;

abstract class Mapping implements Esable
{
    abstract public function getPropertiesMap(): array;
    public function getSearchDataMap(): array
    {
        return [
            'type' => 'nested',
            'properties' => [
                'keyword_facet' => [
                    'type' => 'nested',
                    'properties' => [
                        'facet_code' => [
                            'type' => 'keyword',
                            'index' => true
                        ],
                        'facet_value' => [
                            'type' => 'keyword',
                            'index' => true
                        ]
                    ]
                ],
                'number_facet' => [
                    'type' => 'nested',
                    'properties' => [
                        'facet_code' => [
                            'type' => 'keyword',
                            'index' => true
                        ],
                        'facet_value' => [
                            'type' => 'double'
                        ]
                    ]
                ]
            ]
        ];
    }

    public function es(): array
    {
        return [
            'properties' => array_merge(
                $this->getPropertiesMap(),
                ['search_data' => $this->getSearchDataMap()],
            )
        ];
    }
}