使用场景
传统搜索场景的主要目的是为了尽量短的时间内召回最符合的结果,所以对搜索结果进行了限制,例如 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: