系統提供了豐富的搜尋文法以滿足使用者各種情境下的搜尋需求。
URL
/{indexName}/search以上 URL 省略了請求Header參數及編碼等因素。
以上 URL 中省略了訪問應用的 host 地址。
請求協議
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==查詢body參數
參數 | 類型 | 必須 | 描述 |
query | String | 是 | 搜尋主體,不可為空。主要支援子句有 query子句、config子句、sort子句、filter子句、aggs子句、distinct子句、kvpairs子句。 |
query子句 | String | 是 | 用於設定搜尋條件 |
config子句 | String | 否 | 用於設定搜尋召回資料格式,及召迴文檔數 |
filter子句 | String | 否 | 用於設定過濾條件 |
sort 子句 | String | 否 | 用於設定文檔排序條件 |
aggregate子句 | String | 否 | 設定統計資訊 |
distinct子句 | String | 否 | 打散子句可以對每個使用者的文檔進行抽取,使得每個使用者都有展示文檔的機會 |
kvpairs子句 | String | 否 | 在kvpairs子句中對排序運算式中的可變部分進行參數定義 |
查詢body樣本
{
"query": "index_id: 0",
"config" : {
"format":"json"
}
}返回參數
參數 | 類型 | 描述 |
result | JSON | 實際返回結果 |
errors | String | 錯誤資訊 |
result中返回參數說明:
searchtime:指引擎耗時,單位為秒。
totalHits:totalHits為一次查詢(不考慮config子句)引擎中合格結果數(在結果數較多情況下,該值會做最佳化)
items:包含查詢召回資料資訊,其中fields為搜尋召回內容。
variableValue:表示自訂參數返回結果,如擷取distance距離值,variableValue 節點只有在config子句的format為xml或者fulljson時才能展現出來,JSON格式預設不展示。
sortExprValues: 表示對應文檔排序分。
facet:用於存放Aggregate子句返回的資訊。
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"
}
}'樣本中的endpoint是公網訪問的網域名稱,詳情可參考網路資訊
Search樣本
正常返回
{
"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"
}
]
}