使用場景
傳統搜索場景的主要目的是為了盡量短的時間內召回最符合的結果,所以對搜索結果進行了限制,例如 search方法最多只能召回5000條文檔。在某些場景下需要提供更多的結果來進行分析工作,可以使用scroll接口來獲取更多的結果。
參數介紹
搜索參數:
參數 | 類型 | 必需 | 取值范圍 | 默認值 | 描述 |
scroll | STRING | 是 | 周,日,時,分,秒 | 表示下一次 scroll請求的有效期,每次請求都必須設置該參數,可以用1m表示1min;支持的時間單位包括:w=Week, d=Day, h=Hour, m=minute, s=second | |
search_type | STRING | 是 | scan | 第一次查詢的時必須填寫,后續無需填寫,后續通過指定 scroll_id 實現下一次查詢 | |
scroll_id | string | 是 | 第一次調用scroll方法會返回scroll_id 但并不包含數據,后續每次搜索都必須指定上一次返回scroll_id,并且后續搜索結果中都會返回scroll_id及對應匹配的數據,后續查詢該參數必填 | ||
fetch_fields參數 | string | 用于設置召回哪些應用字段內容 |
返回結果參數:
參數 | 類型 | 描述 |
status | string | 執行結果,OK為成功,FAIL為失敗,請根據返回錯誤碼進行排查 |
request_id | string | 該條查詢的記錄id,主要用于排查問題使用 |
result | string | 實際返回結果,包括查詢耗時searchtime、引擎總結果數total、本次請求返回結果數num、本次查詢最大返回結果數viewtotal、查詢結果items、統計結果 facet、scorllid 等信息 |
errors | string | 錯誤內容,error_message代表錯誤信息。error_code 對應含義參考 錯誤碼 文檔 |
注意:scroll 返回結果格式,目前只支持返回為fulljson,json格式。
結果展示
第一次請求結果:
{
"status": "OK",
"request_id": "150150574119953661605242",
"result": {
"searchtime": 0.005029,
"total": 1,
"num": 0,
"viewtotal": 1,
"scroll_id": "eJxtUMtuhDAM/BrvOYQC5cABdulvRFFIirsm2TpBavv1Ndut1EMlS36NZ0Y2ZHMxbueceAjIuWCMnrPjRITLyfzZm83y9V QVGT8x80U3PxQNUqieVZV1/an4ItbTUBPSx5wgXqKdvOSbmuKR8ZYjGWWirB4tvToAiX7u3G2eCNK77vnz8GlGPAV6suKBeqxAn0OiTd7NGEnesspyoyFLF6hecn4JUKjVgp0K3FnkfMfIyPoDuYWegX9GeYOpicY9TG8gwOSuBL04X1 MMg3ROwCesLlG6X7a2o=",
"items": [],
"facet": []
},
"errors": [],
"tracer": ""
}
后續請求結果:
{
"status": "OK",
"request_id": "150150574119952551519970",
"result": {
"searchtime": 0.006293,
"total": 1,
"num": 1,
"viewtotal": 1,
"scroll_id": "eJxNT9tugzAM/RrznIRC4YEHaNlvRFFIhteQtE6Qtn39TNdJk2z5dnx8rIPJRdudcqKhl60Uir2Vp06ISv8b6s3QbZCVzpaCdp93XXBzg2wEW9MJ2dWq8q7YVXt0YckDLlBP0WyOw31N8YgYizZEnAUsjkx4VT4k8zexpjiNS/XYHX0NNkWP71BfVyxQjxLUxSfazFH4PYSPnCL3iMniDZq3jN98aFRCgGrZniy8/itkBHWGuYVeQH+B+QzTCUZ1NJ9gj4FVMfrQPr8Y+Hk+dgU14fIDVhtfTw==",
"items": [
{
"fields": {
"cate_id": "0",
"float_arr": "0",
"id": "1",
"int_arr": "0",
"literal_arr": "搜索",
"name": "搜索",
"phone": "1381111****",
"index_name": "app_schema_demo"
},
"property": {},
"attribute": {},
"variableValue": {},
"sortExprValues": [
"1"
]
}
],
"facet": []
},
"errors": [],
"tracer": ""
}
注意事項
sort子句(只支持單字段INT類型,僅限v3版API及SDK)。
scroll僅支持導出所有數據,不支持Aggregate、Distinct子句;不支持粗精排表達式;同時也不支持查詢分析。
scroll查詢中的config子句start參數不起作用,默認為0. 即不支持跳頁。hits限制為[0,500]。
scroll查詢以第一次查詢(即返回scrollID 的那次查詢)的hit值為準,之后再修改hit值均不生效。
第一次執行時不返回文檔數據,只返回scroll_id值,第二次調用查詢時設置scroll_id,即返回數據。
搜索報錯判斷需按code和message,進行異常情況判斷,不要按status進行判斷。錯誤碼文檔
若召回結果報錯:Scroll_id is expired,說明scroll請求的有效期過期了,請調整scroll參數
SDK 樣例demo
注意:
1.config子句中start無效,通過hit值設置每次召回文檔數。
2.aggregate、distinct、粗精排表達式等都無效,sort子句只支持單字段INT類型排序。
3.不支持多應用scroll查詢。
4.如果傳入的scroll_id非法,查詢時會報錯。
5.召回結果格式只支持fulljson,json。
6.第一次查詢只返回scroll_id,不返回文檔數據,需要再次查詢并設置上一次查詢返回的scroll_id才能召回數據。
Java案例:
PHP案例:
應用操作API: