全部產品
Search
文件中心

OpenSearch:RESTFUL API搜尋處理

更新時間:Apr 12, 2025

系統提供了豐富的搜尋文法以滿足使用者各種情境下的搜尋需求。

URL

/{indexName}/search

  • 以上 URL 省略了請求Header參數及編碼等因素。

  • 以上 URL 中省略了訪問應用的 host 地址。

請求協議

HTTP

請求方式

POST

支援格式

JSON

簽名機制

可用以下方法計算簽名(authorization

參數

類型

描述

accessUserName

String

使用者名稱,可在執行個體詳情頁>網路資訊查看

accessPassWord

String

密碼,可在執行個體詳情頁>網路資訊修改

import com.aliyun.darabonba.encode.Encoder;
import com.aliyun.darabonbastring.Client;

public class GenerateAuthorization {

    public static void main(String[] args) throws Exception {
        String accessUserName = "username";
        String accessPassWord = "password";
        String realmStr = "" + accessUserName + ":" + accessPassWord + "";
        String authorization = Encoder.base64EncodeToString(Client.toBytes(realmStr, "UTF-8"));
        System.out.println(authorization);
    }
}

authorization正確返回格式

cm9vdDp******mdhbA==

注意:使用HTTP請求設定authorization參數是需加上Basic首碼,樣本:

authorization: Basic cm9vdDp******mdhbA==

查詢body參數

參數

類型

必須

描述

query

String

搜尋主體,不可為空。主要支援子句有 query子句config子句sort子句filter子句aggs子句distinct子句kvpairs子句

query子句

String

用於設定搜尋條件

config子句

String

用於設定搜尋召回資料格式,及召迴文檔數

filter子句

String

用於設定過濾條件

sort 子句

String

用於設定文檔排序條件

aggregate子句

String

設定統計資訊

distinct子句

String

打散子句可以對每個使用者的文檔進行抽取,使得每個使用者都有展示文檔的機會

kvpairs子句

String

在kvpairs子句中對排序運算式中的可變部分進行參數定義

查詢body樣本

{
  "query": "index_id: 0",
  "config" : {
      "format":"json"
  }
}

返回參數

參數

類型

描述

result

JSON

實際返回結果

errors

String

錯誤資訊

result中返回參數說明

  • searchtime:指引擎耗時,單位為秒。

  • totalHits:totalHits為一次查詢(不考慮config子句)引擎中合格結果數(在結果數較多情況下,該值會做最佳化)

  • items:包含查詢召回資料資訊,其中fields為搜尋召回內容。

  • variableValue:表示自訂參數返回結果,如擷取distance距離值,variableValue 節點只有在config子句的formatxml或者fulljson時才能展現出來,JSON格式預設不展示。

  • sortExprValues: 表示對應文檔排序分。

  • facet:用於存放Aggregate子句返回的資訊。

  • array欄位類型:通過JSON和fulljson格式返回,資料之間通過\t分割,如果通過xml格式返回,通過空格分割

curl樣本

curl --location --request POST 'http://ha-cn-*********.public.ha.aliyuncs.com/index_hdfs/search' \
--header 'authorization: Basic *******************' \
--header 'host: ha-cn-*********.public.ha.aliyuncs.com' \
--header 'Content-Type: application/json' \
--data-raw '{
  "query": "index_id: 1",
  "config" : {
      "format":"json"
  }
}'
說明
  • 樣本中的endpoint是公網訪問的網域名稱,詳情可參考網路資訊

Search樣本

正常返回

{
    "result": {
        "searchtime": 0.010385,
        "numHits": 1,
        "totalHits": 1,
        "coveredPercent": 100.0,
        "items": [
            {
                "fields": {
                    "id": "1",
                    "name": "aliyun",
                    "age": "20"
                },
                "properties": {},
                "attributes": {},
                "variableValues": {},
                "sortExprValues": [
                    "10000"
                ]
            }
        ],
        "facet": []
    },
    "errors": []
}

錯誤返回

{
    "result": {
        "searchtime": 0.000094,
        "numHits": 0,
        "totalHits": 0,
        "coveredPercent": 0.0,
        "facet": []
    },
    "errors": [
        {
            "code": 1013,
            "message": "QueryClause: index not exist. Index name:index_id"
        }
    ]
}