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

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

最終更新日:Aug 08, 2026

AliNLP 形態素解析プラグイン(別名 analysis-aliws)は、Alibaba Cloud Elasticsearch のビルトインプラグインです。このプラグインを Elasticsearch クラスターにインストールすると、アナライザとトークナイザーがクラスターに統合され、ドキュメントの分析および取得を実現します。また、このプラグインにはカスタム辞書ファイルをアップロードできます。アップロード後、システムはご利用の Elasticsearch クラスターに対してローリングアップデートを実行し、辞書ファイルを適用します。

概要

analysis-aliws プラグインをインストールすると、以下のアナライザおよびトークナイザーがデフォルトでご利用の Elasticsearch クラスターに統合されます。これらのアナライザおよびトークナイザーを使用してドキュメントを検索できます。また、プラグインにカスタム辞書ファイルをアップロードすることも可能です。

  • アナライザ:aliws アナライザは、機能語、フレーズ、および記号を保持します。また、すべての大文字英字を小文字に変換します。

  • トークナイザー:aliws_tokenizer

説明

前提条件

analysis-aliws プラグインがインストールされている必要があります。このプラグインはデフォルトではインストールされていません。プラグインのインストール方法の詳細については、「ビルトインプラグインのインストールおよびアンインストール」をご参照ください。

analysis-aliws プラグインのインストールまたはアンインストールは、クラスターのローリングリスタートをトリガーします。ノードは 1 つずつ再起動され、再起動中はクラスターステータスが green から yellow に変化します。このプロセス中もクラスターは利用可能ですが、残りの正常なノードへの負荷が増加し、パフォーマンスに影響が出る可能性があります。オフピーク時間帯にこの操作を実行することを推奨します。

制限事項

  • ご利用の Elasticsearch クラスターのデータノードのメモリサイズは 8 GiB 以上である必要があります。クラスターのデータノードのメモリサイズが要件を満たしていない場合は、クラスターの構成をスペックアップしてください。詳細については、「クラスター構成のスペックアップ」をご参照ください。

  • Elasticsearch V5.X クラスター、Elasticsearch V8.X クラスター、および Elasticsearch Kernel-enhanced Edition クラスターは analysis-aliws プラグインをサポートしていません。ご利用のクラスターがプラグインをサポートしているかどうかは、Elasticsearch コンソールで確認できます。

aliws アナライザを使用したドキュメント検索

  1. ご利用の Elasticsearch クラスターの Kibana コンソールにログインします。

    手順については、「Kibana コンソールへのログイン」をご参照ください。

    説明

    ここでの例は Elasticsearch V6.7.0 を使用しています。他のバージョンでは操作が若干異なる場合があります。

  2. 左側のナビゲーションメニューで、Management > Dev Tools を選択します。

  3. Console で、次のいずれかのコマンドを実行してインデックスを作成します。

    • Elasticsearch クラスター V7.0 より前のバージョン用コマンド

      PUT /index
      {
         "mappings": {
              "fulltext": {
                  "properties": {
                      "content": {
                          "type": "text",
                          "analyzer": "aliws"
                      }
                  }
              }
          }
      }
    • Elasticsearch クラスター V7.0 以降用コマンド

      PUT /index
      {
        "mappings": {
          "properties": {
              "content": {
                  "type": "text",
                  "analyzer": "aliws"
                }
            }
        }
      }

    この例では、index という名前のインデックスを作成します。V7.0 より前のバージョンでは、インデックスのタイプは fulltext です。V7.0 以降では、インデックスのタイプは _doc です。インデックスには content プロパティが含まれます。プロパティのタイプは text です。また、aliws アナライザがインデックスに追加されています。

    コマンドが正常に実行された場合、次の結果が返されます。

    {
      "acknowledged": true,
      "shards_acknowledged": true,
      "index": "index"
    }
  4. 次のコマンドを実行してドキュメントを追加します。

    重要

    次のコマンドは、Elasticsearch クラスター V7.0 より前のバージョンでのみ使用できます。Elasticsearch クラスター V7.0 以降では、fulltext_doc に変更する必要があります。

    POST /index/fulltext/1
    {
      "content": "I like go to school."
    }

    上記のコマンドにより、1 という名前のドキュメントが追加され、ドキュメント内の content フィールドの値が I like go to school. に設定されます。

    コマンドが正常に実行された場合、次の結果が返されます。

    {
      "_index": "index",
      "_type": "fulltext",
      "_id": "1",
      "_version": 1,
      "result": "created",
      "_shards": {
        "total": 2,
        "successful": 2,
        "failed": 0
      },
      "_seq_no": 0,
      "_primary_term": 1
    }
  5. 次のコマンドを実行してドキュメントを検索します。

    重要

    次のコマンドは、Elasticsearch クラスター V7.0 より前のバージョンでのみ使用できます。Elasticsearch クラスター V7.0 以降では、fulltext_doc に変更する必要があります。

    GET /index/fulltext/_search
    {
      "query": {
        "match": {
          "content": "school"
        }
      }
    }

    上記のコマンドは、aliws アナライザを使用して fulltext タイプのすべてのドキュメントを分析し、content フィールドに school を含むドキュメントを返します。

    コマンドが正常に実行された場合、次の結果が返されます。

    {
      "took": 5,
      "timed_out": false,
      "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
      },
      "hits": {
        "total": 1,
        "max_score": 0.2876821,
        "hits": [
          {
            "_index": "index",
            "_type": "fulltext",
            "_id": "2",
            "_score": 0.2876821,
            "_source": {
              "content": "I like go to school."
            }
          }
        ]
      }
    }
