すべてのプロダクト
Search
ドキュメントセンター

Elasticsearch:analysis-ik プラグインの使用

最終更新日:Nov 09, 2025

analysis-ik プラグインは、Alibaba Cloud Elasticsearch (ES) の中国語トークン化拡張機能です。直接使用できる、いくつかの組み込みのデフォルト辞書が含まれています。また、辞書を更新して analysis-ik プラグインのデフォルト辞書をカスタマイズしたり、新しい辞書を追加したりすることもできます。このプロセスにより、トークン化が最適化され、結果がシナリオにより適したものになります。analysis-ik プラグインは、Object Storage Service (OSS) からの辞書ファイルの動的ロードをサポートしており、リモート管理と運用効率の向上を実現します。このトピックでは、analysis-ik プラグインのトークン化ルールと辞書タイプについて説明し、辞書の更新方法とプラグインの使用方法を解説します。

背景情報

analysis-ik プラグインは、トークナイザー、辞書ファイル、辞書更新メカニズムの 3 つの主要コンポーネントで構成されています。

  • トークナイザー: 中国語のテキストを意味のある単語 (トークン) に分割し、トークン化の粒度を決定します。

  • 辞書ファイル: トークナイザーがトークン化に使用する語彙ベースを提供します。これらのファイルは拡張とカスタマイズをサポートしています。

  • 辞書更新メソッド: コールドアップデートとホットアップデートをサポートしています。これにより、必要に応じて辞書を柔軟に調整し、トークン化がビジネス要件を満たすようにできます。

トークン化ルール

analysis-ik プラグインは、次のトークン化ルールをサポートしています:

  • ik_max_word: テキストを最も細かい粒度で分割するため、term クエリに適しています。

  • ik_smart: テキストを粗い粒度で分割するトークナイザーで、フレーズクエリに適しています。

辞書タイプ

次の表に、analysis-ik プラグインでサポートされている辞書タイプを示します。

辞書タイプ

説明

辞書ファイルの要件

サポートされている更新メソッド

メイン辞書

デフォルトの組み込みメイン辞書は main.dic で、270,000 語以上の中国語の単語が含まれています。

ES インデックスを作成するときにメイン辞書を指定すると、クラスターはインデックスに書き込まれたデータをメイン辞書内の単語と照合します。その後、クラスターは一致した単語のインデックスを作成します。対応するキーワードを使用してインデックスを取得できます。

1 行に 1 単語、UTF-8 エンコードの DIC ファイルとして保存されます。

ストップワード辞書

デフォルトの組み込みストップワード辞書は stopword.dic です。これには、atheandatbut などの英語のストップワードが含まれています。

ES インデックスを作成するときにストップワード辞書を指定すると、クラスターはインデックスに書き込まれたデータをストップワード辞書内の単語と照合します。一致した単語はフィルターで除外され、転置インデックスには表示されません。

前置詞辞書

デフォルトの組み込み前置詞辞書は preposition.dic です。トークナイザーが前置詞を後続の単語から分割するのに役立つ前置詞を格納します。

該当なし

コールドアップデート

数量詞辞書

デフォルトの組み込み数量詞辞書は quantifier.dic です。トークナイザーが数量詞と名詞の組み合わせを識別するのに役立つ、単位関連の単語と数量詞を格納します。

suffix.dic

接尾辞を格納して、トークナイザーが接尾辞付きの単語を分割するのを助けます。

該当なし

更新はサポートされていません。

surname.dic

中国語の姓を格納して、トークナイザーが人名を認識するのを助けます。

辞書更新メソッド

デフォルトの辞書がビジネス要件を満たさない場合は、更新できます。analysis-ik プラグインは、次の辞書更新メソッドをサポートしています。

更新メソッド

説明

シナリオ

コールドアップデート

辞書の変更は、ES クラスターを再起動することで有効になります。このメソッドは、クラスター全体の辞書を更新します。

システムはアップロードされた辞書ファイルを ES ノードに送信し、ノードを再起動してファイルをロードします。再起動後、新しい構成が有効になります。

  • デフォルトの辞書ファイルを置き換えるか、デフォルトの辞書ファイルからコンテンツを削除します。

  • 前置詞または数量詞の辞書ファイルを更新します。

ホットアップデート

  • 既存の辞書のコンテンツのみが変更された場合、クラスターの再起動はトリガーされません。クラスターは実行時に新しい辞書を直接ロードして、動的更新を実装します。

  • 既存の辞書の名前または辞書ファイルのリストが変更された場合 (つまり、ファイルが追加または削除された場合)、クラスターの再起動がトリガーされ、辞書構成が再読み込みされます。再起動後、新しい構成が有効になります。

