1.Query Rules 的定义与作用
Query Rules 是 Elasticsearch 提供的一种功能,允许用户根据预定义的规则动态调整搜索结果。它通过匹配查询的元数据(如用户输入、地理位置、用户兴趣等),对搜索结果进行定制化调整,例如固定某些文档到结果顶部或排除某些文档。
2.Query Rules 的核心组成部分
(1)规则类型(Rule Type)
• `pinned`:将指定文档固定到搜索结果的顶部。例如,在电商场景中,可以将热门商品固定到搜索结果顶部,提高其曝光率。
• `exclude`:从搜索结果中排除指定文档。例如,可以排除过时的新闻或不再销售的商品。
(2)匹配条件(Criteria)
匹配条件用于定义规则触发的条件,支持多种匹配类型,如:
• `exact`:精确匹配,要求完全一致。
• `fuzzy`:模糊匹配,允许一定程度的误差。
• `contains`:包含匹配,检查字段中是否包含指定内容。
(3)动作(Actions)
动作是指当规则匹配时要执行的操作,例如:
• 固定特定的文档`_id`。
• 排除某些文档。
3.在搜索请求中应用 Query Rules 的案例
案例 1:推广特定内容
假设我们需要在用户搜索“智能手机”时,将某些热门商品固定到搜索结果顶部。
定义规则集:
```json
PUT _query_rules/promotion-ruleset
{
"rules": [
{
"rule_id": "promote-specific-products",
"type": "pinned",
"criteria": [
{
"type": "exact",
"metadata": "query_string",
"values": ["智能手机"]
}
],
"actions": {
"ids": ["product-123", "product-456"]
}
}
]
}
```
• `rule_id`:规则的唯一标识。
• `type`:规则类型为`pinned`,表示将指定文档固定到顶部。
• `