説明

analysis-aliws プラグインを使用しても期待どおりの結果が得られない場合は、「アナライザのテスト」および「トークナイザーのテスト」の手順に従ってトラブルシューティングを行ってください。

辞書の設定

analysis-aliws プラグインでは、aliws_ext_dict.txt という名前のカスタム辞書ファイルをアップロードできます。カスタム辞書ファイルをアップロードすると、ご利用の Elasticsearch クラスターのすべてのノードが自動的にそのファイルをロードします。この場合、システムはクラスターを再起動しません。

説明
  • analysis-aliws プラグインをインストールした直後は、辞書ファイルは提供されません。カスタム辞書ファイルを手動でアップロードする必要があります。

  • カスタム辞書ファイルをアップロードする前に、辞書ファイルが次の要件を満たしていることを確認してください。

    • ファイル名:aliws_ext_dict.txt

    • エンコード形式:UTF-8

    • 内容:各行には先頭および末尾に空白文字を含まない単一の単語を記述する必要があります。改行コードは UNIX または Linux 形式(改行文字 \n)を使用してください。Windows 環境で作成したファイルをアップロードする場合は、Linux マシン上で dos2unix などのツールを使用して変換する必要があります。

  1. Alibaba Cloud Elasticsearch コンソール にログインします。

  2. 左側のナビゲーションメニューで、Elasticsearch クラスター を選択します。

  3. 対象のクラスターに移動します。

    1. 上部のナビゲーションバーで、クラスターが属するリソースグループおよびクラスターが配置されているリージョンを選択します。

    2. Elasticsearch クラスター ページで、対象のクラスターを見つけ、その ID をクリックします。

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

  5. ビルトインプラグインリスト タブで、analysis-aliws プラグインを見つけ、Actions 列の 辞書設定 をクリックします。

  6. 辞書設定 パネルの下部で、設定 をクリックします。

  7. 辞書ファイルのアップロード方法を選択し、次の手順に従って辞書ファイルをアップロードします。

    • TXT ファイルTXT ファイルのアップロード をクリックし、ローカルマシンから辞書ファイルを選択します。

    • OSS ファイルの追加:バケット名とオブジェクト名を入力し、追加 をクリックします。

      指定するバケットが Elasticsearch クラスターと同じリージョンに配置されていることを確認してください。Object Storage Service (OSS) に保存されている辞書の内容が変更された場合は、再度辞書ファイルをアップロードする必要があります。

    説明

    analysis-aliws では辞書ファイルを 1 つのみアップロードできます。辞書ファイルを更新したい場合は、辞書ファイル名 aliws_ext_dict.txt の横にある x をクリックして辞書ファイルを削除し、新しい辞書ファイルをアップロードしてください。

  8. Save をクリックします。

    システムはクラスターを再起動せず、アップロードされた辞書ファイルを有効にするためにローリングアップデートを実行します。アップデートには約 10 分かかります。

    説明

    アップロード済みの辞書ファイルをダウンロードする場合は、対応するファイルの横にある 下载按钮 アイコンをクリックします。

アナライザのテスト

次のコマンドを実行して aliws アナライザをテストします。

GET _analyze
{
  "text": "I like go to school.",
  "analyzer": "aliws"
}

コマンドが正常に実行された場合、次の結果が返されます。

{
  "tokens" : [
    {
      "token" : "i",
      "start_offset" : 0,
      "end_offset" : 1,
      "type" : "word",
      "position" : 0
    },
    {
      "token" : "like",
      "start_offset" : 2,
      "end_offset" : 6,
      "type" : "word",
      "position" : 2
    },
    {
      "token" : "go",
      "start_offset" : 7,
      "end_offset" : 9,
      "type" : "word",
      "position" : 4
    },
    {
      "token" : "school",
      "start_offset" : 13,
      "end_offset" : 19,
      "type" : "word",
      "position" : 8
    }
  ]
}

