查询优化

更新时间:
复制 MD 格式

查询优化

在日常的业务开发中,opensearch出现慢查询是很常见的,用户不恰当的操作、filter内容过多、某段时间激增的QPS都有可能导致慢查询的现象发生。opensearch提供的Query分析可以指定时间段查询高LCU花销的慢Query详情,并获得相应的优化建议,协助您降低成本。

优势

  • 0元购:该功能开通即享,免费使用

  • 随心查:可快速查询过去一个月的慢查询记录,并获取相应的优化建议

  • 全方位:可根据平均消耗、峰值、消耗总量query个数占比等维度分析慢Query的原因,并且支持以上维度的大小排序

注意事项

  • 目前暂时只支持对前一天数据进行分析,分析过的历史数据抽样最多保留30

功能使用

1.开通慢查询优化:当用户第一次使用“查询优化”时,可以通过左侧导航栏功能扩展---->查询优化 来开启慢查询分析服务

选择需要开启慢query优化的应用,勾选开通查询Query分析服务和阅读用途承诺书,单击“确认开通”即可开启慢query分析服务。

2.分析query数据:开通服务之后,可根据“按日期查询”也可根据“requestId查询”:

按日期查询:单击界面中的立即分析

等待分析完成。

requestId查询:输入有效的requestId单击查询

查询后,系统返回包含优化建议优化示例两列的结果表格。常见优化建议包括:减少 sorted_doc_count_in_qrs(降低 start+hit 值,例如将 hit:500 优化为 hit:50)、减少 seek_times(增加查询条件或改用 filter 子句)、减少 match_doc_count(增加查询或过滤条件,例如追加 AND status:4),每条建议均附带原始 Query 与优化后 Query 对比示例。

输入格式错误会有相关提示

例如输入无效的 requestId 123 并单击查询后,系统弹出错误提示对话框,提示"查询分析建议不存在,请检查RequestId是否有效",错误码为 Optimizer.OperationFailed.NoData

3.等待慢query数据分析之后,查看结果:可以选择不同的时间范围查询具体哪一天的慢查询结果。

也可以按不同维度对分析结果进行排序。

单击具体的慢Query类别语句,可以查看具体的搜索请求的RequestIdQuery总消耗(LCU)检索消耗(LCU)统计消耗(LCU)排序消耗(LCU)摘要消耗(LCU)其他消耗(LCU)以及优化建议

其他 LCU 优化方法

除使用慢 Query 分析识别高消耗查询外,还可通过以下方式降低 LCU 消耗:

  1. 减少召回文档数:在 config 子句中设置 hit 不超过 50,降低单次查询召回的文档数。示例:

    config=start:0,hit:50,format:fulljson
  2. 添加过滤条件:在 config 子句中添加 filter 参数,降低命中文档数。示例:

    config=start:0,hit:10,format:fulljson,filter=id>=0
  3. 使用数值分析和 range 检索:对大量使用模糊搜索及 filter 范围查询的字段,在索引结构中将分析方式设为数值分析,使用 range 检索降低 LCU 消耗。操作路径:实例详情 > 线下变更 > 索引结构,将目标字段的分析方式从关键字改为数值分析;检索时使用范围查询,例如:

    filter=id>100000