全部產品
Search
文件中心

OpenSearch:scroll方法

更新時間:Jul 13, 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:

搜尋處理