Elasticsearch无法找到分析器

时间:2015-10-13 13:42:46

标签: elasticsearch analyzer

我为索引创建了一个自定义分析器,在实现它之后,当我尝试使用analyze来查看它是否正常工作时,它会返回以下错误ElasticsearchIllegalArgumentException[failed to find analyzer [lyzer]]"

我将分析仪定义如下

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迫切希望找不到我定义的分析仪!!

1 个答案:

答案 0 :(得分:0)

尝试了一种不同的方法,并且它有效(排除设置进入体内)。这是怎么回事。

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

感谢@Val建议put。 (post确实有效但每次都创建了索引。此外,在这种情况下,我已经有一个索引,这就是put工作的原因。