搜索相关__应用操作接口_API参考手册_开放搜索-阿里云
搜索类
搜索
系统提供了丰富的搜索语法以满足用户各种场景下的搜索需求。
URL
/search
支持格式
JSON
HTTP请求方式
GET
请求参数
参数 | 类型 | 必需 | 取值范围 | 默认值 | 描述 |
---|---|---|---|---|---|
query | string | 是 | 搜索主体,包含所有的查询条件。主要子句分别包含config子句、query子句、sort子句、filter子句、aggregate子句、distinct子句 、kvpairs子句。 | ||
index_name | string | 是 | 要查询的应用名。支持同一查询条件下的多应用同时查询,应用名间使用英文分号(;)分隔。 | ||
fetch_fields | string | 否 | 全部“可展示”字段。 | 可以通过此参数获取本次查询需要的字段内容,多个字段使用英文分号(;)分隔 | |
qp | string | 否 | 已上线规则 | 指定要使用的查询分析规则,多个规则使用英文逗号(,)分隔 | |
disable | string | 否 | 关闭已生效的查询分析功能 | ||
first_formula_name | string | 否 | 系统中默认粗排表达式名字 | 设置粗排表达式名字 | |
formula_name | string | 否 | 系统中默认精排表达式名字 | 设置精排表达式名字 | |
summary | string | 否 | 获取系统结果摘要配置 | 动态摘要的配置,可以指定某些字段的飘红、截断等操作。 |
- query参数:查询的主体。可以通过若干子句的组合来实现多样的搜索需求,其中query子句为必选,子句与子句之前通过“&&”进行连接;
- disable参数:目前仅支持”qp”。
- index_name参数:多应用联合查询说明请见本节的“多应用联合查询”介绍;
- fetch_fields参数:返回文本数据大小对查询性能影响较大,建议只获取需要的字段。
- summary参数:格式如下表,summary_element_prefix与summary_element_postfix必须同时设定;同时summary_element与(summary_element_prefix、summary_element_postfix)是相互影响的,出现在后面的配置会覆盖前面。另外,目前不支持摘要和飘红单独设置。
参数 | 类型 | 必需 | 取值范围 | 默认值 | 描述 |
---|---|---|---|---|---|
summary_field | string | 是 | 要做摘要的字段 | ||
summary_element | string | 否 | em | 飘红标签,html标签去掉左右尖括号 | |
summary_ellipsis | string | 否 | … | 摘要的结尾省略符 | |
summary_snipped | int | 否 | 1 | 选取的摘要片段个数 | |
summary_len | string | 否 | 摘要要展示的片段长度 | ||
summary_element_prefix | string | 否 | 飘红的前缀,必须是完整的html标签,如<em> | ||
summary_element_postfix | string | 否 | 飘红的后缀,必须是完整的html标签,如</em> |
返回结果
参数 | 类型 | 描述 |
---|---|---|
status | string | 执行结果,OK为成功,FAIL为失败,请根据返回错误码进行排查 |
request_id | string | 该条查询的记录id,主要用于排查问题使用 |
result | string | 实际返回结果,包括查询耗时searchtime、引擎总结果数total、本次请求返回结果数num、本次查询最大返回结果数viewtotal、查询结果items、统计结果facet等信息 |
errors | string | 错误内容,error_message代表错误信息。error_code代表错误码 |
- searchtime指引擎耗时,单位为秒。
- items包含两个节点fields及variableValue,其中fields为搜索返回字段内容,variableValue为自定义参数返回结果,如获取distance距离值。
- variableValue节点只有在config子句的format为“xml”或者“fulljson”时才能展现出来,“json”格式默认不展示。
- total、viewtotal、num区别:total为一次查询(不考虑config子句)引擎中符合条件的结果数(在结果数较多情况下,该值会做优化),但考虑到性能及相关性,引擎最多会返回viewtotal个结果,如果需要翻页的话,要求start+hit一定要小于viewtotal,total一般用来做展示。num为本次查询请求(受config子句的start及hit)实际返回的条目,不会超过hit值。
示例
请求:(此处省略了公共参数及编码等因素)
https://$host/search?index_name=bbs&query=config=start:0,hit:10,format:fulljson&&query=default:'的'&&filter=create_timestamp>1423000000&&sort=+type;-RANK&fetch_fields=id;title;body;url;type;create_timestamp&first_formula_name=first_bbs&formula_name=second_bbs&summary=summary_snipped:1,summary_field:title,summary_element:high,summary_len:32,summary_ellipsis:...;summary_snipped:2,summary_field:body,summary_element:high,summary_len:60,summary_ellipsis:...
成功返回:
{
"status": "OK",
"request_id":"142234864206580510737358"
"result": {
"searchtime": 0.068196,
"total": 12034,
"num": 2,
"viewtotal": 5000,
"items": [
{
"fields": {
"id": "10",
"type": "10",
"title": "广大中小企业都有各种结构化<high>的</high>数据...",
"body": "广大中小企业都有各种结构化<high>的</high>数据需要进行检索,目前一般采用...",
"url": "https://www.aliyun.com",
"create_timestamp": "21",
"index_name": "bbs"
},
"variableValue": {}
},
{
"fields": {
"id": "14",
"type": "1",
"title": "根据对各种类型典型站点<high>的</high>调研而...",
"body": "根据对各种类型典型站点<high>的</high>调研而制定<high>的</high>一套具有一定扩展性<high>的</high>结构...",
"url": "https://www.aliyun.com",
"create_timestamp": "25",
"index_name": "bbs"
},
"variableValue": {}
}
],
"facet": []
},
"errors": [],
"tracer": ""
}
错误返回:
{
"status": "FAIL",
"request_id":"1422348642065805100387587"
"result": {
"searchtime": 0.001488,
"total": 0,
"num": 0,
"viewtotal": 0,
"items": [],
"facet": []
},
"errors": [
{
"code": 6101,
"message": "Index in query clause not exist."
}
],
"tracer": ""
}
多应用联合查询
- 查询:查询语句必须一致(应用结构可以不一致),该查询会往指定的多个应用分别发送,所以必须保证该查询条件(包含first_formula_name、formula_name及summary等参数)在每个应用上都可以使用。一旦个别应用出现问题,则会报错,并返回其他应用结果。
- 排序:如果用户查询语句中包含sort子句,则获取各个应用结果后按照指定的sort子句再进行一次二次排序;如果没有包含sort子句,则会将各个应用结果交叉展示;如果需要按照相关性(排序表达式)分数进行排序的话,可以显式的在查询语句中指定sort=-RANK。
- 费用计算:对每个应用分别计算一次访问请求。
- 最多支持6个应用查询,超过6个则直接报错无结果。
扫描
传统搜索场景的主要目的是为了尽量短的时间内召回最符合的结果,所以对搜索结果进行了限制。在某些场景下需要提供更多的结果来进行分析工作,可以使用scroll接口来获取更多的结果,目前scorll只支持query与filter子句,sort子句无法支持。
URL
第一次查询:/search?scroll=1m&search_type=scan
后续查询:/search?scroll=1m&scroll_id=$scroll_id
支持格式
JSON
HTTP请求方式
GET
请求参数
参数 | 类型 | 必需 | 取值范围 | 默认值 | 描述 |
---|---|---|---|---|---|
scroll | INT | 是 | 用来表示scroll请求的有效期,默认时间单位为ms, 也可以用1m表示1min;支持的时间单位包括:w=Week, d=Day, h=Hour, m=minute, s=second | ||
search_type | STRING | scan | 第一次查询的时候必须填写,后续无需填写 | ||
scroll_id | string | 第一次不需要,每次搜索结果会返回scroll_id值,后续查询必填 |
返回结果
参数 | 类型 | 描述 |
---|---|---|
status | string | 执行结果,OK为成功,FAIL为失败,请根据返回错误码进行排查 |
request_id | string | 该条查询的记录id,主要用于排查问题使用 |
result | string | 实际返回结果,包括查询耗时searchtime、引擎总结果数total、本次请求返回结果数num、本次查询最大返回结果数viewtotal、查询结果items、统计结果facet、scorllid等信息 |
errors | string | 错误内容,error_message代表错误信息。error_code代表错误码 |
- 返回结果格式目前只支持json。
示例
第一次请求:(此处省略了公共参数及编码等因素)
https://$host/search?scroll=1m&search_type=scan&index_name=bbs&query=config=start:0,hit:1,format=fulljson&&query=default:'的'&&filter=create_timestamp>1423000000
成功返回:
{
"status":"OK",
"request_id":"1421348642065805100373587"
"result":{
"searchtime":0.014729,
"total":2,
"num":0,
"viewtotal":2,
"scroll_id":"eJxljsESgjAMRL+mPUNxQA89MHJxPPoBmVgCoqXFtjjw90b05kwO2cnL7tbGUIxnWk+tjoTB3CAadPCcKayA2xUetEqwGBOYOUQfdCaZChZomSANI+l8p8rykFX7LFO57HwYMel79E4OrqUFHDL07/9CO7SYSG5SG++6oRdF8zUQRb2MVqhjCmiIVUPXuReq5NkemGypw9l+UKGqyxbAi+R23lqdj/IXmtaJC3DyG9e2Voo=",
"items":[],
"facet":[]
},
"errors":[],
"tracer":""
}
后续请求:(此处省略了公共参数及编码等因素)
https://$host/search?scroll=1m&scroll_id=eJxljsESgjAMRL+mPUNxQA89MHJxPPoBmVgCoqXFtjjw90b05kwO2cnL7tbGUIxnWk+tjoTB3CAadPCcKayA2xUetEqwGBOYOUQfdCaZChZomSANI+l8p8rykFX7LFO57HwYMel79E4OrqUFHDL07/9CO7SYSG5SG++6oRdF8zUQRb2MVqhjCmiIVUPXuReq5NkemGypw9l+UKGqyxbAi+R23lqdj/IXmtaJC3DyG9e2Voo=
返回结果:
{
"status":"OK",
"request_id":"1987348642065805100373587"
"result":{
"searchtime":0.010237,
"total":1,
"num":1,
"viewtotal":1,
"scroll_id":"eJxljbtuwzAMRb9G2gokki25g4agXoqM+QCCkelUjSwnegT230dx0KkAB17wXJ6DtZTSkdbvwSTCaH8gWQxwLxRXwO0KV1o5eEwZbIlpjuZDK9mqpmtFp8WnaMRu1/BajB5ouUF2E5l9I/ReKqVb2Uk+znHCbH7THLgLAy0QsEL/lQ/0bsBMfIvGzmF0Fyb79wMmD8vkmfjKES3V1NO5XJhQdbZCJQcasfgXyoQ+bYK6vBnMObpzybXa3678T2ZG9ImeMdFcYw==",
"items":[
{
"field1":"content1",
"index_name":"app_name"
}
],
"facet":[]
},
"errors":[],
"tracer":""
}
注意事项
- start值无效,通过hit值设置每次返回的结果数,即后续查询都以第一次查询指定的hit值为准;
- aggregate、sort、distinct、排序表达式无效,如果传入,查询会报错且无结果;
- 第一次查询需要完整的query、index_name、AccessKeyId等参数,后面的查询不需要传这些参数(即使传入,也会被忽略),只需要传入上一次返回的scroll_id即可;
- 不支持多应用scroll查询;
- 每次查询都必须传scroll参数,如果不传,对于第一次查询,就按正常的查询;对于后续的查询,按scroll处理,但结果中无scroll_id返回。
- 返回结果均有第一次查询中的format决定,后续传scroll_id的响应格式均同第一次;
- 如果用户传入的scroll_id是非法的,那么查询会报错,返回结果格式为json。
- 第一次查询将不返回实际文档数据,只返回scroll_id,需要再次访问才能拿到搜索结果。
最后更新:2016-12-14 16:44:03
上一篇:
数据处理类__应用操作接口_API参考手册_开放搜索-阿里云
下一篇:
配额管理__应用操作接口_API参考手册_开放搜索-阿里云
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云