《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.9.Search template(1) https://developer.aliyun.com/article/1230603
API介绍
下面我们从搜索模板的生命周期:创建、查看、使用、删除来展开介绍模板搜索相关 API。
准备
在正式介绍之前,我们先来说一说关于模板搜索的几个预备知识。
首先,如果使用的 Elasticsearch 集群开启了安全功能,那么角色对操作的索引必须要有read权限。
其次,搜索模板使用的语法是Mustache
更多的关于该种脚本语言的介绍以及功能请查看其官方文档:
https://mustache.github.io/mustache.5.html
最后,模板搜索属于 Elasticsearch 中 Script 功能的扩展, Script 的限定及用法基本都适用于模板搜索。比如,集群关于 Script 的配置也会影响模板搜索,配置项script.allowed_types可规范模板搜索接受的类型( inline / stored / both ),script.allowed_contexts也会限制模板搜索可进行的操作。
创建
搜索模板的创建与 Elasticsearch 其它脚本的创建一样,都是发送 1 个POST请求即可。
如下所示:
POST _scripts/<templateId> # 1 { "script": { "lang": "mustache", # 2 "source": { # 3 "query": { "term": { "FlightNum": { "value": "{{FlightNum}}" # 可变参数 FlightNum } } } } } }
1、向_scripts/发送 POST 请求来创建搜索模板,其中是你为该模板设置的 ID,搜索时会用到该 ID。
2、lang 参数配置的是搜索模板使用的脚本语言为mustache。
3、source 参数配置的是搜索模板的具体内容,该部分的格式参照 Elasticsearch 搜索的请求 body,需要搜索时填充的值使用mustache语法,配置占位符即可,比如本例中的占位符就是
{{FlightNum}}。
查看
当我们想查看之前创建的模板内容,或者验证某个 ID 的模板是否存在时,可以向_scripts/发送 GET 请求来获取模板的具体内容。
示例如下:
GET _scripts/<templateId> # 1 { "_id" : "testSearchTemplate", # 2 "found" : true, # 3 "script" : { # 4 "lang" : "mustache", "source" : """{"query":{"term":{"FlightNum":{"value":"{{FlightNum}}"}}}}""", "options" : { # 5 "content_type" : "application/json; charset=UTF-8" } } }
1、请求的 path 为_scripts/,其中为你要查询的模板 ID,请求类型为GET。
2、返回的 body 中,_id 属性再次表明此次查询的模板 ID,本示例查询的是之前创建的testSearchTemplate模板。
3、found 属性表明此次查询是否查到结果,如果模板 ID 存在则此值为 true,反之为 false。
4、script 就是该搜索模板的具体内容与保存时相同。核心有 lang 属性表示脚本语法,source属性存放脚本具体内容。
5、script 属性中的 Options 属性是非必要其它脚本属性,默认会有 content_type 属性,该属性保存查询时 http 请求的content-type,默认为application/json; charset=UTF-8。
《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.9.Search template(3) https://developer.aliyun.com/article/1230601