説明

メイン辞書とストップワード辞書のみ変更できます。

  • メイン辞書またはストップワード辞書ファイルを拡張します。これは、デフォルトのメイン辞書またはストップワード辞書に加えて、他の拡張辞書を追加する必要があることを意味します。

  • デフォルト辞書と拡張辞書を含む、既存のメイン辞書またはストップワード辞書ファイルの内容を変更します。

前提条件

  • インスタンスが正常なステータスであることを確認してください。インスタンスの [基本情報] ページで インスタンスのステータスを表示 できます。

    説明

    このトピックの操作は、Alibaba Cloud ES 7.10.0 インスタンスで実証されています。コンソールのインターフェイスとサポートされている機能は、バージョン によって異なる場合があります。実際のコンソールインターフェイスが優先されます。

  • (オプション) 辞書を更新するには、次のステップを完了する必要があります。

    • [OSS ファイルのアップロード] メソッドを使用して辞書を更新するには、まず OSS バケットを作成 し、必要な辞書ファイルを アップロード する必要があります。

    • [ローカルファイルのアップロード] メソッドを使用して更新するには、まず必要な辞書ファイルをコンピューターに保存します。

IK 辞書の更新

デフォルトの IK 辞書がビジネス要件を満たさない場合は、更新できます。更新する前に、対応する 更新メソッド をよく理解してください。IK トークン化で構成されたインデックスの場合、更新された辞書は、新しく追加および更新されたデータを含む新しいデータにのみ有効になります。更新をすべてのデータに適用したい場合は、インデックスを再作成する必要があります。

コールドアップデート

IK 辞書でコールドアップデートを実行するには、次の手順に従います:

警告

標準の更新はクラスターの再起動をトリガーします。ビジネスに影響が出ないように、オフピーク時に更新を実行することをお勧めします。

  1. analysis-ik プラグインのコールドアップデートページに移動します。

    1. 左側のナビゲーションウィンドウで、[設定と管理] > [プラグイン設定] を選択します。

    2. ビルトインプラグインリスト タブで、analysis-ik プラグインを見つけ、[アクション] 列の 標準アップグレード をクリックします。

  2. コールドアップデートを実行します。

    1. [IK 辞書設定 - コールドアップデート] ダイアログボックスで、更新する辞書を見つけて [編集] をクリックします。画面の指示に従って辞書ファイルをアップロードし、[保存] をクリックします。

      次のいずれかの方法で辞書ファイルをアップロードできます:

      • [ローカルファイルのアップロード]: image アイコンをクリックするか、ローカルファイルをドラッグしてアップロードします。

      • [OSS ファイルのアップロード]: バケット名と辞書ファイルの名前を入力します。次に、[追加] をクリックします。

        • バケットと Alibaba Cloud ES インスタンスは同じリージョンにある必要があります。

        • OSS 内の辞書ファイルの自動同期はサポートされていません。OSS 内のソース辞書ファイルの内容が変更された場合は、手動で IK 辞書の更新を実行して変更を適用する必要があります。

      説明
      • 各辞書タイプについて、DIC フォーマットのファイルを 1 つだけアップロードできます。アップロードされたファイルは既存のファイルを置き換えます。

      • ファイル名には .dic 拡張子が必要です。名前は最大 30 文字で、大文字、小文字、数字、アンダースコア (_) を含めることができます。

      • デフォルトの辞書ファイルを復元するには、ファイルをダウンロードして再度アップロードします。デフォルトの辞書ファイルを取得するには、以下をご参照ください:

    2. インスタンスを再起動するには、リスク通知のチェックボックスを選択し、[OK] をクリックします。

      ES インスタンスが再起動すると、辞書ファイルが更新されます。

  3. (オプション) 辞書が有効であることを確認します。

    1. Kibana コンソールにログオンします

    2. 左上隅の image アイコンをクリックし、[管理] > [開発ツール] を選択してコードエディタページを開きます。

      たとえば、次のコードを実行して、入力テキスト computer Chinese character input method を粗い粒度で分割します。

      説明

      このコードを使用するときは、text を辞書の単語に置き換えてください。

      GET _analyze
      {
        "analyzer": "ik_smart",
        "text": "computer Chinese character input method"
      }

      期待される結果は次のとおりです。

      {
        "tokens" : [
          {
            "token" : "computer",
            "start_offset" : 0,
            "end_offset" : 3,
            "type" : "CN_WORD",
            "position" : 0
          },
          {
            "token" : "Chinese character input",
            "start_offset" : 3,
            "end_offset" : 7,
            "type" : "CN_WORD",
            "position" : 1
          },
          {
            "token" : "method",
            "start_offset" : 7,
            "end_offset" : 9,
            "type" : "CN_WORD",
            "position" : 2
          }
        ]
      }

