このトピックでは、ARRAY 型のデータのシナリオ、データプッシュ方法、および検索構文について説明します。
シナリオ
ARRAY 型は、同じデータ型の要素のグループを含むデータ構造の型です。配列内の各要素に基づいて個別に検索を実行できます。たとえば、小説には「ミステリー」、「タイムトラベル」、「古典」などのタグが含まれています。「ミステリー」を検索することで小説を見つけることができます。
ARRAY 型のデータをプッシュするにはどうすればよいですか?
OpenSearch は、ARRAY 型のデータをプッシュするための複数の方法を提供します。次の例では、さまざまな方法を使用してデータをプッシュする方法について説明します。
API 操作の呼び出し
ARRAY 型のデータは、JsonArray 形式でアップロードする必要があります。例:
[
{
"fields": {
"id": "0",
"int_array": [
14,
85
],
"float_array": [
14.0,
85.0
],
"literal_array": [
"abc",
"xyz"
]
},
"cmd": "ADD"
}
]
データをアップロードするために呼び出すことができる操作の詳細については、『開発者ガイド』の「トラフィック API リファレンス」>「アプリケーション関連 API 操作」>データの処理を参照してください。
SDK の使用
データプッシュのデモコードトピックで、OpenSearch SDK for Java を使用してデータをプッシュする手順を参照できます。他のプログラミング言語の SDK を使用してデータをプッシュするプロセスも同様です。
データソースの設定
データソースを設定する場合、さまざまな形式のソースデータを解析できます。ARRAY 型のフィールドが定義されている場合は、MultiValueSpliter プラグインをフィールドに関連付け、区切り文字を指定してフィールドの値を区切ることができます。たとえば、このトピックの「シナリオ」セクションで説明されているタグは、「タイムトラベル、ミステリー、ロマンス」の形式で解析されます。この場合、次の図に示すように、区切り文字をカンマ(,)に設定します。プラグインは、データベース内のフィールドを ARRAY 型の値に自動的に変換するため、検索エンジンで値を認識できます。詳細については、データ処理プラグインの使用を参照してください。
ARRAY 型のデータを取得する方法と実現できる効果
クエリ句またはフィルター句を使用して、配列の各要素に基づいて個別に検索を実行できます。たとえば、query=tags:'Time-travel'
を使用して、タイムトラベル、ミステリー、ロマンスなどのタグを含むドキュメントを検索できます。また、query=title:'Treading On Thin Ice'&&filter=tags="Time-travel"
を使用して、「タイムトラベル」タグを含む「Treading On Thin Ice」という名前の小説を検索することもできます。
文字列ではなく配列である ARRAY 型検索の戻り値に注意してください。戻り値は '\t' で区切られます。
FAQ
Q1:TEXT_ARRAY 型が使用できないのはなぜですか?また、TEXT 型と STRING_ARRAY 型の違いは何ですか?
A:TEXT 型には、TEXT、SHORT_TEXT、NWS_TEXT、および MWS_TEXT 型が含まれます。TEXT 型のフィールドには分析プロセスが含まれます。TEXT 型はあいまい一致をサポートし、配列とは関係ありません。STRING_ARRAY 型は、各要素の完全一致をサポートします。各要素は複数の用語で構成されている場合があります。STRING_ARRAY 型のフィールド内のすべての要素が一致する必要はありません。
Q2:配列内の要素の数を取得するにはどうすればよいですか?
A:OpenSearch が提供する fieldlen 関数を使用して、要素の数を取得できます。
Q3:Java コードを使用してデータをプッシュするときに、ARRAY 型のデータを指定するにはどうすればよいですか?
ARRAY 型の変数を使用して、ARRAY 型のデータを指定できます。例:iteral_array--->String [] および int_array--->int []。