全部产品
Search
文档中心

智能开放搜索 OpenSearch:scroll方法

更新时间:Jan 09, 2024

使用场景

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

scroll简单查询Demo

scroll的迭代查询Demo

PHP案例

scroll搜索Demo

应用操作API:

搜索处理