RESTFUL API搜索处理

系统提供了丰富的搜索语法以满足用户各种场景下的搜索需求。

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"
        }
    ]
}