Elastic Cloudでkuromojiを使うための設定方法
インデックスを作成してからでないと設定ができないようで、ポイントはインデックスを一度Closeしてからでないと400エラーが返ってきて設定できないこと。Index Management画面で「Edit Setting」でSaveを押して無反応(ブラウザコンソールに400エラーが出ている)となって保存できない。
各設定画面はこちらの案内図を参照してくれ。
①ICUとKuromojiプラグインをオンに
Kibanaではなく、Elastic CloudのDeployment画面まで戻って、Edit画面のElasticsearchの右上にある「Edit user settings and plugins」からICUとKuromojiの2プラグインを追加する。
②インデックスをCloseする
インデックスがON(検索できる状態?)のままでは設定変更ができない(400エラーが返ってくる)ため、Index Management画面で一度Closeする。
You can only define new analyzers on closed indices.
To add an analyzer, you must close the index, define the analyzer, and reopen the index.
https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-update-settings.html
③Kuromojiの設定をPUT
Dev Toolsから
Dev Tools(もしくはDeployment画面のAPI Console)から設定をPUT。
PUT your-index-name
{
"settings": {
"index": {
"analysis": {
"analyzer": {
"kuromoji_normalize": {
"char_filter": [
"icu_normalizer"
],
"tokenizer": "kuromoji_tokenizer",
"filter": [
"kuromoji_baseform",
"kuromoji_part_of_speech",
"cjk_width",
"ja_stop",
"kuromoji_stemmer",
"lowercase"
]
}
}
}
}
}
}
設定内容は以下の公式のもの。
こちらの公式ブログも参考になるかもしれない(ただし1つのユースケース用にuser_dictionary_rule
やsynonim
の個別設定がされたJSONなので注意)
Index Management画面から
IndexをCloseしたあと、そのままEdit Settingsで設定する方法もある。Dev Toolsを使用した時に「already exist」とエラーで設定できない場合があったので、以下を追記するとうまくいったようだ。
"index.analysis.analyzer.kuromoji_normalize.char_filter": [
"icu_normalizer"
],
"index.analysis.analyzer.kuromoji_normalize.tokenizer":"kuromoji_tokenizer",
"index.analysis.analyzer.kuromoji_normalize.filter": [
"kuromoji_baseform",
"kuromoji_part_of_speech",
"cjk_width",
"ja_stop",
"kuromoji_stemmer",
"lowercase"
]
Saveを押してもSuccessfullyと出ず何も怒らない場合は、ブラウザのConsoleにエラーメッセージが表示されている(画面上で表示してくれメンス)。
④インデックスをONに戻す
ONに戻すだけで適用される‥はず。Settingsで確かにkuromojiの設定が適用されていることが確認できる。
RefreshやFlush,Freezeなどいろんな操作があるがこれはanalyzerの設定反映には関係しないよう。
これでうまくいくはず。注意点としてDiscover画面で検索したものは実際の検索結果とは違うようなので、Reactivesearchなどを使って自前の検索UIを準備して確認するか、Dev Tools(API Console)でGET your-index-name/_search
を使って確かめてみるしかないみたい。
まとめ
Elasticさん、初見殺しすぎ。
Discussion