1、为什么使用查询模版

让应用程序开发者只需要把查询传递给elasticsearch,而不需要考虑查询语句的构造、查询DSL语法、查询结果过滤等细节知识。

2、使用版本5.1,查询模版在5.6中发生变化。注意。官网地址  https://www.elastic.co/guide/en/elasticsearch/reference/5.1/search-template.html

3、注册查询模版

  方法一:使用配置文件,需要copy到集群所有节点

You can register search templates by storing it in the config/scripts directory, in a file using the .mustache extension. In order to execute the stored template, reference it by it’s name under the template key:

GET /_search/template
{
"file": "storedTemplate",
"params": {
"query_string": "search for these words"
}
}

  方法二:.script索引

You can also register search templates by storing it in the cluster state. There are REST APIs to manage these indexed templates.

POST /_search/template/<templatename>
{
"template": {
"query": {
"match": {
"title": "{{query_string}}"
}
}
}
}

4、查看查询模版

This template can be retrieved by

GET /_search/template/<templatename>

which is rendered as:

{
"template": {
"query": {
"match": {
"title": "{{query_string}}"
}
}
}
}

5、删除查询模版

This template can be deleted by

DELETE /_search/template/<templatename>

6、使用查询模版

To use an indexed template at search time use:

GET /_search/template
{
"id": "templateName",
"params": {
"query_string": "search for these words"
}
}

7、验证查询模版

Validating templatesedit

A template can be rendered in a response with given parameters using

GET /_render/template
{
"inline": {
"query": {
"terms": {
"status": [
"{{#status}}",
"{{.}}",
"{{/status}}"
]
}
}
},
"params": {
"status": [ "pending", "published" ]
}
} This call will return the rendered template: {
"template_output": {
"query": {
"terms": {
"status": [
"pending",
"published"
]
}
}
}
} status array has been populated with values from the params object. File and indexed templates can also be rendered by replacing inline with file or id respectively. For example, to render a file template GET /_render/template
{
"file": "my_template",
"params": {
"status": [ "pending", "published" ]
}
} Pre-registered templates can also be rendered using GET /_render/template/<template_name>
{
"params": {
"..."
}
}

8、其他

File and indexed templates can also be rendered by replacing inline with file or id respectively. For example, to render a file template

GET /_render/template
{
"file": "my_template",
"params": {
"status": [ "pending", "published" ]
}
} Pre-registered templates can also be rendered using GET /_render/template/<template_name>
{
"params": {
"..."
}
} Explainedit You can use explain parameter when running a template: GET /_search/template
{
"file": "my_template",
"params": {
"status": [ "pending", "published" ]
},
"explain": true
} Profilingedit You can use profile parameter when running a template: GET /_search/template
{
"file": "my_template",
"params": {
"status": [ "pending", "published" ]
},
"profile": true
}

