真实业务搜索,往往不是“写一个 query 就完了”,而是三步一起走:
1. 全文召回:先把像的找出来
2. 精确过滤:把不符合业务硬条件的剔掉
3. 聚合统计:把结果集做成统计面板把这个流水线画成图:
用户输入:"wireless headphones"
│
▼
query context(全文召回)
│
├── match / multi_match
├── 走 analyzer
├── 查倒排索引
└── 产生 _score
▼
filter context(硬条件)
│
├── category = audio
├── in_stock = true
└── price <= 2000
▼
aggregations(统计)
│
├── 品牌分布
├── 平均价格
└── 日期趋势
▼
返回
├── hits(结果列表)
└── aggregations(统计面板)这就是 Elasticsearch 跟“数据库查条件”最不同的地方:
它的默认工作方式更像一个搜索中台,而不是一台只负责返回布尔结果的条件机。