Elasticsearch 7 (Nest): Failed to parse mapping [_doc]: Root mapping definition has unsupported parameters:

I am getting the above error in ES 7. I think this is because of: removal of mapping types. My code used to work in ES 6.

Since I am using NEST to generate my index, I am not sure how should I fix the issue?

This is my code for generating index:

var createIndexResponse = ElasticClient.CreateIndex(IndexName, c => c
    .Settings(st => st
        .Analysis(an => an
            .Analyzers(anz => anz
                .Custom("result_suggester_analyzer", rsa => rsa
                    .Tokenizer("standard")
                    .CharFilters("html_strip", "mapped_words_char_filter")
                    .Filters(new string[] { "english_possessive_stemmer", "lowercase", "asciifolding", "stop_words", "english_stemmer", "edge_ngram_token_filter", "unique" })
                )
                .Custom("custom_english_analyzer", ce => ce
                    .Tokenizer("standard")
                    .CharFilters("html_strip", "mapped_words_char_filter")
                    .Filters(new string[] { "english_possessive_stemmer", "lowercase", "asciifolding", "stop_words", "english_stemmer", "unique" })
                )
            )
            .Normalizers(nor => nor
                .Custom("custom_ignore_case_normalizer", icn => icn
                    .CharFilters("mapped_words_char_filter")
                    .Filters(new string[] { "lowercase", "asciifolding" })
                )
            )
            .CharFilters(cf => cf
                .Mapping("mapped_words_char_filter", md => md
                    .Mappings(
                        "C# => csharp"
                    )
                )
            )
            .TokenFilters(tfd => tfd
                .EdgeNGram("edge_ngram_token_filter", engd => engd
                    .MinGram(2)
                    .MaxGram(10)
                )
                .Stop("stop_words", sfd => sfd.StopWords(_stopWords))
                .Stemmer("english_stemmer", esd => esd.Language("english"))
                .Stemmer("english_possessive_stemmer", epsd => epsd.Language("possessive_english"))
            )
        )
    )
    .Mappings(m => m.Map<AdDocument>(d => d.AutoMap()))); 

This is AdDocument

[ElasticsearchType(Name = "ad")]
public class AdDocument
{
    public long Id { get; set; }

    [Text(Analyzer = "custom_english_analyzer", SearchAnalyzer = "custom_english_analyzer")]
    public string FirstName { get; set; }

    // searchable properties from AdBase
    public bool IsActive { get; set; }

    [Text(Analyzer = "custom_english_analyzer", SearchAnalyzer = "custom_english_analyzer")]
    public string Title { get; set; }

    public short AdDurationInDays { get; set; }

    public DateTime AdStartTime { get; set; }

    [Keyword(Index = false)]   // Keyword => not analyzed
    public string MainPhotoUrl { get; set; }

    [Text(Analyzer = "custom_english_analyzer", SearchAnalyzer = "custom_english_analyzer")]
    public string StoreName { get; set; }

    // searchable properties from Address
    public GeoLocation GeoLocation { get; set; }

    [Keyword(Normalizer = "custom_ignore_case_normalizer")]   // keywords => not analyzed, use ignore case normalizer otherwise search would be case sensitive
    public string Suburb { get; set; }

    // Price is used when something is being sold, in case of real estate rental it indicates the rent value, in case of Jobs it is not used (we use salary) and services have not price
    public decimal? Price { get; set; }

    public DateTime? AvailableFrom { get; set; }

    public bool? IsFurnished { get; set; }

    public long? LandArea { get; set; }

    public short? JobTypeId { get; set; }
}

And this is the response (error) from Elasticsearch:

Failed to parse mapping [_doc]: Root mapping definition has unsupported parameters:

[ad : {
	properties= {
		landArea={
			type=long
		}, 
		isFurnished={
			type=boolean
		}, isActive={
			type=boolean
		}, title={
			search_analyzer=custom_english_analyzer, 
			analyzer=custom_english_analyzer, 
			type=text
		}, 
		availableFrom={
			type=date
		}, 
		mainPhotoUrl={
			index=false, 
			type=keyword
		}, 
		price={
			type=double
		}, 
		storeName={
			search_analyzer=custom_english_analyzer, 
			analyzer=custom_english_analyzer, 
			type=text
		}, 
		id={
			type=long
		}, 
		firstName={
			search_analyzer=custom_english_analyzer, 
			analyzer=custom_english_analyzer, 
			type=text
		}, 
		geoLocation={
			type=geo_point
		}
	}
}]

what version of NEST are you using with Elasticsearch 7? It sounds like you may be using a version less than 7, which is incompatible with Elasticsearch 7.

At this time, the latest available version of NEST is 7.0.0-alpha2, and we're working towards a GA release as soon as possible.

1 Like

Thanks a lot. I was using the last stable version Nest, 6.x, with Elasticsearch version 7.x. since it is production environment, i did not use nest alpha 7.

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.