dachcom-digital / pimcore-dynamic-search-index-provider-elasticsearch

A Index Storage Extension for Pimcore Dynamic Search. Store data with the elasticsearch index service.
Other
5 stars 2 forks source link
elasticsearch pimcore search

Dynamic Search | Index Provider: Elasticsearch

Software License Latest Release Tests PhpStan

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

Release Plan

Release Supported Pimcore Versions Supported Symfony Versions Release Date Maintained Branch
3.x 11.0 ^6.2 28.09.2023 Feature Branch master
2.x 10.0 - 10.6 ^5.4 19.12.2021 No 2.x
1.x 6.6 - 6.9 ^4.4 18.04.2021 No 1.x

Installation

"require" : {
    "dachcom-digital/dynamic-search" : "~3.0.0",
    "dachcom-digital/dynamic-search-index-provider-elasticsearch" : "~3.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:

Add Bundle to bundles.php:

<?php

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

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

Name Default Value Description
index []
analysis []

Index Fields

Available Index Fields:

Name Description
dynamic TBD
explicit TBD

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:

Name Default Value Description
result_limit 10

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

License

DACHCOM.DIGITAL AG, Löwenhofstrasse 15, 9424 Rheineck, Schweiz
dachcom.com, dcdi@dachcom.ch
Copyright © 2024 DACHCOM.DIGITAL. All rights reserved.

For licensing details please visit LICENSE.md

Upgrade Info

Before updating, please check our upgrade notes!