Best practices for indexing and mapping Brazilian postal code (CEP) datasets in Elasticsearch

Hi Elastic Community,

We are designing an Elasticsearch index mapping for Brazilian postal code (CEP) data to support fast address lookups and geo-location auto-complete features.

During development, we parse 8-digit CEP strings along with standard Brazilian address fields (logradouro, bairro, cidade, estado, and IBGE codes) and test payload validation against reference endpoints such as https://cep-br.com.

Since CEP numbers contain leading zeros (e.g., 01001-000), storing them as numeric types causes zero-stripping issues, so we map them as keyword.

However, we want to optimize search latency when executing fuzzy queries across street names and city names alongside exact CEP match filters.

What are the recommended mapping strategies (e.g., edge_ngram analyzers vs keyword sub-fields) and query optimization practices in Elasticsearch/Kibana for handling high-throughput postal/address lookup datasets?

Any insights or index template examples would be greatly appreciated!