That sounds complex to me. One thing to note here is that this is not an exhaustive mapping, but a set of defaults for values that we expect. elasticsearch will accept fields that do not appear here (and I have voluntarily left aside some fields that were redundant for example) and guess a type from the data it receives. If we then want to make sure it has a special analyzer or a special type, we will need to edit this file and add it, but the data will always be in elasticsearch. 

Also, I don't think we can guess the analyzer to use from PostgreSQL's schema. I have manually done that work of finding the best analyzer for each field.