2015-10-13 2 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' i.e с подчеркиванием в' _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 работал.

Смежные вопросы