ElasticSearch6 查询模板的创建使用
各个版本之间的使用命令还是有些差别,前段时间用6.1.3,不管是使用head还是cerebro,提交时总是碰到各种问题,部分原因就是以前看到的一些资料,版本较早,命令有些差异,所以把一些内容记下来,免得忘了。
官方地址 https://www.elastic.co/guide/en/elasticsearch/reference/6.8/search-template.html
cerebro系统操作如下:
下面的命令中:{es_path}替换为es的路径;{template_name}替换为模板名;{index_name}替换为索引名
1.创建模板
post http://{es_path}/_scripts/{template_name}
{ "script": { "lang": "mustache", "source": { "query": { "match": { "text": "{{query_string}}" } } } } }
2.查看模板
get http://{es_path}/_scripts/{template_name}
3.解析模板
get http://{es_path}/_render/template
{ "id":"tmp_query", "params":{ "query_string":"文本" } }
4.查询模板
get/post http://{es_path}/{index_name}/_search/template
{ "id":"tmp_query", "params":{ "query_string":"卫衣" } }
查看全部模板,在6.x中使用 _cluster/state ,结果中的metadata中的 stored_scripts。
业务中查询比较复杂的时候使用模板是个不错的选择,而且有些逻辑调整可以直接通过模板修改就可以完成,避免每次查询逻辑的调整,都需要重新发布代码,但需要做好模板的审核,如果能够在现有基础上进行二次开发,来进行模板的验证、审核、发布就更为理想。