《深入理解Elasticsearch(原书第2版)》一2.3.2 Mustache模板引擎

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介:

本节书摘来华章计算机《深入理解Elasticsearch(原书第2版)》一书中的第2章 ,第2.3.2节,[美]拉斐尔·酷奇(Rafal Ku) 马雷克·罗戈任斯基(Marek Rogoziski)著 张世武 余洪淼 商旦 译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.3.2 Mustache模板引擎

Elasticsearch使用Mustache模板引擎来为查询模板生成可用的查询语句。如你所见,每个变量被双大括号包裹,这一点是Mustache规范要求的,是该模板引擎间接引用变量的方式。Mustache模板引擎的完整语法不在本书讨论范围内,不过我们可以在这里简单介绍一下它最具魅力的部分,包括条件表达式、循环和默认值。

1. 条件表达式
{{val}}表达式用来插入变量val的值。{{#val}}和{{/val}}则用来在变量val取值计算为true时把位于它们之间的变量标记替换为变量值。
我们看一下下面这个示例:
image

这个命令将返回library索引中的所有文档。不过,假如我们把limit参数的取值改为true,则再次查询后,我们将只能得到两个文档。这是因为判断条件满足了,模板内容因此被激活。
 不幸的是,似乎直到本书写作时,笔者所使用的Elasticsearch版本在处理条件表达式时仍然有些问题。比如,其中一个相关问题可以在这里看到:https://github.com/Elasticsearch/Elasticsearch/issues/8308 。我们决定保留条件表达式这一小节,以期望相关问题都能在未来得到解决。使用条件表达式可以更方便地构造查询模板。
2. 循环
循环结构定义和条件表达式一模一样,都位于{{#val}}和{{/val}}之间。如果表达式中变量取值是数组,则可以使用{{.}}标记来指代当前变量值。
例如,假定我们需要模板引擎遍历一个词项数组来生成一个词项查询,可以执行如下命令:
image

3. 默认值
默认值标记允许我们在参数未定义时给它设置默认取值。比如,给var变量设置默认值语法的代码如下:
image

举个例子,假定我们要给查询模板中的phrase参数设置默认值“crime”,可以使用如下命令:
image

这个命令将从Elasticsearch查询出所有title字段中包含front的文档。而如果我们在params片段中不指定phrase参数的值,则使用crime来代替。

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
7月前
|
Web App开发 自然语言处理 API
巧记Elasticsearch常用DSL语法
记知识先记轮廓,关于DSL语法的轮廓,记住以下3句话即可:1.索引、文档和查询。2.Match、Term和Bool。3.还有翻页和聚合
巧记Elasticsearch常用DSL语法
|
8月前
|
JavaScript 容器
【Vue源码解析】mustache模板引擎
【Vue源码解析】mustache模板引擎
34 0
|
10月前
|
安全 Java 关系型数据库
elasticsearch安装dynamic-synonym插件
如何快速掌握Elasticsearch8.x同义词插件的使用,本文将层层深入带你从0到1理解ES的插件开发
elasticsearch安装dynamic-synonym插件
|
8天前
|
Python
配置模板引擎
【5月更文挑战第5天】配置模板引擎。
31 13
|
3月前
|
存储 安全 Java
深入了解 Elasticsearch 8.1 中的 Script 使用
深入了解 Elasticsearch 8.1 中的 Script 使用
111 1
|
5月前
|
数据库
ElasticSearch查询模板Mustache
ElasticSearch查询模板Mustache
78 0
|
10月前
|
JavaScript 前端开发
vue源码解析之mustache模板引擎
vue源码解析之mustache模板引擎
67 0
|
JSON 自然语言处理 算法
ElasticSearch(三)基础语法
ElasticSearch(三)基础语法
97 0
|
JavaScript 前端开发
Vue 源码之 mustache 模板引擎(一)
Vue 源码之 mustache 模板引擎(一)
459 0