读《深入理解Elasticsearch》点滴-查询模版(结合官网手册,版本5.1)的更多相关文章

  1. 2022年官网下安装Elasticsearch最全版与官网查阅方法(8.1.0最新安装)

    目录 一.环境整合(需要提前装好) 构建工具(参考工具部署方式) 二.官方下载Elasticsearch部署安装 1.百度搜索"Elasticsearch",或者访问官网https ...

  2. 读《深入理解Elasticsearch》点滴-查询二次评分

    理解二次评分 二次评分是指重新计算查询返回文档中指定个数文档的得分,es会截取查询返回的前N个,并使用预定义的二次评分方法来重新计算他们的得分 小结 有时候,我们需要显示查询结果,并且使得页面上靠前文 ...

  3. 读《深入理解Elasticsearch》点滴-聚合-top_hits

    以下是官网手册(部分)(v5.1) 直接直接看官网手册 https://www.elastic.co/guide/en/elasticsearch/reference/5.1/search-aggre ...

  4. elasticsearch聚合查询

    作者注:本文系作者自己的理解.希望大家多多交流指正 官网java API term是代表完全匹配,也就是精确查询,搜索前不会再对搜索词进行分词,所以我们的搜索词必须是文档分词集合中的一个 TermsB ...

  5. 从查询重写角度理解elasticsearch的高亮原理

    一.高亮的一些问题 elasticsearch提供了三种高亮方式,前面我们已经简单的了解了elasticsearch的高亮原理; 高亮处理跟实际使用查询类型有十分紧密的关系,其中主要的一点就是muti ...

  6. 一文读懂一条 SQL 查询语句是如何执行的

    2001 年 MySQL 发布 3.23 版本,自此便开始获得广泛应用,随着不断地升级迭代,至今 MySQL 已经走过了 20 个年头. 为了充分发挥 MySQL 的性能并顺利地使用,就必须正确理解其 ...

  7. mysql系列:加深对脏读、脏写、可重复读、幻读的理解

    关于相关术语的专业解释,请自行百度了解,本文皆本人自己结合参考书和自己的理解所做的阐述,如有不严谨之处,还请多多指教. 事务有四种基本特性,叫ACID,它们分别是: Atomicity-原子性,Con ...

  8. 《深入理解Elasticsearch》README

    书目 <深入理解ElasticSearch>拉斐尔·酷奇,马雷克·罗戈任斯基[著]张世武,余洪森,商旦[译] 机械工业出版社,2016.1 本系列包括以下8篇笔记 第01章 Elastic ...

  9. elasticsearch 分页查询实现方案——Top K+归并排序

    elasticsearch 分页查询实现方案 1. from+size 实现分页 from表示从第几行开始,size表示查询多少条文档.from默认为0,size默认为10,注意:size的大小不能超 ...

随机推荐

  1. DOM操作(基础版)

    DOM操作(基础版) DOM是document Object Model的缩写,简称文档对象模型.只要记住这是操作文档的就行了. DOM基础选择器 1.getElementById(id); //获取 ...

  2. 前端项目升级到React-router5中遇到的问题解决方案以及思路

    我胡汉三有日子没回来写写文章了,最近一直再忙着将老项目升级,所以没时间来搞文章,今天突然感觉开了挂一样,爱因斯坦附体,把之前的bug都搞定了,在这里特意把升级中遇到的问题,记录下来,算是把这个坑填上. ...

  3. ObjectMapper2

    ObjectMapper mapper = new ObjectMapper();                try {                    user = mapper.read ...

  4. Python数据类型详解——字典

    Python数据类型详解--字典 引子 已经学习了列表,现在有个需求--把公司每个员工的姓名.年龄.职务.工资存到列表里,你怎么存? staff_list = [ ["Kwan", ...

  5. POJ-1222EXTENDED LIGHTS OUT-位运算枚举模板

    传送门:http://poj.org/problem?id=1222 题意:开关灯问题,一幅开关的灯中,给出一种操作,使得灯全关掉,(操作一个开关,相邻的灯也会改变) 思路:利用位运算枚举第一行: # ...

  6. Codeforces Round #379 (Div. 2) E. Anton and Tree 缩点 树的直径

    传送门 题意: 这道题说的是在一颗有两种颜色的树上,每操作一个节点,可以改变这个节点颜色和相邻同色节点的颜色.问最少操作次数,使得树上颜色相同. 思路: 先缩点,把相同的颜色的相邻节点缩在一起.再求出 ...

  7. cesium中json,geojson,stk,影像切片等数据的加载

    cesium中json.topojson.geojson.stk,影像切片等数据的加载 一.geojson.topojson,json数据的加载 不管是哪种json,都可以通过GeoJsonDataS ...

  8. 基于LinkedhashMap实现的LRU算法

    LRU全称是Least Recently Used,即最近最久未使用的意思.LRU算法的设计原则是:如果一个数据在最近一段时间没有被访问到,那么在将来它被访问的可能性也很小.也就是说,当限定的空间已存 ...

  9. SqlServer数据库技巧

    1.数值转换失败提供默认值 , )) end

  10. 【Offer】[13] 【机器人的运动范围】

    题目描述 思路分析 Java代码 代码链接 题目描述 地上有一个m行和n列的方格.一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和 ...