トークナイザーのテスト

次のコマンドを実行して aliws_tokenizer トークナイザーをテストします。

GET _analyze
{
  "text": "I like go to school.",
  "tokenizer": "aliws_tokenizer"
}

コマンドが正常に実行された場合、次の結果が返されます。

{
  "tokens" : [
    {
      "token" : "I",
      "start_offset" : 0,
      "end_offset" : 1,
      "type" : "word",
      "position" : 0
    },
    {
      "token" : " ",
      "start_offset" : 1,
      "end_offset" : 2,
      "type" : "word",
      "position" : 1
    },
    {
      "token" : "like",
      "start_offset" : 2,
      "end_offset" : 6,
      "type" : "word",
      "position" : 2
    },
    {
      "token" : " ",
      "start_offset" : 6,
      "end_offset" : 7,
      "type" : "word",
      "position" : 3
    },
    {
      "token" : "go",
      "start_offset" : 7,
      "end_offset" : 9,
      "type" : "word",
      "position" : 4
    },
    {
      "token" : " ",
      "start_offset" : 9,
      "end_offset" : 10,
      "type" : "word",
      "position" : 5
    },
    {
      "token" : "to",
      "start_offset" : 10,
      "end_offset" : 12,
      "type" : "word",
      "position" : 6
    },
    {
      "token" : " ",
      "start_offset" : 12,
      "end_offset" : 13,
      "type" : "word",
      "position" : 7
    },
    {
      "token" : "school",
      "start_offset" : 13,
      "end_offset" : 19,
      "type" : "word",
      "position" : 8
    },
    {
      "token" : ".",
      "start_offset" : 19,
      "end_offset" : 20,
      "type" : "word",
      "position" : 9
    }
  ]
}

トークナイザーのカスタマイズ

  • analysis-aliws プラグインによる形態素解析後に、stemmer、lowercase、porter_stem、stop などのフィルターがデータに対して関連操作を実行します。これらのフィルターをカスタムトークナイザーで使用したい場合は、analysis-aliws プラグインのトークナイザー aliws_tokenizer をカスタムトークナイザーに追加し、ビジネス要件に基づいてフィルター構成を追加できます。次のコードはその例です。stopwords フィールドを使用してストップワードを設定できます。

    PUT my-index-000001
    {
      "settings": {
        "analysis": {
         "filter": {
          "my_stop": {
           "type": "stop",
           "stopwords": [
            " ",
            ",",
            ".",
            " ",
            "a",
            "of"
           ]
          }
         },
         "analyzer": {
          "my_custom_analyzer": {
           "type": "custom",
           "tokenizer": "aliws_tokenizer",
           "filter": [
            "lowercase",
            "porter_stem",
            "my_stop"
           ]
          }
         }
        }
        }
    }
    説明

    特定のフィルターが不要な場合は、そのフィルター構成を削除できます。

  • aliws_tokenizer では、類義語を使用してカスタムトークナイザーを設定できます。設定方法は analysis-ik プラグインの場合と同じです。詳細については、「類義語の使用」をご参照ください。

よくある質問

  • aliws アナライザは、形態素解析中に単語の末尾文字を削除することがあります。例えば、iPhone および Chinese をトークン化すると、末尾の e が削除され、Iphon および chines が返されます。

    • 原因:デフォルトの aliws アナライザは、形態素解析後にステミングフィルターを適用し、単語の末尾の e などの文字を削除します。

    • 解決策: 次のコマンドを実行します。このコマンドでは、my_custom_analyzer フィールドが分析構成部分で指定され、フィルター構成部分は削除されています。

      PUT my-index1
      {
          "settings": {
              "number_of_shards": 1,
              "analysis": {
                  "analyzer": {
                      "my_custom_analyzer": {
                          "type": "custom",
                          "tokenizer": "aliws_tokenizer"
                      }
                  }
              }
          }
      }
    • 検証:次のコマンドを実行して、形態素解析結果が期待どおりであるか確認します。

      GET my-index1/_analyze
      {
          "analyzer": "my_custom_analyzer",
          "text": ["iphone"]
      }

参照

  • Alibaba Cloud Elasticsearch で提供されるプラグインの詳細については、「プラグインの概要」をご参照ください。

  • API オペレーションを呼び出してビルトインプラグインをインストールする方法については、「InstallSystemPlugin」をご参照ください。

  • API オペレーションを呼び出して analysis-aliws プラグインの辞書ファイルを更新する方法については、「UpdateAliwsDict」をご参照ください。

  • API オペレーションを呼び出して Elasticsearch クラスターにインストールされているプラグインを取得する方法については、「ListPlugins」をご参照ください。