2015-10-13 1 views
0

J'ai créé un analyseur personnalisé pour un index, et après sa mise en œuvre, lorsque je tente d'utiliser analyze pour voir si son travail ou non, il renvoie l'erreur suivante ElasticsearchIllegalArgumentException[failed to find analyzer [lyzer]]"ElasticSearch Impossible de trouver analyseur

je définissais la analyseur comme suit

post trial/settings 
{ 
    "index": { 
    "analysis": { 
     "tokenizer": { 
     "ngrm":{ 
      "type": "nGram", 
      "min_gram": "4", 
      "max_gram": "8" 
      } 
     }, 

    "filter": { 
    "myFilter": { 
     "type": "word_delimiter", 
     "generated_word_parts": "true", 
     "generated_number_parts": "true" 
    } 
    }, 

    "analyzer": { 
    "lyzer": { 
     "type": "custom", 
     "tokenizer": "ngrm", 
     "filter": ["word_delimiter","myFilter"] 
     } 
    } 
    } 

} 
} 

Lorsque je tente de vérifier si l'analyseur fonctionne ou non, je reçois l'erreur suivante

GET /trial/_analyze?analyzer=lyzer&text=some_random_text_here 
{ 


"error": "ElasticsearchIllegalArgumentException[failed to find analyzer [lyzer]]", 
    "status": 400 
} 

J'ai même essayé de mettre des cartographies et de déclarer l'analyseur là, mais en vain !!

Quelle autre approche dois-je essayer? ES est désespéré de ne pas trouver l'analyseur que j'ai défini !!

+0

Avez-vous essayé 'POST trial/_settings', c'est-à-dire avec un caractère de soulignement dans' _settings'? – Val

+0

juste fait, jette une autre erreur 'InvalidTypeNameException [nom de type de mappage [_settings] ne peut pas commencer par '_'];' Devinez je ne peux pas utiliser _, j'utilise Sense (et Marvel) – Sid

+1

Parce que [vous devez utiliser 'PUT'] (https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-update-settings.html#indices-update-settings), mon mauvais j'ai oublié de le mentionner dans mon précédent commentaire. – Val

Répondre

0

Essayé une approche différente, et cela a fonctionné (exclu les paramètres pour aller dans le corps). Voici comment ça se passe.

put trial 
{ 
    "settings" : { 
      "analysis" : { 
       "analyzer" : { 
        "lyzer" : { 
         "tokenizer" : "nizer" 
        } 
       }, 
       "tokenizer" : { 
        "nizer" : { 
         "type" : "nGram", 
         "min_gram" : "4", 
         "max_gram" : "8", 
               } 
       } 
      } 
     } 
} 

Merci à @val pour suggérer put. (post a fonctionné mais a créé l'index à chaque fois). En outre, sur ce cas, j'avais déjà un index, c'est pourquoi put travaillé.