はじめに
今月2024年12月についにElastic Cloud ServerlessがGAになりました。
気になる検索における日本語の形態素解析の利用可否ですが、Kuromojiプラグインがサポートされています。(こちら、ドキュメントには近いうちに明記されるはずです)
(ただし、カスタムプラグインの利用はできないことがドキュメントに記載されています。)
本記事では、KuromojiプラグインがServerlessで使える様子を記します。
(従来からある)Elastic Cloud Hostedの場合
従来からのElastic Cloud Hostedの場合の動作をまず確認し、その後Serverlessで同じ結果となることを確認したいと思います。
Hostedの場合、Elatic Cloudのデプロイメントの設定画面から以下のようにanalysis-kuromojiを有効にします。
その後、以下の簡単なKuromojiを使うIndexを作成し、テストデータを1件投入します。
PUT /japanese_index
{
"settings": {
"index": {
"analysis": {
"analyzer": {
"kuromoji_analyzer": {
"tokenizer": "kuromoji_tokenizer",
"filter": [
"kuromoji_baseform",
"kuromoji_part_of_speech",
"ja_stop"
]
}
}
}
}
}
}
PUT /japanese_index/_mapping
{
"properties": {
"content": {
"type": "text",
"analyzer": "kuromoji_analyzer"
}
}
}
POST /japanese_index/_doc
{
"content": "東京都に行きました。"
}
POST /japanese_index/_analyze
{
"analyzer": "kuromoji_analyzer",
"text": "東京都に行きました。"
}
"東京都"で検索するとヒットします。
GET /japanese_index/_search
{
"query": {
"match": {
"content": "東京都"
}
}
}
結果
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 1,
"relation": "eq"
},
"max_score": 0.5753642,
"hits": [
{
"_index": "japanese_index",
"_id": "f_R7-5MBQGL-gt3N-cE2",
"_score": 0.5753642,
"_source": {
"content": "東京都に行きました。"
}
}
]
}
}
"東都"で検索するとヒットしません。
GET /japanese_index/_search
{
"query": {
"match": {
"content": "東都"
}
}
}
結果
{
"took": 0,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 0,
"relation": "eq"
},
"max_score": null,
"hits": []
}
}
参考までに、Kuromojiを使っていないIndexの場合は、"東都"でもヒットしてしまいます。("東京都"もヒットはします)
GET /english_index/_search
{
"query": {
"match": {
"content": "東都"
}
}
}
結果
{
"took": 0,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 1,
"relation": "eq"
},
"max_score": 0.5753642,
"hits": [
{
"_index": "english_index",
"_id": "nvSG-5MBQGL-gt3NBfx9",
"_score": 0.5753642,
"_source": {
"content": "東京都に行きました。"
}
}
]
}
}
(新)Elastic Cloud Serverlessの場合
Serverlessの場合、プラグインの有効化はユーザー側で操作はできませんが、KuromojiとICUは有効済となっています。
そのままAPIからKuromojiを使うことができました。さきほどと同様のAPIを入れた結果、検索結果も同じ結果であることが確認できました。
おわり
Elastic Cloud ServerlessでKuromojiが使えることを確認しました!