谁能详细说明弹性搜索中的这三个过滤器,即必须,应该,排除过滤器。在弹性搜索中,bool查询的这些部分属于复合查询吗?
must
为逻辑与运算符,should
为逻辑或运算符
这些子句用于在创建DSL查询
时组合多个条件(使用bool查询)。所有这些查询都包含在bool查询中。例如
{
"query": {
"bool": {
"must": {},
"should": {},
"filter": {}
}
}
}
更新1:
should(对相关度评分有贡献)这意味着当你使用should子句时,搜索结果将基于许多因素返回,如文档数、字段长度、频率、总词频率等。
而在filter
的情况下(不贡献相关性评分),这意味着它只是给出一个是/否的答案,即文档是否匹配。(不考虑must
和should
条款所考虑的其他因素)