tandrezone/dynamic-search-index-provider-elasticsearch

dev-master 2023-06-19 09:03 UTC

This package is auto-updated.

Last update: 2024-12-19 12:14:35 UTC


README

Software License Latest Release Tests PhpStan

An index storage extension for Pimcore Dynamic Search. Store data with the elasticsearch index service.

Release Plan

Installation

"require" : {
    "dachcom-digital/dynamic-search" : "~2.0.0",
    "dachcom-digital/dynamic-search-index-provider-elasticsearch" : "~2.0.0"
}

Dynamic Search Bundle

You need to install / enable the Dynamic Search Bundle first. Read more about it here. After that, proceed as followed:

Enabling via config/bundles.php:

<?php

return [
    \DsElasticSearchBundle\DsElasticSearchBundle::class => ['all' => true],
];

Enabling via Kernel.php:

<?php

namespace App;

use Pimcore\HttpKernel\BundleCollection\BundleCollection;

class Kernel extends \Pimcore\Kernel
{
    public function registerBundlesToCollection(BundleCollection $collection): void
    {
        $collection->addBundle(new \DsElasticSearchBundle\DsElasticSearchBundle());
    }
}

Basic Setup

dynamic_search:
    enable_pimcore_element_listener: true
    context:
        default:
            index_provider:
                service: 'elasticsearch'
                options:
                    index:
                        identifier: 'default'
                        hosts:
                            - 'elasticsearch:9200'
                        settings: []
                        credentials: # optional, empty array
                            username: '%ES_USERNAME%'
                            password: '%ES_PASSWORD%'
                    analysis:
                        analyzer:
                            keyword_analyzer:
                                tokenizer: keyword
                                type: custom
                                filter:
                                    - lowercase
                                    - asciifolding
                                    - trim
                                char_filter: []
                            edge_ngram_analyzer:
                                tokenizer: edge_ngram_tokenizer
                                filter:
                                    - lowercase
                            edge_ngram_search_analyzer:
                                tokenizer: lowercase
                        tokenizer:
                            edge_ngram_tokenizer:
                                type: edge_ngram
                                min_gram: 2
                                max_gram: 5
                                token_chars:
                                    - letter
            output_channels:
                suggestions:
                    service: 'elasticsearch_search'
                    normalizer:
                        service: 'es_document_raw_normalizer'
                    paginator:
                        enabled: false
                search:
                    service: 'elasticsearch_search'
                    use_frontend_controller: true
                    options:
                        result_limit: 10
                    normalizer:
                        service: 'es_document_source_normalizer'
                    paginator:
                        enabled: true
                        max_per_page: 10

Provider Options

Index Fields

Available Index Fields:

Output Channel Services

Search

This channel service just creates a simple DSL search class. You're able to modify the search by hooking via dynamic_search.output_channel.modifier.action into the post_query_build action.

Identifier: elasticsearch_search
Available Options:

Multi Search

Identifier: TBD
Available Options: none

Filter

TBD

Output Normalizer

A Output Normalizer can be defined for each output channel.

es_document_raw_normalizer

Use this normalizer to get the untouched elasticsearch response.

Available Options:
Currently none

es_document_source_normalizer

Use this normalizer to get all document values (_source) stored in response.hits.hits[]

Available Options:
Currently none

Commands

Rebuild Index Mapping

Use this command to rebuild a index by passing your context name with argument -c

Attention! By executing this command, the index gets removed and all data will be lost!

$  bin/console dynamic-search:es:rebuild-index -c default

Copyright and License

Copyright: DACHCOM.DIGITAL
For licensing details please visit LICENSE.md

Upgrade Info

Before updating, please check our upgrade notes!