面试题答案
一键面试- 描述:
- 在Elasticsearch中,过滤上下文(filter context)主要用于筛选数据,它不计算相关性分数,仅根据条件判断文档是否匹配。我们要筛选出“product_type”为“electronics”且“price”大于100的文档,就可以利用过滤上下文的这种特性,通过组合多个过滤条件来实现。
- DSL语句:
{
"query": {
"bool": {
"filter": [
{
"term": {
"product_type": "electronics"
}
},
{
"range": {
"price": {
"gt": 100
}
}
}
]
}
}
}
上述DSL语句中,使用bool
查询的filter
部分来组合过滤条件。term
过滤用于精确匹配“product_type”为“electronics”,range
过滤用于匹配“price”大于100的文档。