首页 > 其他 > 详细

Elasticsearch Query DSL学习和理解

时间:2020-11-24 20:28:25      阅读:28      评论:0      收藏:0      [点我收藏+]

Elasticsearch的Query DSL分类

  • 叶子Query语句

    在特定的字段中检索特定的关键词,比如match, term, range等。

  • 组合Query语句

    • 通过逻辑关系运算将叶子Query语句或者组合Query语句再组合。比如bool, dis_max。

    • 改变叶子Query语句或者组合Query语句的行为。比如constant_score。

检索DSL上下文

  • Query

    Query上下文解决的是"How well does this document match this query clause?"的问题,会计算文档和关键词的相关性打分。如果在DLS中有query关键字,则说明是一个Query上下文。

  • Filter

    Filter上下文解决的是"Does this document match this query clause?"的问题。不会计算相关性打分,只会判断yes或者no。如果在DSL中有filter关键字,则说明是一个Filter上下文。

组合语句的种类

  • bool 检索

    常用组合Query语句的关键字,包含must, should, must_not, filter四种逻辑关系。其中,must和should将子query的打分混合运算得到最终得分,而must_not和filter则作为Filter上下文来过滤文档。

    • must: 每个命中文档必须满足query语句条件,并且进行打分。
    • filter: 每个命中文档必须满足query语句条件,不进行打分,但语句会考虑缓存。
    • should: 每个命中文档最好包含query语句条件,会参与打分。minimum_should_match可以控制should子句的最少命中条数。没有must或filter时,默认值为1。否则,默认值为0。
    • must_not: 每个命中的文档必须不满足query语句条件,在filter上下文执行,不进行打分,但语句会考虑缓存。
  • boosting 检索

    主要用来将命中positive子句的文档返回,同时将命中negative子句文档的打分降低。包含postitive,negative,negative_boost关键字。

    • positive: 命中的文档必须满足的query语句条件。
    • negative: positive条件命中的文档,根据该条件判断是否要降低打分。
    • negative_boost: 降低打分的系数,取值范围0 - 1。
  • constant_score 检索

    针对filter语句,返回固定打分的命中文档。包含两个关键字filter, boost。

    • filter: 过滤子句
    • boost: 命中文档的打分
  • dis_max 检索

    返回命中至少一个字句的文档。如果一个文档命中了多个字句,则最终打分由最高分和其他分*tie_breaker的和来决定。包含两个关键字queries, tie_breaker

    • queries: 一个或多个子句,返回文档必须命中至少一个子句。如果命中多个,最终得分使用子句中打分的最高分。
    • tie_breaker: 命中多个子句时,非最高分子句作为增量,乘以该系数后叠加上去。
  • function_score 检索

    主要用来对命中的文档进行打分。包含query关键字和一个或多个function。每个命中的文档都会由打分函数来计算分数。

    • functions: function_score支持由functions来指定多个函数。
    • score_mode: 指定怎么将每个函数的打分综合计算。
    • weight: 因为不同function的打分不是归一化的,或者想单独对某个function的打分进行修改,weight就可以作为归一化或者修改的系数。如果weight独立于function出现,则直接作为一个函数,返回weight的值最为该函数的打分。
    • max_boost: 最终打分的最大值。
    • min_score: 返回的文档需要满足打分大于该值。
    • boost_mode: 指定怎么将一个命中文档在query context计算的得分和函数计算的得分合并。

Elasticsearch Query DSL学习和理解

原文:https://www.cnblogs.com/supertc/p/14032107.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!