2015-10-13 120 views
0

我已经创建了索引的定制分析,并实施之后,当我尝试使用analyze,看其是否工作或没有,它返回以下错误ElasticsearchIllegalArgumentException[failed to find analyzer [lyzer]]"Elasticsearch无法找到分析

我所定义的分析如下

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"] 
     } 
    } 
    } 

} 
} 

当我尝试以验证分析仪工作或没有,我得到以下错误

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


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

我甚至试图把映射,并宣布分析器,但徒劳无功!

我还有什么其他方法可以尝试? ES绝望地找不到我定义的分析仪!

+0

您是否尝试过'POST trial/_settings',即在'_settings'中带有下划线? – Val

+0

只是做了,抛出另一个错误 'InvalidTypeNameException [映射类型名称[_settings]不能以'_']开头;' 猜测我不能使用_,我正在使用Sense(和Marvel) – Sid

+1

因为[你需要使用'PUT'](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-update-settings.html#indices-update-settings),我不好意思,我忘了在我之前提到它评论。 – Val

回答

0

尝试了一种不同的方法,它的工作(排除设置去在身体)。这是怎么回事。

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

感谢@Val建议put。 (post没有工作,但每次创建索引)。此外,在这种情况下,我已经有一个索引,这就是为什么put工作。