3.4.2.9.Search template
创作人:骆潇龙
Elasticsearch 允许使用模板语言 mustache 来预设搜索逻辑,在实际搜索时,通过参数中的键值,对来替换模板中的占位符,最终完成搜索。该方式将搜索逻辑封闭在 Elasticsearch 中,可以使下游服务,在不知道具体搜索逻辑的情况下完成数据检索。我们以 Kibana 自带的航班数据kibana_sample_data_flights为基础,以按航班号搜索为例,简单介绍搜索模板的使用。
第一步,创建 ID 为 testSearchTemplate 的搜索模板,语句如下:
POST _scripts/testSearchTemplate { "script": { "lang": "mustache", #使用 mustache 模板语言 "source": { # 脚本内容 "query": { # 搜索逻辑 "term": { "FlightNum": { "value": "{{FlightNum}}" # 占位符 FlightNum } } } } } }
第二步,传参搜索数据,语句如下:
GET kibana_sample_data_flights/_search/template { "id": "testSearchTemplate", # 使用的模板ID "params": { "FlightNum": "9HY9SWR" # 占位符替换的值 } }
以上两步就是使用模板搜索数据,该逻辑等同于下面这个搜索:
GET kibana_sample_data_flights/_search { "query": { "term": { "FlightNum": { "value": "9HY9SWR" } } } }
《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.9.Search template(2) https://developer.aliyun.com/article/1230602