<?php

return [
    'host' => env('ELASTICSEARCH_HOST'),
    'user' => env('ELASTICSEARCH_USER'),
    'password' => env('ELASTICSEARCH_PASSWORD'),
    'cloud_id' => env('ELASTICSEARCH_CLOUD_ID'),
    'api_key' => env('ELASTICSEARCH_API_KEY'),
    'queue' => [
        'timeout' => env('SCOUT_QUEUE_TIMEOUT'),
    ],
    'indices' => [
        'mappings' => [
            'default' => [
                'properties' => [
                    'id' => [
                        'type' => 'keyword',
                    ],
                    '__class_name' => [
                        'type' => 'keyword',
                    ],
                    'created_at' => [
                        'type' => 'date',
                        'format' => 'yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||strict_date_optional_time||epoch_millis'
                    ],
                    'updated_at' => [
                        'type' => 'date',
                        'format' => 'yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||strict_date_optional_time||epoch_millis'
                    ],
                ],
            ],

            'posts_index' => [
                'properties' => [
                    'id' => ['type' => 'keyword'],
                    '__class_name' => ['type' => 'keyword'],
                    'category_id' => ['type' => 'integer'],
                    'user_id' => ['type' => 'integer'],
                    'status' => ['type' => 'keyword'],
                    'featured' => ['type' => 'boolean'],
                    'created_at' => [
                        'type' => 'date',
                        'format' => 'yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||strict_date_optional_time||epoch_millis'
                    ],

                    'postable' => [
                        'properties' => [
                            'id' => ['type' => 'integer'],
                            'name' => ['type' => 'text', 'analyzer' => 'name_analyzer'],
                        ],
                    ],

                    'post_translations' => [
                        'properties' => [
                            // Title fields
                            'title_nl' => [
                                'type' => 'text',
                                'analyzer' => 'analyzer_nl',
                                'fields' => [
                                    'keyword' => ['type' => 'keyword'],
                                    'suggest' => ['type' => 'completion'],
                                ]
                            ],
                            'title_en' => [
                                'type' => 'text',
                                'analyzer' => 'analyzer_en',
                                'fields' => [
                                    'keyword' => ['type' => 'keyword'],
                                    'suggest' => ['type' => 'completion'],
                                ]
                            ],
                            'title_fr' => [
                                'type' => 'text',
                                'analyzer' => 'analyzer_fr',
                                'fields' => [
                                    'keyword' => ['type' => 'keyword'],
                                    'suggest' => ['type' => 'completion'],
                                ]
                            ],
                            'title_de' => [
                                'type' => 'text',
                                'analyzer' => 'analyzer_de',
                                'fields' => [
                                    'keyword' => ['type' => 'keyword'],
                                    'suggest' => ['type' => 'completion'],
                                ]
                            ],
                            'title_es' => [
                                'type' => 'text',
                                'analyzer' => 'analyzer_es',
                                'fields' => [
                                    'keyword' => ['type' => 'keyword'],
                                    'suggest' => ['type' => 'completion'],
                                ]
                            ],

                            // Excerpt fields
                            'excerpt_nl' => ['type' => 'text', 'analyzer' => 'analyzer_nl'],
                            'excerpt_en' => ['type' => 'text', 'analyzer' => 'analyzer_en'],
                            'excerpt_fr' => ['type' => 'text', 'analyzer' => 'analyzer_fr'],
                            'excerpt_de' => ['type' => 'text', 'analyzer' => 'analyzer_de'],
                            'excerpt_es' => ['type' => 'text', 'analyzer' => 'analyzer_es'],

                            // Content fields
                            'content_nl' => ['type' => 'text', 'analyzer' => 'analyzer_nl'],
                            'content_en' => ['type' => 'text', 'analyzer' => 'analyzer_en'],
                            'content_fr' => ['type' => 'text', 'analyzer' => 'analyzer_fr'],
                            'content_de' => ['type' => 'text', 'analyzer' => 'analyzer_de'],
                            'content_es' => ['type' => 'text', 'analyzer' => 'analyzer_es'],

                            // Publication date fields (FIXED FORMAT)
                            'from_nl' => [
                                'type' => 'date',
                                'format' => 'yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||strict_date_optional_time||epoch_millis'
                            ],
                            'from_en' => [
                                'type' => 'date',
                                'format' => 'yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||strict_date_optional_time||epoch_millis'
                            ],
                            'from_fr' => [
                                'type' => 'date',
                                'format' => 'yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||strict_date_optional_time||epoch_millis'
                            ],
                            'from_de' => [
                                'type' => 'date',
                                'format' => 'yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||strict_date_optional_time||epoch_millis'
                            ],
                            'from_es' => [
                                'type' => 'date',
                                'format' => 'yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||strict_date_optional_time||epoch_millis'
                            ],

                            // Publication end date fields (FIXED FORMAT)
                            'till_nl' => [
                                'type' => 'date',
                                'format' => 'yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||strict_date_optional_time||epoch_millis'
                            ],
                            'till_en' => [
                                'type' => 'date',
                                'format' => 'yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||strict_date_optional_time||epoch_millis'
                            ],
                            'till_fr' => [
                                'type' => 'date',
                                'format' => 'yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||strict_date_optional_time||epoch_millis'
                            ],
                            'till_de' => [
                                'type' => 'date',
                                'format' => 'yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||strict_date_optional_time||epoch_millis'
                            ],
                            'till_es' => [
                                'type' => 'date',
                                'format' => 'yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||strict_date_optional_time||epoch_millis'
                            ],

                            // Scheduled deletion date fields (FIXED FORMAT)
                            'deleted_at_nl' => [
                                'type' => 'date',
                                'format' => 'yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||strict_date_optional_time||epoch_millis'
                            ],
                            'deleted_at_en' => [
                                'type' => 'date',
                                'format' => 'yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||strict_date_optional_time||epoch_millis'
                            ],
                            'deleted_at_fr' => [
                                'type' => 'date',
                                'format' => 'yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||strict_date_optional_time||epoch_millis'
                            ],
                            'deleted_at_de' => [
                                'type' => 'date',
                                'format' => 'yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||strict_date_optional_time||epoch_millis'
                            ],
                            'deleted_at_es' => [
                                'type' => 'date',
                                'format' => 'yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||strict_date_optional_time||epoch_millis'
                            ],

                            // Status fields
                            'status_nl' => ['type' => 'keyword'],
                            'status_en' => ['type' => 'keyword'],
                            'status_fr' => ['type' => 'keyword'],
                            'status_de' => ['type' => 'keyword'],
                            'status_es' => ['type' => 'keyword'],
                        ],
                    ],

                    'post_category' => [
                        'properties' => [
                            'id' => ['type' => 'integer'],
                            'names' => [
                                'properties' => [
                                    'name_nl' => [
                                        'type' => 'text',
                                        'analyzer' => 'analyzer_nl',
                                        'fields' => ['keyword' => ['type' => 'keyword']]
                                    ],
                                    'name_en' => [
                                        'type' => 'text',
                                        'analyzer' => 'analyzer_en',
                                        'fields' => ['keyword' => ['type' => 'keyword']]
                                    ],
                                    'name_fr' => [
                                        'type' => 'text',
                                        'analyzer' => 'analyzer_fr',
                                        'fields' => ['keyword' => ['type' => 'keyword']]
                                    ],
                                    'name_de' => [
                                        'type' => 'text',
                                        'analyzer' => 'analyzer_de',
                                        'fields' => ['keyword' => ['type' => 'keyword']]
                                    ],
                                    'name_es' => [
                                        'type' => 'text',
                                        'analyzer' => 'analyzer_es',
                                        'fields' => ['keyword' => ['type' => 'keyword']]
                                    ],
                                ],
                            ],
                        ],
                    ],
                ],
            ],

            'calls_index' => [
                'properties' => [
                    'id'            => ['type' => 'keyword'],
                    '__class_name'  => ['type' => 'keyword'],

                    'callable' => [
                        'properties' => [
                            'id'   => ['type' => 'integer'],
                            'name' => ['type' => 'text', 'analyzer' => 'name_analyzer'],
                        ],
                    ],

                    'tag' => [
                        'properties' => [
                            'tag_id'   => ['type' => 'integer'],
                            'color'    => ['type' => 'keyword'],
                            'name_nl'  => ['type' => 'text', 'analyzer' => 'analyzer_nl'],
                            'name_en'  => ['type' => 'text', 'analyzer' => 'analyzer_en'],
                            'name_fr'  => ['type' => 'text', 'analyzer' => 'analyzer_fr'],
                            'name_de'  => ['type' => 'text', 'analyzer' => 'analyzer_de'],
                            'name_es'  => ['type' => 'text', 'analyzer' => 'analyzer_es'],
                        ],
                    ],

                    'location' => [
                        'properties' => [
                            'city'     => ['type' => 'text', 'analyzer' => 'locations_analyzer'],
                            'division' => ['type' => 'text', 'analyzer' => 'locations_analyzer'],
                            'country'  => ['type' => 'text', 'analyzer' => 'locations_analyzer'],
                        ],
                    ],

                    'from' => [
                        'type'   => 'date',
                        'format' => 'yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||strict_date_optional_time||epoch_millis',
                    ],
                    'till' => [
                        'type'   => 'date',
                        'format' => 'yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||strict_date_optional_time||epoch_millis',
                    ],

                    'call_translations' => [
                        'properties' => [
                            'content_nl' => ['type' => 'text', 'analyzer' => 'analyzer_nl'],
                            'content_en' => ['type' => 'text', 'analyzer' => 'analyzer_en'],
                            'content_fr' => ['type' => 'text', 'analyzer' => 'analyzer_fr'],
                            'content_de' => ['type' => 'text', 'analyzer' => 'analyzer_de'],
                            'content_es' => ['type' => 'text', 'analyzer' => 'analyzer_es'],
                        ],
                    ],
                ],
            ],

            'users_index' => [
                'properties' => [
                    'id' => ['type' => 'keyword'],
                    '__class_name' => ['type' => 'keyword'],
                    'name' => [
                        'type' => 'text',
                        'analyzer' => 'name_analyzer',
                        'fields' => [
                            'keyword' => ['type' => 'keyword'],
                            'suggest' => ['type' => 'completion'],
                        ]
                    ],
                    'email_verified_at' => [
                        'type' => 'date',
                        'format' => 'yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||strict_date_optional_time||epoch_millis'
                    ],
                    'inactive_at' => [
                        'type' => 'date',
                        'format' => 'yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||strict_date_optional_time||epoch_millis'
                    ],
                    'deleted_at' => [
                        'type' => 'date',
                        'format' => 'yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||strict_date_optional_time||epoch_millis'
                    ],
                    'profile_completeness_score' => ['type' => 'float'],

                    'about_nl' => ['type' => 'text', 'analyzer' => 'analyzer_nl'],
                    'about_en' => ['type' => 'text', 'analyzer' => 'analyzer_en'],
                    'about_fr' => ['type' => 'text', 'analyzer' => 'analyzer_fr'],
                    'about_de' => ['type' => 'text', 'analyzer' => 'analyzer_de'],
                    'about_es' => ['type' => 'text', 'analyzer' => 'analyzer_es'],
                    'about_short_nl' => ['type' => 'text', 'analyzer' => 'analyzer_nl'],
                    'about_short_en' => ['type' => 'text', 'analyzer' => 'analyzer_en'],
                    'about_short_fr' => ['type' => 'text', 'analyzer' => 'analyzer_fr'],
                    'about_short_de' => ['type' => 'text', 'analyzer' => 'analyzer_de'],
                    'about_short_es' => ['type' => 'text', 'analyzer' => 'analyzer_es'],
                    'motivation_nl' => ['type' => 'text', 'analyzer' => 'analyzer_nl'],
                    'motivation_en' => ['type' => 'text', 'analyzer' => 'analyzer_en'],
                    'motivation_fr' => ['type' => 'text', 'analyzer' => 'analyzer_fr'],
                    'motivation_de' => ['type' => 'text', 'analyzer' => 'analyzer_de'],
                    'motivation_es' => ['type' => 'text', 'analyzer' => 'analyzer_es'],
                    'cyclos_skills' => ['type' => 'text', 'analyzer' => 'analyzer_general'],
                    'website' => ['type' => 'keyword'],

                    'locations' => [
                        'properties' => [
                            'district' => ['type' => 'text', 'analyzer' => 'locations_analyzer'],
                            'city' => ['type' => 'text', 'analyzer' => 'locations_analyzer'],
                            'division' => ['type' => 'text', 'analyzer' => 'locations_analyzer'],
                            'country' => ['type' => 'text', 'analyzer' => 'locations_analyzer'],
                        ],
                    ],

                    'tags' => [
                        'properties' => [
                            'contexts' => [
                                'properties' => [
                                    'categories' => [
                                        'properties' => [
                                            'name_nl' => [
                                                'type' => 'text',
                                                'analyzer' => 'analyzer_nl',
                                                'fields' => ['keyword' => ['type' => 'keyword']]
                                            ],
                                            'name_en' => [
                                                'type' => 'text',
                                                'analyzer' => 'analyzer_en',
                                                'fields' => ['keyword' => ['type' => 'keyword']]
                                            ],
                                            'name_fr' => [
                                                'type' => 'text',
                                                'analyzer' => 'analyzer_fr',
                                                'fields' => ['keyword' => ['type' => 'keyword']]
                                            ],
                                            'name_de' => [
                                                'type' => 'text',
                                                'analyzer' => 'analyzer_de',
                                                'fields' => ['keyword' => ['type' => 'keyword']]
                                            ],
                                            'name_es' => [
                                                'type' => 'text',
                                                'analyzer' => 'analyzer_es',
                                                'fields' => ['keyword' => ['type' => 'keyword']]
                                            ],
                                        ],
                                    ],
                                    'tags' => [
                                        'properties' => [
                                            'name_nl' => ['type' => 'text', 'analyzer' => 'analyzer_nl'],
                                            'name_en' => ['type' => 'text', 'analyzer' => 'analyzer_en'],
                                            'name_fr' => ['type' => 'text', 'analyzer' => 'analyzer_fr'],
                                            'name_de' => ['type' => 'text', 'analyzer' => 'analyzer_de'],
                                            'name_es' => ['type' => 'text', 'analyzer' => 'analyzer_es'],
                                        ],
                                    ],
                                ],
                            ],
                        ],
                    ],
                ],
            ],

            'organizations_index' => [
                'properties' => [
                    'id' => ['type' => 'keyword'],
                    '__class_name' => ['type' => 'keyword'],
                    'name' => [
                        'type' => 'text',
                        'analyzer' => 'name_analyzer',
                        'fields' => [
                            'keyword' => ['type' => 'keyword'],
                            'suggest' => ['type' => 'completion'],
                        ]
                    ],
                    'email_verified_at' => [
                        'type' => 'date',
                        'format' => 'yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||strict_date_optional_time||epoch_millis'
                    ],
                    'inactive_at' => [
                        'type' => 'date',
                        'format' => 'yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||strict_date_optional_time||epoch_millis'
                    ],
                    'deleted_at' => [
                        'type' => 'date',
                        'format' => 'yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||strict_date_optional_time||epoch_millis'
                    ],
                    'organization_type' => ['type' => 'keyword'],
                    'verified' => ['type' => 'boolean'],

                    'about_nl' => ['type' => 'text', 'analyzer' => 'analyzer_nl'],
                    'about_en' => ['type' => 'text', 'analyzer' => 'analyzer_en'],
                    'about_fr' => ['type' => 'text', 'analyzer' => 'analyzer_fr'],
                    'about_de' => ['type' => 'text', 'analyzer' => 'analyzer_de'],
                    'about_es' => ['type' => 'text', 'analyzer' => 'analyzer_es'],
                    'about_short_nl' => ['type' => 'text', 'analyzer' => 'analyzer_nl'],
                    'about_short_en' => ['type' => 'text', 'analyzer' => 'analyzer_en'],
                    'about_short_fr' => ['type' => 'text', 'analyzer' => 'analyzer_fr'],
                    'about_short_de' => ['type' => 'text', 'analyzer' => 'analyzer_de'],
                    'about_short_es' => ['type' => 'text', 'analyzer' => 'analyzer_es'],
                    'motivation_nl' => ['type' => 'text', 'analyzer' => 'analyzer_nl'],
                    'motivation_en' => ['type' => 'text', 'analyzer' => 'analyzer_en'],
                    'motivation_fr' => ['type' => 'text', 'analyzer' => 'analyzer_fr'],
                    'motivation_de' => ['type' => 'text', 'analyzer' => 'analyzer_de'],
                    'motivation_es' => ['type' => 'text', 'analyzer' => 'analyzer_es'],
                    'cyclos_skills' => ['type' => 'text', 'analyzer' => 'analyzer_general'],
                    'website' => ['type' => 'keyword'],

                    'locations' => [
                        'properties' => [
                            'district' => ['type' => 'text', 'analyzer' => 'locations_analyzer'],
                            'city' => ['type' => 'text', 'analyzer' => 'locations_analyzer'],
                            'division' => ['type' => 'text', 'analyzer' => 'locations_analyzer'],
                            'country' => ['type' => 'text', 'analyzer' => 'locations_analyzer'],
                        ],
                    ],

                    'tags' => [
                        'properties' => [
                            'contexts' => [
                                'properties' => [
                                    'categories' => [
                                        'properties' => [
                                            'name_nl' => [
                                                'type' => 'text',
                                                'analyzer' => 'analyzer_nl',
                                                'fields' => ['keyword' => ['type' => 'keyword']]
                                            ],
                                            'name_en' => [
                                                'type' => 'text',
                                                'analyzer' => 'analyzer_en',
                                                'fields' => ['keyword' => ['type' => 'keyword']]
                                            ],
                                            'name_fr' => [
                                                'type' => 'text',
                                                'analyzer' => 'analyzer_fr',
                                                'fields' => ['keyword' => ['type' => 'keyword']]
                                            ],
                                            'name_de' => [
                                                'type' => 'text',
                                                'analyzer' => 'analyzer_de',
                                                'fields' => ['keyword' => ['type' => 'keyword']]
                                            ],
                                            'name_es' => [
                                                'type' => 'text',
                                                'analyzer' => 'analyzer_es',
                                                'fields' => ['keyword' => ['type' => 'keyword']]
                                            ],
                                        ],
                                    ],
                                    'tags' => [
                                        'properties' => [
                                            'name_nl' => ['type' => 'text', 'analyzer' => 'analyzer_nl'],
                                            'name_en' => ['type' => 'text', 'analyzer' => 'analyzer_en'],
                                            'name_fr' => ['type' => 'text', 'analyzer' => 'analyzer_fr'],
                                            'name_de' => ['type' => 'text', 'analyzer' => 'analyzer_de'],
                                            'name_es' => ['type' => 'text', 'analyzer' => 'analyzer_es'],
                                        ],
                                    ],
                                ],
                            ],
                        ],
                    ],
                ],
            ],

            'banks_index' => [
                'properties' => [
                    'id' => ['type' => 'keyword'],
                    '__class_name' => ['type' => 'keyword'],
                    'name' => [
                        'type' => 'text',
                        'analyzer' => 'name_analyzer',
                        'fields' => [
                            'keyword' => ['type' => 'keyword'],
                            'suggest' => ['type' => 'completion'],
                        ]
                    ],
                    'email_verified_at' => [
                        'type' => 'date',
                        'format' => 'yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||strict_date_optional_time||epoch_millis'
                    ],
                    'inactive_at' => [
                        'type' => 'date',
                        'format' => 'yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||strict_date_optional_time||epoch_millis'
                    ],
                    'deleted_at' => [
                        'type' => 'date',
                        'format' => 'yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||strict_date_optional_time||epoch_millis'
                    ],
                    'bank_type' => ['type' => 'keyword'],
                    'verified' => ['type' => 'boolean'],

                    'about_nl' => ['type' => 'text', 'analyzer' => 'analyzer_nl'],
                    'about_en' => ['type' => 'text', 'analyzer' => 'analyzer_en'],
                    'about_fr' => ['type' => 'text', 'analyzer' => 'analyzer_fr'],
                    'about_de' => ['type' => 'text', 'analyzer' => 'analyzer_de'],
                    'about_es' => ['type' => 'text', 'analyzer' => 'analyzer_es'],
                    'about_short_nl' => ['type' => 'text', 'analyzer' => 'analyzer_nl'],
                    'about_short_en' => ['type' => 'text', 'analyzer' => 'analyzer_en'],
                    'about_short_fr' => ['type' => 'text', 'analyzer' => 'analyzer_fr'],
                    'about_short_de' => ['type' => 'text', 'analyzer' => 'analyzer_de'],
                    'about_short_es' => ['type' => 'text', 'analyzer' => 'analyzer_es'],
                    'motivation_nl' => ['type' => 'text', 'analyzer' => 'analyzer_nl'],
                    'motivation_en' => ['type' => 'text', 'analyzer' => 'analyzer_en'],
                    'motivation_fr' => ['type' => 'text', 'analyzer' => 'analyzer_fr'],
                    'motivation_de' => ['type' => 'text', 'analyzer' => 'analyzer_de'],
                    'motivation_es' => ['type' => 'text', 'analyzer' => 'analyzer_es'],
                    'website' => ['type' => 'keyword'],

                    'locations' => [
                        'properties' => [
                            'district' => ['type' => 'text', 'analyzer' => 'locations_analyzer'],
                            'city' => ['type' => 'text', 'analyzer' => 'locations_analyzer'],
                            'division' => ['type' => 'text', 'analyzer' => 'locations_analyzer'],
                            'country' => ['type' => 'text', 'analyzer' => 'locations_analyzer'],
                        ],
                    ],

                    'tags' => [
                        'properties' => [
                            'contexts' => [
                                'properties' => [
                                    'categories' => [
                                        'properties' => [
                                            'name_nl' => [
                                                'type' => 'text',
                                                'analyzer' => 'analyzer_nl',
                                                'fields' => ['keyword' => ['type' => 'keyword']]
                                            ],
                                            'name_en' => [
                                                'type' => 'text',
                                                'analyzer' => 'analyzer_en',
                                                'fields' => ['keyword' => ['type' => 'keyword']]
                                            ],
                                            'name_fr' => [
                                                'type' => 'text',
                                                'analyzer' => 'analyzer_fr',
                                                'fields' => ['keyword' => ['type' => 'keyword']]
                                            ],
                                            'name_de' => [
                                                'type' => 'text',
                                                'analyzer' => 'analyzer_de',
                                                'fields' => ['keyword' => ['type' => 'keyword']]
                                            ],
                                            'name_es' => [
                                                'type' => 'text',
                                                'analyzer' => 'analyzer_es',
                                                'fields' => ['keyword' => ['type' => 'keyword']]
                                            ],
                                        ],
                                    ],
                                    'tags' => [
                                        'properties' => [
                                            'name_nl' => ['type' => 'text', 'analyzer' => 'analyzer_nl'],
                                            'name_en' => ['type' => 'text', 'analyzer' => 'analyzer_en'],
                                            'name_fr' => ['type' => 'text', 'analyzer' => 'analyzer_fr'],
                                            'name_de' => ['type' => 'text', 'analyzer' => 'analyzer_de'],
                                            'name_es' => ['type' => 'text', 'analyzer' => 'analyzer_es'],
                                        ],
                                    ],
                                ],
                            ],
                        ],
                    ],
                ],
            ],

            'transactions_index' => [
                'properties' => [
                    'id' => ['type' => 'keyword'],
                    '__class_name' => ['type' => 'keyword'],
                    'description' => ['type' => 'text', 'analyzer' => 'analyzer_general'],
                    'relation_from' => ['type' => 'text', 'analyzer' => 'analyzer_general'],
                    'relation_to' => ['type' => 'text', 'analyzer' => 'analyzer_general'],
                    'from_account_id' => ['type' => 'integer'],
                    'to_account_id' => ['type' => 'integer'],
                    'amount' => ['type' => 'long'],
                    'currency' => ['type' => 'keyword'],
                    'status' => ['type' => 'keyword'],
                    'created_at' => [
                        'type' => 'date',
                        'format' => 'yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||strict_date_optional_time||epoch_millis'
                    ],
                ],
            ],
        ],

        'settings' => [
            'default' => [
                'number_of_shards' => 1,
                'number_of_replicas' => 0,
                'max_result_window' => 10000,
                'analysis' => [
                    'filter' => [
                        'custom_keyword_marker' => [
                            'type' => 'keyword_marker',
                            'keywords' => ["Den Haag", "The Hague", "La Haye", "Den Haag", "La Haya"],
                        ],
                        'locations_stop' => [
                            'type' => 'stop',
                            'stopwords' => [
                                // Dutch
                                "den",
                                "de",
                                "het",
                                "een",
                                "en",
                                "van",
                                "op",
                                "aan",
                                "in",
                                "voor",
                                "met",
                                "door",
                                "onder",
                                "boven",
                                "te",
                                "uit",
                                "bij",
                                "naar",
                                "om",
                                "tot",
                                "over",
                                "tussen",
                                "achter",
                                "voor",
                                "tegen",
                                "door",
                                "naast",
                                "langs",
                                "binnen",
                                "buiten",
                                "rond",
                                "sinds",
                                "onder",
                                "boven",
                                "langs",
                                "af",
                                // English
                                "the",
                                "and",
                                "of",
                                "a",
                                "an",
                                "in",
                                "on",
                                "at",
                                "by",
                                "for",
                                "with",
                                "from",
                                "to",
                                "into",
                                "through",
                                "over",
                                "under",
                                "behind",
                                "beside",
                                "between",
                                "around",
                                "near",
                                "throughout",
                                "since",
                                "above",
                                "below",
                                "up",
                                "down",
                                "before",
                                "after",
                                "during",
                                "while",
                                "among",
                                // French
                                "le",
                                "la",
                                "les",
                                "l'",
                                "de",
                                "du",
                                "des",
                                "un",
                                "une",
                                "d'",
                                "et",
                                "en",
                                "au",
                                "aux",
                                "Ã ",
                                "avec",
                                "par",
                                "pour",
                                "sur",
                                "sous",
                                "entre",
                                "vers",
                                "pendant",
                                "depuis",
                                "devant",
                                "derriÃ¨re",
                                "chez",
                                // German
                                "der",
                                "die",
                                "das",
                                "des",
                                "dem",
                                "den",
                                "ein",
                                "eine",
                                "einem",
                                "einen",
                                "und",
                                "in",
                                "auf",
                                "an",
                                "mit",
                                "bei",
                                "nach",
                                "vor",
                                "Ã¼ber",
                                "unter",
                                "zwischen",
                                "neben",
                                "hinter",
                                "vorbei",
                                "durch",
                                // Spanish
                                "el",
                                "la",
                                "los",
                                "las",
                                "un",
                                "una",
                                "unos",
                                "unas",
                                "de",
                                "del",
                                "al",
                                "a",
                                "con",
                                "en",
                                "por",
                                "para",
                                "sobre",
                                "bajo",
                                "ante",
                                "desde",
                                "hacia",
                                "entre",
                                "tras",
                                "durante",
                                "segÃºn",
                                "sin",
                                "hasta",
                            ],
                        ],
                        'dutch_stop' => ['type' => 'stop', 'stopwords' => '_dutch_'],
                        'english_stop' => ['type' => 'stop', 'stopwords' => '_english_'],
                        'french_stop' => ['type' => 'stop', 'stopwords' => '_french_'],
                        'german_stop' => ['type' => 'stop', 'stopwords' => '_german_'],
                        'spanish_stop' => ['type' => 'stop', 'stopwords' => '_spanish_'],
                        'dutch_stemmer' => ['type' => 'stemmer', 'language' => 'dutch'],
                        'english_stemmer' => ['type' => 'stemmer', 'language' => 'english'],
                        'french_stemmer' => ['type' => 'stemmer', 'language' => 'french'],
                        'german_stemmer' => ['type' => 'stemmer', 'language' => 'german'],
                        'spanish_stemmer' => ['type' => 'stemmer', 'language' => 'spanish'],
                        'edge_ngram_filter' => [
                            'type' => 'edge_ngram',
                            'min_gram' => 2,
                            'max_gram' => 20,
                        ],
                    ],

                    'tokenizer' => [
                        'edge_ngram_tokenizer' => [
                            'type' => 'edge_ngram',
                            'min_gram' => 2,
                            'max_gram' => 20,
                            'token_chars' => ['letter', 'digit'],
                        ],
                    ],

                    'analyzer' => [
                        'locations_analyzer' => [
                            'tokenizer' => 'standard',
                            'filter' => [
                                'lowercase',
                                'custom_keyword_marker',
                                'locations_stop',
                                'edge_ngram_filter',
                            ],
                        ],
                        'name_analyzer' => [
                            'tokenizer' => 'standard',
                            'filter' => [
                                'lowercase',
                                'edge_ngram_filter',
                            ],
                        ],
                        'analyzer_nl' => [
                            'tokenizer' => 'standard',
                            'filter' => [
                                'lowercase',
                                'custom_keyword_marker',
                                'dutch_stop',
                                'dutch_stemmer',
                            ],
                        ],
                        'analyzer_en' => [
                            'tokenizer' => 'standard',
                            'filter' => [
                                'lowercase',
                                'custom_keyword_marker',
                                'english_stop',
                                'english_stemmer',
                            ],
                        ],
                        'analyzer_fr' => [
                            'tokenizer' => 'standard',
                            'filter' => [
                                'lowercase',
                                'custom_keyword_marker',
                                'french_stop',
                                'french_stemmer',
                            ],
                        ],
                        'analyzer_de' => [
                            'tokenizer' => 'standard',
                            'filter' => [
                                'lowercase',
                                'custom_keyword_marker',
                                'german_stop',
                                'german_stemmer',
                            ],
                        ],
                        'analyzer_es' => [
                            'tokenizer' => 'standard',
                            'filter' => [
                                'lowercase',
                                'custom_keyword_marker',
                                'spanish_stop',
                                'spanish_stemmer',
                            ],
                        ],
                        'analyzer_general' => [
                            'type' => 'custom',
                            'tokenizer' => 'standard',
                            'filter' => ['lowercase'],
                        ],
                        'search_analyzer' => [
                            'tokenizer' => 'standard',
                            'filter' => ['lowercase'],
                        ],
                        'autocomplete_analyzer' => [
                            'tokenizer' => 'edge_ngram_tokenizer',
                            'filter' => ['lowercase'],
                        ],
                    ],
                ],
            ],
        ],
    ],
];