ホットアップデート

IK 辞書でホットアップデートを実行するには、次の手順に従います:

説明

ファイルの内容のみが変更された場合、クラスターの再起動は必要ありません。ファイルの数やファイル名を変更した場合は、クラスターを再起動する必要があります。ビジネスの中断を避けるため、この操作はオフピーク時に実行してください。再起動後、辞書は自動的に有効になります。

  1. analysis-ik プラグインのホットアップデートページに移動します。

    1. 左側のナビゲーションウィンドウで、[設定と管理] > [プラグイン設定] を選択します。

    2. ビルトインプラグインリスト タブの analysis-ik プラグインの [アクション] 列で、ローリングアップグレード をクリックします。

  2. ホットアップデートを実行します。

    1. [IK 辞書設定 - ホットアップデート] ダイアログボックスで、ターゲット辞書の [編集] をクリックします。画面の指示に従って辞書ファイルをアップロードし、[保存] をクリックします。

      次のいずれかの方法で辞書ファイルをアップロードできます:

      • [ローカルファイルのアップロード]: image アイコンをクリックするか、ローカルファイルをドラッグしてアップロードします。

      • [OSS ファイルのアップロード]: バケット名と辞書ファイルの名前を入力します。次に、[追加] をクリックします。

        • バケットと Alibaba Cloud ES インスタンスは同じリージョンにある必要があります。

        • OSS 内の辞書ファイルの自動同期はサポートされていません。OSS 内のソース辞書ファイルの内容が変更された場合は、手動で IK 辞書の更新を実行して変更を適用する必要があります。

      説明
      • 複数の辞書ファイルをアップロードできます。ファイル拡張子は .dic である必要があります。ファイル名には、大文字、小文字、数字、アンダースコア (_) を含めることができ、30 文字以下である必要があります。

      • アップロードされた辞書ファイルを変更するには、ファイルの右側にある 下载按钮 アイコンをクリックしてダウンロードし、変更します。次に、元のファイルを削除し、変更したバージョンをアップロードします。元のファイルを削除した後、[保存] をクリックする必要があります。そうしないと、変更したファイルをアップロードしようとすると、同じ名前のファイルが既に存在するというエラーメッセージが表示されます。

    2. [OK] をクリックし、辞書が ES ノードにロードされるのを待ちます。

      Alibaba Cloud ES ノードのプラグインは辞書ファイルを自動的にロードできますが、各ノードがファイルを取得するのにかかる時間は異なります。ファイルがロードされると、辞書が有効になります。このプロセスには時間がかかる場合があります。

  3. (オプション) 辞書が有効であることを確認します。

    1. Kibana コンソールにログオンします

    2. 左上隅の image アイコンをクリックし、[管理] > [開発ツール] を選択してコードエディタページを開きます。

      たとえば、次のコードを実行して、入力テキスト computer Chinese character input method を粗い粒度で分割します。

      説明

      このコードを使用するときは、text を辞書の単語に置き換えてください。

      GET _analyze
      {
        "analyzer": "ik_smart",
        "text": "computer Chinese character input method"
      }

      期待される結果は次のとおりです。

      {
        "tokens" : [
          {
            "token" : "computer",
            "start_offset" : 0,
            "end_offset" : 3,
            "type" : "CN_WORD",
            "position" : 0
          },
          {
            "token" : "Chinese character input",
            "start_offset" : 3,
            "end_offset" : 7,
            "type" : "CN_WORD",
            "position" : 1
          },
          {
            "token" : "method",
            "start_offset" : 7,
            "end_offset" : 9,
            "type" : "CN_WORD",
            "position" : 2
          }
        ]
      }

analysis-ik プラグインの使用

