DSL(Domain Specific Language)
可以把DSL想象为抽象语法树(AST,Abstract 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 机制
参数