DSL(Domain Specific Language)

可以把DSL想象为抽象语法树(ASTAbstract Syntax Tree)查询

两种类型:leaf query  和 compound query

  leaf query : 在特定的字段上,查询特定的值(match,term,range)

  compound query:按照一定的逻辑组合多个查询 或者 更改查询的行为 (bool,dis_max)

 

query vs. filter

query: 1. 确定文档是否匹配  2.计算一个_score,表示文档相对其他文档的匹配程度

filter : 1. 过滤结构化数据,  (是/否)(查询子句中使用的filter: bool(filter/must_not), constant_score(filter), filter聚合)

 

match 查询

  match 查询首先分析提供的字段, 分析进程从提供的数据构造查询 

match_phrase  短语查询

  原理是,倒排索引记录了term的位置信息。

  参数:slop 词相隔的距离 ,距离越近,得分越高

match_phrase_prefix 前缀匹配

  在文本的最后一个term上执行prefix匹配

  参数:max_expansions 最大匹配数量为3。每个分片返回三个

multi_match query  多个字段上匹配查询

  也可以使用通配符 *字段^3 该字段重要3倍,默认是所有字段匹配

  参数type:best_fields  最佳字段,为每个字段生成匹配查询,并将它们包装在dis_max查询  type:best_fields

       tie_breaker ,增加。 最佳查询的得分+第二个字段的得分*tie_breaker给定的数字

         most_fields   

         cross_fields 查询的几个字段中, 必须同时出现要查询的 term

term  

  在倒排索引中查找exact term的文档,不会对查询文档进行分析

  boost 

terms   

  过滤与提供字段的term(未分析)匹配的文档。与in很相似。lookup 机制

  参数

  

  

    

posted on 2019-11-13 17:39  浅蓝色星光  阅读(518)  评论(0编辑  收藏  举报