この例では、IK トークナイザーと Pinyin フィルターを使用して指定されたテキストをトークン化する方法を示します。

  1. ES インスタンスの Kibana 開発ツールページに移動します。

    1. Kibana コンソールにログオンします

    2. 左上隅の image アイコンをクリックし、[管理] > [開発ツール] を選択してコードエディタを開きます。

  2. インデックスを作成し、IK トークナイザーと Pinyin フィルターを構成します。

    [開発ツール] ページで、次のコマンドを実行して ik_pinyin インデックスと ik_pinyin_analyzer という名前のカスタムアナライザーを作成します。このアナライザーは、ik_max_word の詳細なトークン化ルールと Pinyin フィルターを使用して、中国語の単語を Pinyin に変換します。

    説明

    Pinyin フィルターは、中国語のトークン化が完了した後に実行されます。最初に中国語のテキストをトークン化し、次にトークン化の結果を Pinyin に変換して出力します。

    PUT ik_pinyin
    {
      "settings":{
        "analysis": {
          "filter": {
            "my_pinyin" : {
                "type" : "pinyin",
                "keep_separate_first_letter" : false,
                "keep_full_pinyin" : true,
                "keep_original" : true,
                "limit_first_letter_length" : 16,
                "lowercase" : true,
                "remove_duplicated_term" : true
              }
          },
          "analyzer": {
            "ik_pinyin_analyzer": {
              "type": "custom",
              "tokenizer": "ik_max_word",
              "filter": ["my_pinyin"]
            }
          }
        }
      },
      "mappings":{
        "properties":{
          "text":{
            "type" : "text",
            "analyzer" : "ik_pinyin_analyzer"
          }
        }
      }
    }

    コアパラメーターは次のように説明されます:

    • Pinyin フィルター (filter)

      説明

      Pinyin 分析プラグインの構成の詳細については、「Pinyin Analysis for Elasticsearch」をご参照ください。

      パラメーター

      説明

      my_pinyin

      定義する Pinyin フィルターの名前。

      type

      Pinyin フィルターを指定するには pinyin に設定します。

      keep_separate_first_letter

      各文字の最初の文字を保持しないようにするには false に設定します。

      keep_full_pinyin

      完全な Pinyin を保持するには true に設定します。

      keep_original

      元の入力テキストを保持するには true に設定します。

      limit_first_letter_length

      最初の文字の長さを最大 16 文字に制限するには 16 に設定します。

      lowercase

      出力 Pinyin に小文字を使用するには true に設定します。

      remove_duplicated_term

      重複する term を削除するには true に設定します。たとえば、これにより "zh, zh" のような結果を回避できます。

    • アナライザー (analyzer):

      パラメーター

      説明

      ik_pinyin_analyzer

      定義するアナライザーの名前。

      type

      カスタムアナライザーを指定するには custom に設定します。

      tokenizer

      テキストを最も細かい粒度で分割するには ik_max_word に設定します。

      filter

      my_pinyin Pinyin フィルターを呼び出すには my_pinyin に設定します。

      次の結果が返され、インデックスが正常に作成されたことを示します。image

  3. トークン化の結果を確認します。

    次のコードを実行して、入力テキスト This is a test をトークン化できます。

    GET ik_pinyin/_analyze
    {
      "text": "This is a test",
      "analyzer": "ik_pinyin_analyzer"
    }

    期待される結果は次のとおりです。

    {
      "tokens" : [
        {
          "token" : "zhe",
          "start_offset" : 0,
          "end_offset" : 2,
          "type" : "CN_WORD",
          "position" : 0
        },
        {
          "token" : "This is",
          "start_offset" : 0,
          "end_offset" : 2,
          "type" : "CN_WORD",
          "position" : 0
        },
        {
          "token" : "zs",
          "start_offset" : 0,
          "end_offset" : 2,
          "type" : "CN_WORD",
          "position" : 0
        },
        {
          "token" : "shi",
          "start_offset" : 0,
          "end_offset" : 2,
          "type" : "CN_WORD",
          "position" : 1
        },
        {
          "token" : "ge",
          "start_offset" : 2,
          "end_offset" : 3,
          "type" : "CN_CHAR",
          "position" : 2
        },
        {
          "token" : "a",
          "start_offset" : 2,
          "end_offset" : 3,
          "type" : "CN_CHAR",
          "position" : 2
        },
        {
          "token" : "g",
          "start_offset" : 2,
          "end_offset" : 3,
          "type" : "CN_CHAR",
          "position" : 2
        },
        {
          "token" : "ce",
          "start_offset" : 3,
          "end_offset" : 5,
          "type" : "CN_WORD",
          "position" : 3
        },
        {
          "token" : "shi",
          "start_offset" : 3,
          "end_offset" : 5,
          "type" : "CN_WORD",
          "position" : 4
        },
        {
          "token" : "test",
          "start_offset" : 3,
          "end_offset" : 5,
          "type" : "CN_WORD",
          "position" : 4
        },
        {
          "token" : "cs",
          "start_offset" : 3,
          "end_offset" : 5,
          "type" : "CN_WORD",
          "position" : 4
        }
      ]
    }
    

リファレンス