OpenSearch は、シンプルなデータ変換のためのいくつかのデータ処理プラグインを提供しています。このトピックでは、これらのデータソースプラグインについて説明します。
概要
API、SDK、またはアップロードインターフェイスを使用して、OpenSearch にデータをインポートできます。また、ApsaraDB データベースから直接データを同期することも可能です。API または SDK を使用してデータをアップロードする場合、API リファレンスに従ってデータを直接アップロードします。この方法では、このトピックで説明されているプラグイン構成はサポートされておらず、データをプッシュする前にデータを処理する必要があります。クラウドデータベースからデータを同期する場合、コンソールでデータソース情報を構成できます。フィールドマッピングを構成する際に、シンプルな変換のためにデータ処理プラグインを使用できます。
OpenSearch テーブルは、シャーディングシナリオのように、複数の RDS および PolarDB ソーステーブルをサポートできます。ただし、構成できる ODPS ソースは 1 つだけです。複数の ODPS ソーステーブルが必要な場合は、インポートする前にデータを単一テーブルにマージする必要があります。
データ処理プラグイン
一部の検索機能または関数には、特別なフィールドタイプが必要です。たとえば、配列タイプのフィールドは、以下のプラグインを使用して変換する必要があります。これらを直接入力することはできません。
これらのプラグインは、アプリケーションスキーマを定義する際ではなく、データソース構成中に構成します。プラグインは、データソースを構成した後にのみ設定できます。
|
構成項目名 |
説明 |
例 |
|
JsonKeyValueExtractor |
JSON 形式のソースフィールドから指定されたキーの値を抽出します。抽出された値は、送信先フィールドのコンテンツになります。抽出できるキーの値は 1 つだけです。 |
`{"title":"the content","body":"the content"}` から `title` キーの値を抽出します。値が JSON 配列の場合、配列タイプのフィールドのコンテンツに変換されます。抽出された値のデータの型が送信先フィールドのデータの型と一致することを確認する必要があります。データの型が一致しない場合、データは失われます。JSON 配列形式は OpenSearch によって定義されます。たとえば、`literal_array` フィールドタイプの場合、形式は `{"tags":["a","b","c"]}` です。`int_array` フィールドタイプの場合、形式は `{"tags":[1,2,3]}` です。 |
|
MultiValueSplitter |
指定された区切り文字に基づいて、ソースフィールドのコンテンツを複数の値に分割します。分割された値は、送信先フィールドのコンテンツとして使用されます。送信先フィールドは ARRAY タイプである必要があります。区切り文字が非表示文字の場合、`\u001D` のような Unicode 文字を使用して表現する必要があります。 |
ソースフィールドに `1,2,3` が含まれている場合、カンマ (`,`) を区切り文字として指定できます。 |
|
KeyValueExtractor |
キーと値 (KV) 形式のソースフィールドから指定されたキーの値を抽出します。抽出された値は、送信先フィールドのコンテンツとして使用されます。抽出できるキーの値は 1 つだけです。区切り文字を指定するためのパラメーターはオプションです。 |
たとえば、ソースフィールドに `key1:value1,value2;key2:value3` が含まれているとします。この例では、キー区切り文字はセミコロン (;) で、キーと値の区切り文字はコロン (:) で、複数値区切り文字はカンマ (,) です。複数値区切り文字が構成されている場合、抽出された値は配列タイプのフィールドのコンテンツに変換されます。抽出された値のデータの型が送信先フィールドのデータの型と一致することを確認する必要があります。データの型が一致しない場合、データは失われます。ソースフィールドに重複するキーが含まれている場合、最後のキーの値のみが抽出されます。 |
|
StringConcatenateExtractor |
複数の指定されたフィールドの値を指定された順序で単一の文字列に連結します。このプラグインは int タイプのフィールドをサポートしていません。代わりに literal タイプのフィールドを使用する必要があります。リスト内のフィールドはカンマで区切る必要があります。指定されたフィールドは送信先フィールドである必要があります。 |
たとえば、`field1` と `field2` の値をアンダースコア (_) で連結して、新しいフィールドのコンテンツを形成できます。さらに、システム変数 `$table` を使用して現在のテーブル名を取得できます。`$table` 変数は、テーブルシャーディングのワイルドカードが構成されている場合にのみ使用できます。 |
|
HTMLTagRemover |
ソースフィールドのコンテンツから HTML タグを削除します。HTML タグのないコンテンツは送信先フィールドにコピーされます。ソースフィールドが送信先フィールドでもある場合、その元のコンテンツは置き換えられます。 |
このプラグインは、テキスト `<div id="copyright">OpenSearch</div>` を解析し、「OpenSearch」を抽出します。 |
ベストプラクティスについては、「MultiValueSplitter プラグイン設定」をご参照ください。