Index作成時のanalyzerの指定について

node.jsのrequestモジュールからElasticsearch Service上のESインスタンスのエンドポイントURLへ以下のJsonをPUTした際に、400エラーになります。authの入れ方が悪いとかでしょうか?

request.put({
url: ${this.esUrl + '/' + indexName},
headers: {
'Content-type': 'application/json',
},
auth: {
user: 'elastic',
password: 'password',
},
json: {
settings: {
analysis: {
analyzer: {
my_kuromoji_analyzer: {
type: 'custom',
tokenizer: 'ja_tokenizer',
},
},
tokenizer: {
ja_tokenizer: {
type: 'kuromoji_tokenizer',
mode: 'normal',
},
},
},
},
mappings: {
data: {
properties: this.esMappings,
},
},
},
})

以下、エラーログです。

{ StatusCodeError: 400 - {"error":{"root_cause":[{"type":"remote_transport_exception","reason":"[instance-0000000000][172.17.0.16:19950][indices:admin/create]"}],"type":"illegal_argument_exception","reason":"Unknown tokenizer type [kuromoji_tokenizer] for [ja_tokenizer]"},"status":400}

こんにちわ

エラーログを見ますと、kuromoji_tokenizerが無いと書かれています。
おそらく、Elasticsearchクラスタを作成するときにプラグインの設定箇所でkuromojiを選択されなかったのではないでしょうか?

クラスタの作成画面や編集画面の中ほどに、「Elasticsearcfh plugins and settings」があるので、
そこでanalysis-kuromojiにチェックをいれて保存してくてみてください。

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.