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

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

《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

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