このトピックでは、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 を使用してデータをプッシュするプロセスも同様です。
データソースの設定
データソースを設定する際に、さまざまなフォーマットのソースデータを解析できます。配列型として定義されたフィールドがある場合は、そのフィールドに対して MultiValueSplitter プラグインを選択し、デリミタを指定します。たとえば、タグ用のデータベースフィールドに "Time-travel,Mystery,Romance" が含まれている場合、デリミタをカンマ (,) に設定できます。このプラグインは、データベースフィールドの文字列を検索エンジンが認識できる配列に自動的に変換します。MultiValueSplitter プラグイン
ARRAY 型のデータの取得方法と効果
クエリ句またはフィルター句を使用して、配列の各要素に基づいて個別に検索を実行できます。たとえば、query=tags:'Time-travel' を使用して、「Time-travel」、「Mystery」、「Romantic」というタグを含むドキュメントを検索できます。また、query=title:'Treading On Thin Ice'&&filter=tags="Time-travel" を使用して、「Time-travel」というタグを含む「Treading On Thin Ice」という名前の小説を検索することもできます。
ARRAY 型の検索の戻り値は、配列ではなく文字列であることに注意してください。戻り値は '\t' で区切られます。
よくある質問
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 []。