MST
星途 面试题库

面试题:ElasticSearch过滤上下文智能筛选方法之中等难度题

在ElasticSearch中,假设我们有一个包含文档的索引,文档中有字段“product_type”和“price”。请描述如何使用过滤上下文实现筛选出“product_type”为“electronics”且“price”大于100的文档,并写出对应的DSL语句。
24.9万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

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

上述DSL语句中,使用bool查询的filter部分来组合过滤条件。term过滤用于精确匹配“product_type”为“electronics”,range过滤用于匹配“price”大于100的文档。