OpenSearch は、さまざまなシナリオでの検索要件を満たすために、多様な検索構文を提供します。
URL
/{indexName}/searchサンプル URL には、リクエストヘッダーやエンコード方式などの情報は含まれていません。
サンプル URL には、OpenSearch アプリケーションへの接続に使用するエンドポイントも含まれていません。
プロトコル
HTTP
リクエストメソッド
POST
サポートされている形式
JSON
リクエスト署名
次のメソッドを使用して、リクエスト署名を計算できます。リクエスト署名は authorization ヘッダーに格納されます。
パラメーター | タイプ | 説明 |
accessUserName | String | ユーザー名。ユーザー名は、[インスタンスの詳細] ページの [ネットワーク情報] タブで確認できます。 |
accessPassWord | String | パスワード。パスワードは、[インスタンスの詳細] ページの [ネットワーク情報] タブで変更できます。 |
import com.aliyun.darabonba.encode.Encoder;
import com.aliyun.darabonbastring.Client;
public class GenerateAuthorization {
public static void main(String[] args) throws Exception {
String accessUserName = "username"; // ユーザー名
String accessPassWord = "password"; // パスワード
String realmStr = "" + accessUserName + ":" + accessPassWord + "";
String authorization = Encoder.base64EncodeToString(Client.toBytes(realmStr, "UTF-8"));
System.out.println(authorization);
}
}authorization ヘッダーの値の有効な形式:
cm9vdDp******mdhbA==注: HTTP リクエストで authorization ヘッダーを指定する場合は、Basic プレフィックスを追加する必要があります。
authorization: Basic cm9vdDp******mdhbA==リクエストパラメーター
パラメーター | タイプ | 必須 | 説明 |
query | String | はい | 検索リクエストの本文。このパラメーターは空にすることはできません。次の句がサポートされています: query 句、config 句、sort 句、filter 句、aggs 句、distinct 句、kvpairs 句。 |
query 句 | String | はい | 検索条件。 |
config 句 | String | いいえ | 検索結果の形式と取得するドキュメントの数。 |
filter 句 | String | いいえ | フィルター条件。 |
sort 句 | String | いいえ | ドキュメントのソートに使用する条件。 |
aggs 句 | String | いいえ | 統計情報を収集するために使用される句。 |
distinct 句 | String | いいえ | 各ユーザーのドキュメントが表示されるように、各ユーザーからドキュメントを抽出するために使用される句。 |
kvpairs 句 | String | いいえ | ソート式の可変部分で使用されるパラメーターを定義するために使用される句。 |
リクエストボディの例
{
"query": "index_id: 0",
"config" : {
"format":"json"
}
}レスポンスパラメーター
パラメーター | タイプ | 説明 |
result | json | 検索結果。 |
errors | String | エラーメッセージ。 |
result パラメーターのフィールド:
searchtime: エンジンが検索を完了するまでにかかった時間。単位: 秒。
totalHits: config 句に関係なく、1 回の検索でエンジンの条件を満たす結果の数。結果の数が多い場合、この値は最適化されます。
items: 検索結果。fields パラメーターは、検索結果の内容を示します。
variableValue: カスタムパラメーターの値 (distance パラメーターの値など)。variableValue フィールドは、config 句の format パラメーターが xml または fulljson に設定されている場合にのみ返されます。デフォルトでは、format パラメーターが json に設定されている場合、このフィールドは返されません。
sortExprValues: ドキュメントのソートスコア。
facet: aggs 句によって返される統計。
ARRAY タイプのフィールド: レスポンスが JSON または fullJSON 形式の場合、データはタブ文字 (\t) で区切られます。レスポンスが XML 形式の場合、データはスペースで区切られます。
サンプル cURL リクエスト
curl --location --request POST 'http://ha-cn-*********.public.ha.aliyuncs.com/index_hdfs/search' \
--header 'authorization: Basic *******************' \
--header 'host: ha-cn-*********.public.ha.aliyuncs.com' \
--header 'Content-Type: application/json' \
--data-raw '{
"query": "index_id: 1",
"config" : {
"format":"json"
}
}'この例では、パブリックエンドポイントが使用されています。詳細については、「インスタンスの詳細」トピックの「ネットワーク情報タブ」セクションを参照してください。インスタンスの詳細
検索レスポンスの例
成功レスポンスの例
{
"result": {
"searchtime": 0.010385,
"numHits": 1,
"totalHits": 1,
"coveredPercent": 100.0,
"items": [
{
"fields": {
"id": "1",
"name": "aliyun",
"age": "20"
},
"properties": {},
"attributes": {},
"variableValues": {},
"sortExprValues": [
"10000"
]
}
],
"facet": []
},
"errors": []
}エラーレスポンスの例
{
"result": {
"searchtime": 0.000094,
"numHits": 0,
"totalHits": 0,
"coveredPercent": 0.0,
"facet": []
},
"errors": [
{
"code": 1013,
"message": "QueryClause: index not exist. Index name:index_id"
}
]
}