{
    "mappings": {
        "title": {
            "properties": {
                "title": {
                    "type": "string",
                    "fields": {
                        "searchable": {
                            "type": "string",
                            "analyzer": "title_name_index",
                            "search_analyzer": "title_name_search"
                        }
                    },
                    "analyzer": "title_name_search"
                },
                "artist": {
                    "type": "string",
                    "fields": {
                        "searchable": {
                            "type": "string",
                            "analyzer": "title_name_index",
                            "search_analyzer": "title_name_search"
                        }
                    },
                    "analyzer": "title_name_search"
                },
                "id": {
                    "type": "string"
                },
                "weight": {
                    "type": "long"
                }
            }
        }
    },
    "settings": {
        "index": {
            "analysis": {
                "filter": {
                    "title_name_ngram": {
                        "type": "edgeNGram",
                        "min_gram": "3",
                        "max_gram": "15"
                    }
                },
                "analyzer": {
                    "title_name_index": {
                        "char_filter": [
                            "title_name_filter"
                        ],
                        "filter": [
                            "standard",
                            "lowercase",
                            "asciifolding",
                            "title_name_ngram"
                        ],
                        "type": "custom",
                        "tokenizer": "standard"
                    },
                    "title_name_search": {
                        "char_filter": [
                            "title_name_filter"
                        ],
                        "filter": [
                            "standard",
                            "lowercase",
                            "asciifolding"
                        ],
                        "type": "custom",
                        "tokenizer": "standard"
                    }
                },
                "char_filter": {
                    "title_name_filter": {
                        "type": "mapping",
                        "mappings": [
                            "' => ",
                            "- => ",
                            ". => ",
                            "@ => ",
                            ", => ",
                            "! => ",
                            "? => ",
                            "$ => ",
                            "& => ",
                            "( => ",
                            ") => ",
                            "# => "
                        ]
                    }
                }
            }
        }
    }
}
