开发者社区> 问答> 正文

OpenSearch的搜索相关的有哪些?



搜索


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

URL


/search

支持格式


JSON

HTTP请求方式


GET

请求参数

参数类型必需取值范围默认值描述
querystring搜索主体,包含所有的查询条件。主要子句分别包含config子句query子句sort子句filter子句aggregate子句distinct子句kvpairs子句
index_namestring要查询的应用名。支持同一查询条件下的多应用同时查询,应用名间使用英文分号(;)分隔。
fetch_fieldsstring全部“可展示”字段。可以通过此参数获取本次查询需要的字段内容,多个字段使用英文分号(;)分隔
qpstring已上线规则指定要使用的查询分析规则,多个规则使用英文逗号(,)分隔
disablestring关闭已生效的查询分析功能
first_formula_namestring系统中默认粗排表达式名字设置粗排表达式名字
formula_namestring系统中默认精排表达式名字设置精排表达式名字
summarystring获取系统结果摘要配置动态摘要的配置,可以指定某些字段的飘红、截断等操作。
  • query参数:查询的主体。可以通过若干子句的组合来实现多样的搜索需求,其中query子句为必选,子句与子句之前通过“&&”进行连接;
  • disable参数:目前仅支持”qp”。
  • index_name参数:多应用联合查询说明请见本节的“多应用联合查询”介绍;
  • fetch_fields参数:返回文本数据大小对查询性能影响较大,建议只获取需要的字段。
  • summary参数:格式如下表,summary_element_prefix与summary_element_postfix必须同时设定;同时summary_element与(summary_element_prefix、summary_element_postfix)是相互影响的,出现在后面的配置会覆盖前面。另外,目前不支持摘要和飘红单独设置。
参数类型必需取值范围默认值描述
summary_fieldstring要做摘要的字段
summary_elementstringem飘红标签,html标签去掉左右尖括号
summary_ellipsisstring摘要的结尾省略符
summary_snippedint1选取的摘要片段个数
summary_lenstring摘要要展示的片段长度
summary_element_prefixstring飘红的前缀,必须是完整的html标签,如<em>
summary_element_postfixstring飘红的后缀,必须是完整的html标签,如</em>


返回结果

参数类型描述
statusstring执行结果,OK为成功,FAIL为失败,请根据返回错误码进行排查
request_idstring该条查询的记录id,主要用于排查问题使用
resultstring实际返回结果,包括查询耗时searchtime、引擎总结果数total、本次请求返回结果数num、本次查询最大返回结果数viewtotal、查询结果items、统计结果facet等信息
errorsstring错误内容,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. 查询:查询语句必须一致(应用结构可以不一致),该查询会往指定的多个应用分别发送,所以必须保证该查询条件(包含first_formula_name、formula_name及summary等参数)在每个应用上都可以使用。一旦个别应用出现问题,则会报错,并返回其他应用结果。
  2. 排序:如果用户查询语句中包含sort子句,则获取各个应用结果后按照指定的sort子句再进行一次二次排序;如果没有包含sort子句,则会将各个应用结果交叉展示;如果需要按照相关性(排序表达式)分数进行排序的话,可以显式的在查询语句中指定sort=-RANK。
  3. 费用计算:对每个应用分别计算一次访问请求。
  4. 最多支持6个应用查询,超过6个则直接报错无结果。


扫描


传统搜索场景的主要目的是为了尽量短的时间内召回最符合的结果,所以对搜索结果进行了限制。在某些场景下需要提供更多的结果来进行分析工作,可以使用scroll接口来获取更多的结果,[backcolor=transparent]目前scorll只支持query与filter子句,sort子句无法支持。

URL


第一次查询:/search?scroll=1m&search_type=scan
后续查询:/search?scroll=1m&scroll_id=$scroll_id

支持格式


JSON

HTTP请求方式


GET

请求参数

参数类型必需取值范围默认值描述
scrollINT用来表示scroll请求的有效期,默认时间单位为ms, 也可以用1m表示1min;支持的时间单位包括:w=Week, d=Day, h=Hour, m=minute, s=second
search_typeSTRINGscan第一次查询的时候必须填写,后续无需填写
scroll_idstring第一次不需要,每次搜索结果会返回scroll_id值,后续查询必填


返回结果

参数类型描述
statusstring执行结果,OK为成功,FAIL为失败,请根据返回错误码进行排查
request_idstring该条查询的记录id,主要用于排查问题使用
resultstring实际返回结果,包括查询耗时searchtime、引擎总结果数total、本次请求返回结果数num、本次查询最大返回结果数viewtotal、查询结果items、统计结果facet、scorllid等信息
errorsstring错误内容,error_message代表错误信息。error_code代表错误码
  • 返回结果格式目前只支持json。


示例


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



展开
收起
轩墨 2017-10-25 11:06:42 2820 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
《开放搜索统一召回引擎实践》 立即下载
《开放搜索查询分析服务架构分享》 立即下载
《开放搜索在智能化行业搜索和业务增长领域的应用实践》 立即下载