全部产品
开放搜索

搜索相关

更新时间:2017-06-07 13:26:11   分享:   

搜索类

搜索

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

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值。

示例

请求:(此处省略了公共参数及编码等因素)

  1. http://$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:...

成功返回:

  1. {
  2. "status": "OK",
  3. "request_id":"142234864206580510737358"
  4. "result": {
  5. "searchtime": 0.068196,
  6. "total": 12034,
  7. "num": 2,
  8. "viewtotal": 5000,
  9. "items": [
  10. {
  11. "fields": {
  12. "id": "10",
  13. "type": "10",
  14. "title": "广大中小企业都有各种结构化<high>的</high>数据...",
  15. "body": "广大中小企业都有各种结构化<high>的</high>数据需要进行检索,目前一般采用...",
  16. "url": "http://www.aliyun.com",
  17. "create_timestamp": "21",
  18. "index_name": "bbs"
  19. },
  20. "variableValue": {}
  21. },
  22. {
  23. "fields": {
  24. "id": "14",
  25. "type": "1",
  26. "title": "根据对各种类型典型站点<high>的</high>调研而...",
  27. "body": "根据对各种类型典型站点<high>的</high>调研而制定<high>的</high>一套具有一定扩展性<high>的</high>结构...",
  28. "url": "http://www.aliyun.com",
  29. "create_timestamp": "25",
  30. "index_name": "bbs"
  31. },
  32. "variableValue": {}
  33. }
  34. ],
  35. "facet": []
  36. },
  37. "errors": [],
  38. "tracer": ""
  39. }

错误返回:

  1. {
  2. "status": "FAIL",
  3. "request_id":"1422348642065805100387587"
  4. "result": {
  5. "searchtime": 0.001488,
  6. "total": 0,
  7. "num": 0,
  8. "viewtotal": 0,
  9. "items": [],
  10. "facet": []
  11. },
  12. "errors": [
  13. {
  14. "code": 6101,
  15. "message": "Index in query clause not exist."
  16. }
  17. ],
  18. "tracer": ""
  19. }

多应用联合查询

  1. 查询:查询语句必须一致(应用结构可以不一致),该查询会往指定的多个应用分别发送,所以必须保证该查询条件(包含first_formula_name、formula_name及summary等参数)在每个应用上都可以使用。一旦个别应用出现问题,则会报错,并返回其他应用结果。
  2. 排序:如果用户查询语句中包含sort子句,则获取各个应用结果后按照指定的sort子句再进行一次二次排序;如果没有包含sort子句,则会将各个应用结果交叉展示;如果需要按照相关性(排序表达式)分数进行排序的话,可以显式的在查询语句中指定sort=-RANK。
  3. 费用计算:对每个应用分别计算一次访问请求。
  4. 最多支持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。

示例

第一次请求:(此处省略了公共参数及编码等因素)

  1. http://$host/search?scroll=1m&search_type=scan&index_name=bbs&query=config=start:0,hit:1,format=fulljson&&query=default:'的'&&filter=create_timestamp>1423000000

成功返回:

  1. {
  2. "status":"OK",
  3. "request_id":"1421348642065805100373587"
  4. "result":{
  5. "searchtime":0.014729,
  6. "total":2,
  7. "num":0,
  8. "viewtotal":2,
  9. "scroll_id":"eJxljsESgjAMRL+mPUNxQA89MHJxPPoBmVgCoqXFtjjw90b05kwO2cnL7tbGUIxnWk+tjoTB3CAadPCcKayA2xUetEqwGBOYOUQfdCaZChZomSANI+l8p8rykFX7LFO57HwYMel79E4OrqUFHDL07/9CO7SYSG5SG++6oRdF8zUQRb2MVqhjCmiIVUPXuReq5NkemGypw9l+UKGqyxbAi+R23lqdj/IXmtaJC3DyG9e2Voo=",
  10. "items":[],
  11. "facet":[]
  12. },
  13. "errors":[],
  14. "tracer":""
  15. }

后续请求:(此处省略了公共参数及编码等因素)

  1. http://$host/search?scroll=1m&scroll_id=eJxljsESgjAMRL+mPUNxQA89MHJxPPoBmVgCoqXFtjjw90b05kwO2cnL7tbGUIxnWk+tjoTB3CAadPCcKayA2xUetEqwGBOYOUQfdCaZChZomSANI+l8p8rykFX7LFO57HwYMel79E4OrqUFHDL07/9CO7SYSG5SG++6oRdF8zUQRb2MVqhjCmiIVUPXuReq5NkemGypw9l+UKGqyxbAi+R23lqdj/IXmtaJC3DyG9e2Voo=

返回结果:

  1. {
  2. "status":"OK",
  3. "request_id":"1987348642065805100373587"
  4. "result":{
  5. "searchtime":0.010237,
  6. "total":1,
  7. "num":1,
  8. "viewtotal":1,
  9. "scroll_id":"eJxljbtuwzAMRb9G2gokki25g4agXoqM+QCCkelUjSwnegT230dx0KkAB17wXJ6DtZTSkdbvwSTCaH8gWQxwLxRXwO0KV1o5eEwZbIlpjuZDK9mqpmtFp8WnaMRu1/BajB5ouUF2E5l9I/ReKqVb2Uk+znHCbH7THLgLAy0QsEL/lQ/0bsBMfIvGzmF0Fyb79wMmD8vkmfjKES3V1NO5XJhQdbZCJQcasfgXyoQ+bYK6vBnMObpzybXa3678T2ZG9ImeMdFcYw==",
  10. "items":[
  11. {
  12. "field1":"content1",
  13. "index_name":"app_name"
  14. }
  15. ],
  16. "facet":[]
  17. },
  18. "errors":[],
  19. "tracer":""
  20. }

注意事项

  • 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,需要再次访问才能拿到搜索结果。
本文导读目录
本文导读目录
以上内容是否对您有帮助?