Edit on GitHub

Configuration Configuration

Following aspects need to be considered in index configuration:

General Configuration Options

In the config_options area general Elastic Search settings can be made - like hosts, index settings, etc.

client_config
  • logging: true/false to activate logging of elastic search client
  • indexName: index name to be used, if not provided tenant name is used as index name
index_settings

Index settings that are used when creating a new index. They are passed 1:1 as settings param to the body of the create index command. Details see also Elastic Search Docs.

es_client_params
  • hosts: Array of hosts of the Elastic Search cluster to use.
  • indexType: Necessary for Elastic Search 6 - defines the type name of products in index.

Sample Config

pimcore_ecommerce_framework:
    index_service:
        tenants:
            MyEsTenant:
                config_options:
                    client_config:
                        logging: false
                        indexName: 'ecommerce-demo-elasticsearch'

                    es_client_params:
                        hosts:
                            - '%elasticsearch.host%'
                        indexType: 'Product'

                    index_settings:
                        number_of_shards: 5
                        number_of_replicas: 0
                        analysis:
                            analyzer:
                                my_ngram_analyzer:
                                    tokenizer: my_ngram_tokenizer
                                whitelist_analyzer:
                                    tokenizer: standard
                                    filter:
                                      - white_list_filter
                            tokenizer:
                                my_ngram_tokenizer:
                                    type: nGram
                                    min_gram: 2
                                    max_gram: 15
                                    token_chars: [letter, digit]
                            filter:
                                white_list_filter:
                                    type: keep
                                    keep_words:
                                      - was
                                      - WAS

Data Types for attributes

The type of the data attributes needs to be set to elastic search data types. Be careful, some types changed between Elastic Search 5 and 6 (like string vs. keyword/text).

pimcore_ecommerce_framework:
    index_service:
        tenants:
            MyEsTenant:
                attributes:
                    name:
                        locale: '%%locale%%'
                        type: keyword

In addition to the type configuration, you also can provide custom mappings for a field. If provided, these mapping configurations are used for creating the mapping of the elastic search index.

You can also skip the type and mapping, then ES will try to create dynamic mapping.


pimcore_ecommerce_framework:
    index_service:
        tenants:
            MyEsTenant:
                attributes:
                    name:
                        locale: '%%locale%%'
                        type: text
                        options:
                            mapping:
                                type: text
                                store: true
                                index: not_analyzed
                                fields:
                                    analyzed:
                                        type: text
                                        analyzer: german
                                    analyzed_ngram:
                                        type: text
                                        analyzer: my_ngram_analyzer