226
iPhone_iPad_Mac_手機_平板_蘋果apple
搜索相關__應用操作接口_API參考手冊_開放搜索-阿裏雲
搜索類
搜索
係統提供了豐富的搜索語法以滿足用戶各種場景下的搜索需求。
URL
/search
支持格式
JSON
HTTP請求方式
GET
請求參數
參數 | 類型 | 必需 | 取值範圍 | 默認值 | 描述 |
---|---|---|---|---|---|
query | string | 是 | 搜索主體,包含所有的查詢條件。主要子句分別包含config子句、query子句、sort子句、filter子句、aggregate子句、distinct子句 、kvpairs子句。 | ||
index_name | string | 是 | 要查詢的應用名。支持同一查詢條件下的多應用同時查詢,應用名間使用英文分號(;)分隔。 | ||
fetch_fields | string | 否 | 全部“可展示”字段。 | 可以通過此參數獲取本次查詢需要的字段內容,多個字段使用英文分號(;)分隔 | |
qp | string | 否 | 已上線規則 | 指定要使用的查詢分析規則,多個規則使用英文逗號(,)分隔 | |
disable | string | 否 | 關閉已生效的查詢分析功能 | ||
first_formula_name | string | 否 | 係統中默認粗排表達式名字 | 設置粗排表達式名字 | |
formula_name | string | 否 | 係統中默認精排表達式名字 | 設置精排表達式名字 | |
summary | string | 否 | 獲取係統結果摘要配置 | 動態摘要的配置,可以指定某些字段的飄紅、截斷等操作。 |
- query參數:查詢的主體。可以通過若幹子句的組合來實現多樣的搜索需求,其中query子句為必選,子句與子句之前通過“&&”進行連接;
- disable參數:目前僅支持”qp”。
- index_name參數:多應用聯合查詢說明請見本節的“多應用聯合查詢”介紹;
- fetch_fields參數:返回文本數據大小對查詢性能影響較大,建議隻獲取需要的字段。
- summary參數:格式如下表,summary_element_prefix與summary_element_postfix必須同時設定;同時summary_element與(summary_element_prefix、summary_element_postfix)是相互影響的,出現在後麵的配置會覆蓋前麵。另外,目前不支持摘要和飄紅單獨設置。
參數 | 類型 | 必需 | 取值範圍 | 默認值 | 描述 |
---|---|---|---|---|---|
summary_field | string | 是 | 要做摘要的字段 | ||
summary_element | string | 否 | em | 飄紅標簽,html標簽去掉左右尖括號 | |
summary_ellipsis | string | 否 | … | 摘要的結尾省略符 | |
summary_snipped | int | 否 | 1 | 選取的摘要片段個數 | |
summary_len | string | 否 | 摘要要展示的片段長度 | ||
summary_element_prefix | string | 否 | 飄紅的前綴,必須是完整的html標簽,如<em> | ||
summary_element_postfix | string | 否 | 飄紅的後綴,必須是完整的html標簽,如</em> |
返回結果
參數 | 類型 | 描述 |
---|---|---|
status | string | 執行結果,OK為成功,FAIL為失敗,請根據返回錯誤碼進行排查 |
request_id | string | 該條查詢的記錄id,主要用於排查問題使用 |
result | string | 實際返回結果,包括查詢耗時searchtime、引擎總結果數total、本次請求返回結果數num、本次查詢最大返回結果數viewtotal、查詢結果items、統計結果facet等信息 |
errors | string | 錯誤內容,error_message代表錯誤信息。error_code代表錯誤碼 |
- searchtime指引擎耗時,單位為秒。
- items包含兩個節點fields及variableValue,其中fields為搜索返回字段內容,variableValue為自定義參數返回結果,如獲取distance距離值。
- variableValue節點隻有在config子句的format為“xml”或者“fulljson”時才能展現出來,“json”格式默認不展示。
- total、viewtotal、num區別:total為一次查詢(不考慮config子句)引擎中符合條件的結果數(在結果數較多情況下,該值會做優化),但考慮到性能及相關性,引擎最多會返回viewtotal個結果,如果需要翻頁的話,要求start+hit一定要小於viewtotal,total一般用來做展示。num為本次查詢請求(受config子句的start及hit)實際返回的條目,不會超過hit值。
示例
請求:(此處省略了公共參數及編碼等因素)
https://$host/search?index_name=bbs&query=config=start:0,hit:10,format:fulljson&&query=default:'的'&&filter=create_timestamp>1423000000&&sort=+type;-RANK&fetch_fields=id;title;body;url;type;create_timestamp&first_formula_name=first_bbs&formula_name=second_bbs&summary=summary_snipped:1,summary_field:title,summary_element:high,summary_len:32,summary_ellipsis:...;summary_snipped:2,summary_field:body,summary_element:high,summary_len:60,summary_ellipsis:...
成功返回:
{
"status": "OK",
"request_id":"142234864206580510737358"
"result": {
"searchtime": 0.068196,
"total": 12034,
"num": 2,
"viewtotal": 5000,
"items": [
{
"fields": {
"id": "10",
"type": "10",
"title": "廣大中小企業都有各種結構化<high>的</high>數據...",
"body": "廣大中小企業都有各種結構化<high>的</high>數據需要進行檢索,目前一般采用...",
"url": "https://www.aliyun.com",
"create_timestamp": "21",
"index_name": "bbs"
},
"variableValue": {}
},
{
"fields": {
"id": "14",
"type": "1",
"title": "根據對各種類型典型站點<high>的</high>調研而...",
"body": "根據對各種類型典型站點<high>的</high>調研而製定<high>的</high>一套具有一定擴展性<high>的</high>結構...",
"url": "https://www.aliyun.com",
"create_timestamp": "25",
"index_name": "bbs"
},
"variableValue": {}
}
],
"facet": []
},
"errors": [],
"tracer": ""
}
錯誤返回:
{
"status": "FAIL",
"request_id":"1422348642065805100387587"
"result": {
"searchtime": 0.001488,
"total": 0,
"num": 0,
"viewtotal": 0,
"items": [],
"facet": []
},
"errors": [
{
"code": 6101,
"message": "Index in query clause not exist."
}
],
"tracer": ""
}
多應用聯合查詢
- 查詢:查詢語句必須一致(應用結構可以不一致),該查詢會往指定的多個應用分別發送,所以必須保證該查詢條件(包含first_formula_name、formula_name及summary等參數)在每個應用上都可以使用。一旦個別應用出現問題,則會報錯,並返回其他應用結果。
- 排序:如果用戶查詢語句中包含sort子句,則獲取各個應用結果後按照指定的sort子句再進行一次二次排序;如果沒有包含sort子句,則會將各個應用結果交叉展示;如果需要按照相關性(排序表達式)分數進行排序的話,可以顯式的在查詢語句中指定sort=-RANK。
- 費用計算:對每個應用分別計算一次訪問請求。
- 最多支持6個應用查詢,超過6個則直接報錯無結果。
掃描
傳統搜索場景的主要目的是為了盡量短的時間內召回最符合的結果,所以對搜索結果進行了限製。在某些場景下需要提供更多的結果來進行分析工作,可以使用scroll接口來獲取更多的結果,目前scorll隻支持query與filter子句,sort子句無法支持。
URL
第一次查詢:/search?scroll=1m&search_type=scan
後續查詢:/search?scroll=1m&scroll_id=$scroll_id
支持格式
JSON
HTTP請求方式
GET
請求參數
參數 | 類型 | 必需 | 取值範圍 | 默認值 | 描述 |
---|---|---|---|---|---|
scroll | INT | 是 | 用來表示scroll請求的有效期,默認時間單位為ms, 也可以用1m表示1min;支持的時間單位包括:w=Week, d=Day, h=Hour, m=minute, s=second | ||
search_type | STRING | scan | 第一次查詢的時候必須填寫,後續無需填寫 | ||
scroll_id | string | 第一次不需要,每次搜索結果會返回scroll_id值,後續查詢必填 |
返回結果
參數 | 類型 | 描述 |
---|---|---|
status | string | 執行結果,OK為成功,FAIL為失敗,請根據返回錯誤碼進行排查 |
request_id | string | 該條查詢的記錄id,主要用於排查問題使用 |
result | string | 實際返回結果,包括查詢耗時searchtime、引擎總結果數total、本次請求返回結果數num、本次查詢最大返回結果數viewtotal、查詢結果items、統計結果facet、scorllid等信息 |
errors | string | 錯誤內容,error_message代表錯誤信息。error_code代表錯誤碼 |
- 返回結果格式目前隻支持json。
示例
第一次請求:(此處省略了公共參數及編碼等因素)
https://$host/search?scroll=1m&search_type=scan&index_name=bbs&query=config=start:0,hit:1,format=fulljson&&query=default:'的'&&filter=create_timestamp>1423000000
成功返回:
{
"status":"OK",
"request_id":"1421348642065805100373587"
"result":{
"searchtime":0.014729,
"total":2,
"num":0,
"viewtotal":2,
"scroll_id":"eJxljsESgjAMRL+mPUNxQA89MHJxPPoBmVgCoqXFtjjw90b05kwO2cnL7tbGUIxnWk+tjoTB3CAadPCcKayA2xUetEqwGBOYOUQfdCaZChZomSANI+l8p8rykFX7LFO57HwYMel79E4OrqUFHDL07/9CO7SYSG5SG++6oRdF8zUQRb2MVqhjCmiIVUPXuReq5NkemGypw9l+UKGqyxbAi+R23lqdj/IXmtaJC3DyG9e2Voo=",
"items":[],
"facet":[]
},
"errors":[],
"tracer":""
}
後續請求:(此處省略了公共參數及編碼等因素)
https://$host/search?scroll=1m&scroll_id=eJxljsESgjAMRL+mPUNxQA89MHJxPPoBmVgCoqXFtjjw90b05kwO2cnL7tbGUIxnWk+tjoTB3CAadPCcKayA2xUetEqwGBOYOUQfdCaZChZomSANI+l8p8rykFX7LFO57HwYMel79E4OrqUFHDL07/9CO7SYSG5SG++6oRdF8zUQRb2MVqhjCmiIVUPXuReq5NkemGypw9l+UKGqyxbAi+R23lqdj/IXmtaJC3DyG9e2Voo=
返回結果:
{
"status":"OK",
"request_id":"1987348642065805100373587"
"result":{
"searchtime":0.010237,
"total":1,
"num":1,
"viewtotal":1,
"scroll_id":"eJxljbtuwzAMRb9G2gokki25g4agXoqM+QCCkelUjSwnegT230dx0KkAB17wXJ6DtZTSkdbvwSTCaH8gWQxwLxRXwO0KV1o5eEwZbIlpjuZDK9mqpmtFp8WnaMRu1/BajB5ouUF2E5l9I/ReKqVb2Uk+znHCbH7THLgLAy0QsEL/lQ/0bsBMfIvGzmF0Fyb79wMmD8vkmfjKES3V1NO5XJhQdbZCJQcasfgXyoQ+bYK6vBnMObpzybXa3678T2ZG9ImeMdFcYw==",
"items":[
{
"field1":"content1",
"index_name":"app_name"
}
],
"facet":[]
},
"errors":[],
"tracer":""
}
注意事項
- start值無效,通過hit值設置每次返回的結果數,即後續查詢都以第一次查詢指定的hit值為準;
- aggregate、sort、distinct、排序表達式無效,如果傳入,查詢會報錯且無結果;
- 第一次查詢需要完整的query、index_name、AccessKeyId等參數,後麵的查詢不需要傳這些參數(即使傳入,也會被忽略),隻需要傳入上一次返回的scroll_id即可;
- 不支持多應用scroll查詢;
- 每次查詢都必須傳scroll參數,如果不傳,對於第一次查詢,就按正常的查詢;對於後續的查詢,按scroll處理,但結果中無scroll_id返回。
- 返回結果均有第一次查詢中的format決定,後續傳scroll_id的響應格式均同第一次;
- 如果用戶傳入的scroll_id是非法的,那麼查詢會報錯,返回結果格式為json。
- 第一次查詢將不返回實際文檔數據,隻返回scroll_id,需要再次訪問才能拿到搜索結果。
最後更新:2016-12-14 16:44:03
上一篇:
數據處理類__應用操作接口_API參考手冊_開放搜索-阿裏雲
下一篇:
配額管理__應用操作接口_API參考手冊_開放搜索-阿裏雲
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