《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.9.Search template(3) https://developer.aliyun.com/article/1230601
l explain 字段:是可选字段,与 http 中搜索参数配置的 explain 含义一样,表示结果是否带计算得分的详细信息。
上述搜索返回结果如下:
{ "took" : 1, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 1, "relation" : "eq" }, "max_score" : 9.071844, "hits" : [ { "_shard" : "[kibana_sample_data_flights][0]", "_node" : "ydZx8i8HQBe69T4vbYm30g", "_index" : "kibana_sample_data_flights", "_type" : "_doc", "_id" : "KPRFDHkB9LctWlE3WLqj", "_score" : 9.071844, "_source" : { "FlightNum" : "9HY9SWR", "DestCountry" : "AU", "OriginWeather" : "Sunny" }, "_explanation" : {} # 计算得分的逻辑 } ] }, "profile" : {} # 搜索细节信息 }
其它
本部分将介绍关于模板搜索的一些小技巧。通常情况下我们写的搜索模板,往往是很难一次就配置正确的,因此需要频繁的测试我们写的模板,与参数结合后是否是我们预期的搜索语句,这时我们就可以使用以下这个请求,来校验模板使用是否正确。
GET _render/template # 1 { "source": """{"query": {"term": {"FlightNum": {"value": "{{FlightNum}}"}}}}""" ,# 2 "params": { # 3 "FlightNum": "9HY9SWR" } } { # 4 "template_output" : { "query" : { "term" : { "FlightNum" : { "value" : "9HY9SWR" } } } } }
1、向_render/template发送 GET 请求来验证模板是否正确。
2、source 字段为要验证的搜索模板,该字段可以省略,如果省略需要在 path 处指定模板
iID,比如_render/template/testSearchTemplate。
3、params 字段为模板使用的参数。
4、此 JSON 就是该请求的返回,template_output字段就是在使用此params下搜索模板生成的查询语句。
模板语言 mustache 有许多功能,这里再介绍几个比较常见的。
比如我们使用占位符替换的不是一个字符串,而是一个对象或数组对象,那么我们可以用{{#toJson}}{{/toJson}}来实现,
具体如下:
GET _render/template { "source": """{"query": {"term": {"FlightNum": {{#toJson}}FlightNum{{/toJson}} }}}""", # 1 "params": { # 2 "FlightNum": { "value":"9HY9SWR" } } } { # 3 "template_output" : { "query" : { "term" : { "FlightNum" : { "value" : "9HY9SWR" } } } } }
《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.9.Search template(5) https://developer.aliyun.com/article/1230598