Elasticsearch中range范围查询的boost作用及执行时间查询方法
Elasticsearch 相关问题解答
1、range范围查询中boost参数的相关性作用
Elasticsearch 会为所有匹配查询条件的文档计算相关性得分_score,得分越高的文档默认排序越靠前。boost参数的作用是加权放大当前range查询对最终_score的贡献权重。
默认情况下range查询的boost值为1,你给出的示例中boost设为2,意味着该range查询匹配到的文档,对应的相关性得分会是默认配置下的2倍。如果该range查询是复合查询(比如bool查询下的多个should子句)的一部分,那么该range条件的匹配结果对文档整体得分的影响,会高于其他boost值为1的查询子句。
2、查询range查询运行时执行耗时的方法
你可以通过两种方式获取耗时信息:
- 方法1:开启profile参数查询子句级独立耗时
要精准统计单个range子句的执行耗时,可以在查询请求路径末尾加上?profile=true参数,Elasticsearch会返回完整的查询执行链路详情,其中就包含每个查询子句的独立耗时。
示例请求如下:
你可以在返回结果的GET bank/account/_search?profile=true { "query":{ "range":{ "account_number":{ "gte": 516, "lte": 851, "boost": 2 } } } }profile.searches[].query数组中定位到type为range的条目,其time字段值即为该range查询的实际运行耗时。注意:
profile参数会引入额外的性能损耗,仅适用于调试场景,不要在生产环境的常规查询中开启。 - 方法2:查看整体查询耗时
如果你的查询语句中仅包含range这一个查询条件,直接查看普通查询返回结果根路径下的took字段即可,该字段值为整个查询请求的总执行耗时,单位为毫秒。
内容的提问来源于stack exchange,提问作者Kaviya Baki
相关产品推荐
相关产品推荐

