系统提供了丰富的搜索语法以满足用户各种场景下的搜索需求。
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子句的format为xml或者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"
}
]
}