0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Elastic Stack (Elasticsearch)Advent Calendar 2024

Day 25

Elastic Cloud ServerlessでKuromojiが使えることを確認しました

Posted at

はじめに

今月2024年12月についにElastic Cloud ServerlessがGAになりました。
気になる検索における日本語の形態素解析の利用可否ですが、Kuromojiプラグインがサポートされています。(こちら、ドキュメントには近いうちに明記されるはずです)
(ただし、カスタムプラグインの利用はできないことがドキュメントに記載されています。)

本記事では、KuromojiプラグインがServerlessで使える様子を記します。

(従来からある)Elastic Cloud Hostedの場合

従来からのElastic Cloud Hostedの場合の動作をまず確認し、その後Serverlessで同じ結果となることを確認したいと思います。

Hostedの場合、Elatic Cloudのデプロイメントの設定画面から以下のようにanalysis-kuromojiを有効にします。
image.png

その後、以下の簡単な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を入れた結果、検索結果も同じ結果であることが確認できました。

"東京都"でヒット
image.png

"東都"でヒットしない
image.png

おわり

Elastic Cloud ServerlessでKuromojiが使えることを確認しました!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?