When a data frame analytics job is started it will automatically create its destination index if it doesn't already exist.

When this happens the mappings are copied from the source indices.  In addition two settings are copied from the source indices: `index.number_of_shards` and `index.number_of_replicas`.

However, for certain mappings in can be necessary that more settings are copied from the source indices.  For example, `index.analysis`, `index.similarity` and `index.mapping` might be needed to make the destination index search results look like those of the source indices.  In the case of custom analyzers defined in the index settings the destination index definition might not even be valid without the `index.analysis` setting that defines the custom analyzers.

So, we need to copy `index.analysis`, `index.similarity` and `index.mapping` from the source settings to destination settings.  Some thought is still required as this could be complex in the case of multiple source indices with different settings.  It might be possible to do a simple merge like we do for mappings.
server/src/main/java/org/elasticsearch/index/analysis/AnalysisRegistry.java
*/
    public Analyzer getAnalyzer(String analyzer) throws IOException {
        AnalysisModule.AnalysisProvider<AnalyzerProvider<?>> analyzerProvider = this.prebuiltAnalysis.getAnalyzerProvider(analyzer);
        if (analyzerProvider == null) {
            AnalysisModule.AnalysisProvider<AnalyzerProvider<?>> provider = analyzers.get(analyzer);
            return provider == null ? null : cachedAnalyzer.computeIfAbsent(analyzer, (key) -> {
                try {
                    return provider.get(environment, key).get();
                } catch (IOException ex) {
                    throw new ElasticsearchException("failed to load analyzer for name " + key, ex);
                }
            });
        }
        return analyzerProvider.get(environment, analyzer).get();
    }
    @Override
    public void close() throws IOException {
        try {
            prebuiltAnalysis.close();
        } finally {
            IOUtils.close(cachedAnalyzer.values());
        }
    }
    /**
     * Creates an index-level {@link IndexAnalyzers} from this registry using the given index settings
     */
    public IndexAnalyzers build(IndexSettings indexSettings) throws IOException {
        final Map<String, CharFilterFactory> charFilterFactories = buildCharFilterFactories(indexSettings);
        final Map<String, TokenizerFactory> tokenizerFactories = buildTokenizerFactories(indexSettings);
        final Map<String, TokenFilterFactory> tokenFilterFactories = buildTokenFilterFactories(indexSettings);