MST
星途 面试题库

面试题:ElasticSearch中如何设计一个包含多条件过滤的查询请求体

假设你有一个ElasticSearch索引存储了商品信息,每个文档包含商品名称、价格、类别等字段。现在要求设计一个查询请求体,能够筛选出类别为'电子产品'且价格在100到500之间的商品,详细描述请求体各部分的含义。
24.1万 热度难度
数据库ElasticSearch

知识考点

AI 面试

面试题答案

一键面试
{
    "query": {
        "bool": {
            "filter": [
                {
                    "term": {
                        "类别.keyword": "电子产品"
                    }
                },
                {
                    "range": {
                        "价格": {
                            "gte": 100,
                            "lte": 500
                        }
                    }
                }
            ]
        }
    }
}
  • query:代表查询部分,是Elasticsearch查询请求体的核心部分,定义了如何从索引中检索数据。
  • bool:布尔查询,它可以组合多个查询子句,通过must(必须满足)、should(应该满足)、filter(过滤)、must_not(必须不满足)等条件来构建复杂查询逻辑。这里使用filter,它主要用于筛选数据,不参与评分,性能较好。
  • term:用于精确匹配,类别.keyword表示对类别字段进行精确匹配,这里假设类别字段映射为keyword类型,确保精确匹配。将“电子产品”作为匹配值,筛选出类别为“电子产品”的文档。
  • range:用于范围查询,价格表示对价格字段进行范围查询。gte表示大于等于,lte表示小于等于,这里筛选出价格在100(包含)到500(包含)之间的商品。