es5.4.0查询模板鸡肋学习
2021/8/2 23:08:39
本文主要是介绍es5.4.0查询模板鸡肋学习,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- search template
- 1、前言(有用的前言)
- 2、简单存储
- ①、在集群状态下注册查询模板
- ②、写文件来查
- 3、内联查询
- 4、验算
- 5、Mustache模板语法
- 6、案例
search template
1、前言(有用的前言)
学习es的查询模板必须得先知道Mustache(胡子)语法
{{data}} {{#data}} {{/data}} {{^data}} {{/data}} {{.}} {{<partials}} {{{data}}} {{!comments}}
2、简单存储
①、在集群状态下注册查询模板
写查询模板
PUT _search/template/people_search_single_test { "template": { "query":{ "match":{ "name":"{{name}}" } } } }
查数据用查询模板(前提的有数据)
,注意关键词id
GET family_index/people/_search/template { "id":"people_search_single_test", "params":{ "name":"li yan" } }
②、写文件来查
在es路径下config/scripts中,创建文件,后缀名必须为
.mustache
,例如:people_search_single_test.mustache
内容如下
写文件people_search_single_test.mustache
{ "query": { "bool": { "must": { "match": { "name": "{{name}}" } } } } }
查数据
GET family_index/people/_search/template { "file":"people_search_single_test", "params":{ "name":"li yan" } }
3、内联查询
之前看官网介绍对查询模板很疑惑,会使用一种
内联
查询的方式,觉得很鸡肋,如下:毫无意义(模板就是为了简便,这样写就没有意义了)GET family_index/people/_search/template { "template": { "query":{ "match":{ "name":"{{name}}" } } }, "params":{ "name":"li yan" } }
4、验算
如果担心写的查询模板会有错误,那可以使用
_render
,带个参数进去验证#写 PUT _search/template/people_search_single_test { "template": { "query":{ "match":{ "name":"{{name}}" } } } } #查 GET _render/template/people_search_single_test { "params": { "name": "li yan" } } #-------结果---------- { "template_output": { "query": { "match": { "name": "li yan" } } } }
5、Mustache模板语法
{{parameter}}
:传参
{{#parameter}}{{/parameter}}
:若模板名称对应的参数不存在或者返回为false,那么此对标签包裹的内容将不显示
{{^parameter}}{{/parameter}}
:和上面一个相反,若模板名称对应的参数不存在或者返回为false,那么此对标签包裹的内容将显示
{{!我爱上班}}
:注释
{{#toJson}}{{/toJson}}
:转为JSON,一般针对对象的内容
{{#join}}{{/join}}
:拼接,默认,
{{#join delimiter='||'}}{{/join delimiter='||'}}
:自定义拼接符号
{{#url}}{{/url}}
:对URL转码
6、案例
文件名为:
people_search_complex_test.mustache
,用好{{#parameter}}{{/parameter}}
和{{^parameter}}{{/parameter}}
相当于if else
{ "query": { "bool": { "must": { "match": { "name": "{{name}}" } }, "filter": { {{#information}} "range": { "information.height": { {{#start}} "gte": "{{start}}" {{#end}},{{/end}} {{/start}} {{#end}} "lte": "{{end}}" {{/end}} } } {{/information}} {{^information}} "gte":"160", "lte":"190" {{/information}} } } }, "from": "{{from}}", "size": "{{size}}", "aggs": { "people_height_avg": { "avg": { "field": "information.height" } } }, "sort": { "information.height": { "order": "desc" } } }
#--查-- GET family_index/people/_search/template { "file": "people_search_complex_test", "params": { "name": "xiao li", "from": "0", "size": "2", "information":{ "start":150, "end":170 } } }
#--验算结果-- { "template_output": { "query": { "bool": { "must": { "match": { "name": "li yan" } }, "filter": { "range": { "information.height": { "gte": "150", "lte": "170" } } } } }, "from": "0", "size": "2", "aggs": { "people_height_avg": { "avg": { "field": "information.height" } } }, "sort": { "information.height": { "order": "desc" } } } }
这篇关于es5.4.0查询模板鸡肋学习的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-28一步到位:购买适合 SEO 的域名全攻略
- 2024-12-27OpenFeign服务间调用学习入门
- 2024-12-27OpenFeign服务间调用学习入门
- 2024-12-27OpenFeign学习入门:轻松掌握微服务通信
- 2024-12-27OpenFeign学习入门:轻松掌握微服务间的HTTP请求
- 2024-12-27JDK17新特性学习入门:简洁教程带你轻松上手
- 2024-12-27JMeter传递token学习入门教程
- 2024-12-27JMeter压测学习入门指南
- 2024-12-27JWT单点登录学习入门指南
- 2024-12-27JWT单点登录原理学习入门