带你读《Elastic Stack 实战手册》之24:——3.4.2.9.Search template(2)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 带你读《Elastic Stack 实战手册》之24:——3.4.2.9.Search template(2)

《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

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
编解码 JSON Java
带你读《Elastic Stack 实战手册》之24:——3.4.2.9.Search template(5)
带你读《Elastic Stack 实战手册》之24:——3.4.2.9.Search template(5)
111 0
带你读《Elastic Stack 实战手册》之24:——3.4.2.9.Search template(1)
带你读《Elastic Stack 实战手册》之24:——3.4.2.9.Search template(1)
|
JSON 数据格式
带你读《Elastic Stack 实战手册》之24:——3.4.2.9.Search template(4)
带你读《Elastic Stack 实战手册》之24:——3.4.2.9.Search template(4)
100 0
|
缓存 索引
带你读《Elastic Stack 实战手册》之24:——3.4.2.9.Search template(3)
带你读《Elastic Stack 实战手册》之24:——3.4.2.9.Search template(3)
|
索引
带你读《Elastic Stack 实战手册》之23:——3.4.2.8.Index template(7)
带你读《Elastic Stack 实战手册》之23:——3.4.2.8.Index template(7)
|
JSON 数据格式 索引
带你读《Elastic Stack 实战手册》之23:——3.4.2.8.Index template(6)
带你读《Elastic Stack 实战手册》之23:——3.4.2.8.Index template(6)
104 0
|
索引
带你读《Elastic Stack 实战手册》之23:——3.4.2.8.Index template(1)
带你读《Elastic Stack 实战手册》之23:——3.4.2.8.Index template(1)
|
索引
带你读《Elastic Stack 实战手册》之23:——3.4.2.8.Index template(4)
带你读《Elastic Stack 实战手册》之23:——3.4.2.8.Index template(4)
|
API 索引
带你读《Elastic Stack 实战手册》之23:——3.4.2.8.Index template(3)
带你读《Elastic Stack 实战手册》之23:——3.4.2.8.Index template(3)
101 0
|
JSON 安全 API
带你读《Elastic Stack 实战手册》之23:——3.4.2.8.Index template(2)
带你读《Elastic Stack 实战手册》之23:——3.4.2.8.Index template(2)
115 0