このトピックでは、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 オペレーションの詳細については、データの処理を参照してください。
SDK の使用
データプッシュのデモコードトピックで、OpenSearch SDK for Java を使用してデータをプッシュする手順を参照できます。他のプログラミング言語の SDK を使用してデータをプッシュするプロセスも同様です。
データソースの構成
データソースを構成する場合、さまざまな形式のソースデータを解析できます。ARRAY 型のフィールドが定義されている場合は、MultiValueSpliter プラグインをフィールドに関連付け、区切り文字を指定してフィールドの値を区切ることができます。たとえば、このトピックの「シナリオ」セクションで説明されているタグは、「タイムトラベル、ミステリー、ロマンス」の形式で解析されます。この場合、次の図に示すように、区切り文字をカンマ (,) に設定します。プラグインは、データベース内のフィールドを ARRAY 型の値に自動的に変換するため、検索エンジンで値を認識できます。MultiValueSpliter プラグインの詳細については、データ処理プラグインの使用を参照してください。

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:配列内の要素の数を取得するにはどうすればよいですか?
OpenSearch は、配列内の要素の数を取得するための fieldlen 関数を提供します。詳細については、filter 句を参照してください。
Q3:Java コードを使用してデータをプッシュする場合、ARRAY 型のデータをどのように指定しますか?
ARRAY 型の変数を使用して、ARRAY 型のデータを指定できます。例:iteral_array--->String [] および int_array--->int []。