2014-04-29 9 views
0

J'ai créé l'index ci-dessous à l'aide du plug-in ElasticSearch Sense et j'ai créé le mappage C# Nest Fluent. Je peux tout exprimer dans Nest sauf "token_chars" sur le filtre nGrams. Je ne reçois pas de propriété fortement typée sur C# nest pour ajouter "token_chars". Quelqu'un at-il fait face au même problème?C# Nest ElasticSearch Impossible de mapper "token_chars" à Nest fluentMapping

Les paramètres json et C# sont listés ci-dessous. S'il vous plaît aider

 "analysis": { 
      "analyzer": { 
       "str_index_analyzer": { 
       "filter": [ 
        "lowercase", 
        "substring" 
       ], 
       "tokenizer": "keyword" 
       }, 
      "filter": { 
       "substring": { 
       "max_gram": "50", 
       "type": "nGram", 
       "min_gram": "2", 
       "token_chars": [ /*Not able to map */ 
        "letter", 
        "digit" 
       ] 
       } 
      } 

Je ne reçois pas la propriété fortement typé sur nid C ​​# pour ajouter « token_chars ». Est-ce que quelqu'un a fait face au même problème?

  var result = this._client.CreateIndex("mkfindex1", c => c 
      .Analysis(a => a.Analyzers(an => an.Add("str_index_analyzer", new CustomAnalyzer() 
      { 
       Filter = new string[] { "lowercase", "substring" }, 
       Tokenizer = "keyword" 
      })).TokenFilters(bases => bases.Add("substring", new NgramTokenFilter() 
      { 
       MaxGram = 50, 
       MinGram = 2, 

       /*"token_chars": [//Not able to map 
        "letter", 
        "digit" 
       */ 
      })))); 
+0

d'ajouter un problème de github pour cela? https://github.com/elasticsearch/elasticsearch-net/issues?direction=desc&sort=updated&state=open –

Répondre

3

J'ai rencontré le même problème. La solution de contournement pour cela est de ne pas utiliser le mappage Fluent et de simplement spécifier vos paramètres d'analyse directement en tant qu'entrées Fluent Dictionary via la méthode Settings.Add(). Voici un exemple qui devrait configurer votre index correctement.

var result = this._client.CreateIndex("mkfindex1", c => c 
    .Settings.Add("analysis.analyzer", "str_index_analyzer") 
    .Settings.add("analysis.analyzer.str_index_analyzer.type", "custom") 
    .Settings.add("analysis.analyzer.str_index_analyzer.tokenizer", "keyword") 
    .Settings.Add("analysis.analyzer.str_index_analyzer.filter.0", "lowercase") 
    .Settings.Add("analysis.analyzer.str_index_analyzer.filter.1", "substring") 
    .Settings.add("analysis.filter.substring.type", "nGram") 
    .Settings.add("analysis.filter.substring.min_gram", "2") 
    .Settings.add("analysis.filter.substring.max_gram", "50") 
    .Settings.add("analysis.filter.substring.token_chars.0", "letter") 
    .Settings.add("analysis.filter.substring.token_chars.0", "digit") 
    ); 

Espérons que cela aide.

Questions connexes