Here is indexing:
var response = client.CreateIndex(index, s => s
.Settings(s1 => s1
.NumberOfShards(5)
.NumberOfReplicas(5)
.Analysis(a => a.TokenFilters(t => t
.IcuTransform("greeklatin", it => it.Id("Greek-Latin; NFD; [:Nonspacing Mark:] Remove; NFC")//
.Direction(IcuTransformDirection.Forward)) //
.IcuTransform("latingreek", lg => lg.Id("Greek-Latin; NFD; [:Nonspacing Mark:] Remove; NFC")
.Direction(IcuTransformDirection.Reverse))
.EdgeNGram("greekedge", ed => ed.MaxGram(35)
.MinGram(2)
.Side(EdgeNGramSide.Front)
)
.Stop("greekstop", sw => sw.StopWords())
.Lowercase("greeklowercase", gl => gl.Language(Language.Greek.ToString()))
.KeywordMarker("greekkeywords", gk => gk.Keywords(""))
.Stemmer("greekstemmer", gs => gs.Language(Language.Greek.ToString())))
.Analyzers(a1 => a1
.Custom("greek", t => t.Tokenizer("standard")
.Filters("greekedge","greekstop", "greeklowercase", "greekkeywords", "greekstemmer", "greeklatin","latingreek"))
.Standard("standard",st=>st.MaxTokenLength(20))
))
).Mappings(m => m.Map(type, mt => mt.Properties(c => c.Text(c1 => c1.Name("SERVICE_SN").Analyzer("greek"))
.Text(c2 => c2.Name("car").Analyzer("greek").SearchAnalyzer("standard"))
.Text(c3 => c3.Name("carid").Analyzer("greek").SearchAnalyzer("standard"))
.Text(c4 => c4.Name("route").Analyzer("greek").SearchAnalyzer("standard"))
.Text(c5 => c5.Name("routeid").Analyzer("greek").SearchAnalyzer("standard"))
.Text(c6 => c6.Name("partsdesc").Analyzer("greek").SearchAnalyzer("standard"))
.Text(c7 => c7.Name("partid").Analyzer("greek").SearchAnalyzer("standard"))
.Text(c8 => c8.Name("country").Analyzer("greek").SearchAnalyzer("standard"))
))));
and my searching
var response = client.Search<Cars>(n => n
.Index(index)
.Type(type)
.Query(m => m.Bool(q => q
.Must(sh => sh.Match(m1 => m1
.Analyzer(analyzername)
.Query("*" + searchWord + "*")
.Field(fieldsForSearchList[0])
.Fuzziness(Fuzziness.EditDistance(1))))))
.Size(searchSize)
.From(0)
.TrackScores(true)
);