【发布时间】:2021-10-27 02:23:41
【问题描述】:
谁能详细说明弹性搜索中的这三个过滤器,即必须、应该、排除过滤器。 布尔查询的这些部分是否属于弹性搜索中的复合查询类别。
【问题讨论】:
标签: elasticsearch filter
谁能详细说明弹性搜索中的这三个过滤器,即必须、应该、排除过滤器。 布尔查询的这些部分是否属于弹性搜索中的复合查询类别。
【问题讨论】:
标签: elasticsearch filter
must 与逻辑 AND 运算符相同,should 与逻辑 OR 运算符相同
当您创建 DSL 查询时,这些子句用于组合多个条件(使用 bool query)
所有这些查询都包含在 bool 查询中。例如
{
"query": {
"bool": {
"must": {},
"should": {},
"filter": {}
}
}
}
更新 1:
should(有助于相关性得分)这意味着当您使用 should 子句时,搜索结果会根据文档数、字段长度、频率、总词频等多种因素返回。
而在filter 的情况下(不影响相关性得分),这意味着它只给出是/否的答案,即文档是否匹配。 (不考虑must和should子句考虑的其他因素)
【讨论】:
must 子句。唯一的区别是filter 子句忽略了查询的分数,而must 子句则有查询的分数。并且没有必要与过滤子句一起使用必须子句