删除
在一个搜索模板完成了它的使命后,我们需要及时删除它,因为 Elasticsearch 默认缓存脚本的数据量是有上限的,删除的方式很简单,发送一个DELETE请求即可。
示例如下:
DELETE _scripts/<templateId> #1
templateId>为要删除的搜索模板的 ID,比如_scripts/testSearchTemplate表示的就是删除 ID 为testSearchTemplate的搜索模板。
使用
搜索模板的使用就是在搜索时,直接发送占位符的值,即可执行预设搜索语句。由于还是在搜索的范畴,所以发送请求的 path 是_search/template。
下面是关于使用搜索模板进行查询的示例:
GET <index>/_search/template?<query_parameters> #1 { "source": """{"query": {"term": {"FlightNum": {"value": "{{FlightNum}}"}}}}""", #2 "id": "testSearchTemplate", # 3 "params": { # 4 "FlightNum": "9HY9SWR" }, "profile": true, # 5 "explain": true # 6 }
模板搜索发送的地址为/_search/template,与搜索一样处为选填参数,你可以指定搜索的索引,不指定则表示搜索全部索引。
因为本质上还是属于搜索的范畴,所以一些搜索参数在模板搜索是也可以使用,比如:
l scroll(可选,时长):表示本搜索需要支持游标搜索,游标过期时间为配置值。
l ccs_minimize_roundtrips(可选,布尔值):如果为 true 则在跨集群搜索时最小化集群间交互。默认为 true。
l expand_wildcards(可选,字符串):表示索引通配符作用的范围,可配置为全部(all)、打开索引(open)、关闭索引(closed)、隐藏索引(hidden,需要与open或closed结合使用)、不允许通配符(none)。
l explain(可选,布尔值):表示返回结果是否带计算得分的详细信息,默认是false。
l ignore_throttled(可选,布尔值):如果为 true 则表示查询忽略被限制的索引,被限制的索引一般指被冻结(freeze)的索引,该值默认是 true。
l ignore_unavailable(可选,布尔值):如果为 true 则表示关闭的索引不在搜索范围内,默认值为 true。
l preference(可选,字符串):指定执行该操作的节点或分片,默认是随机的。
l rest_total_hits_as_int(可选,布尔值):如果为 true 则 hits.total 将会是个数值而非一个对象,默认为 false。
l routing(可选, 字符串):配置搜索执行的路由。
l search_type(可选,字符串):这是搜索的类型,可选值有:query_then_fetch、dfs_query_then_fetch。
l source 字段:用于配置搜索模板,该字段与 ID 字段冲突只能二选一,使用 source 表示不使用保存的模板而使用本模板。
l id 字段:表示本次查询使用的搜索模板 ID,该字段与 source 字 段冲突只能二选一。
l params 字段:配置的 key-value 值将替换模板中的占位符执行搜索。
l profile 字段:是可选字段,表示返回结果中是否有 Elasticsearch 执行搜索的一些元信息。
《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.9.Search template(4) https://developer.aliyun.com/article/1230599