读《深入理解Elasticsearch》点滴-查询模版(结合官网手册,版本5.1)

本文详细介绍了Elasticsearch查询模版的使用方法,包括为何使用查询模版、模版注册方式、如何查看和删除模版、以及如何在搜索过程中使用模版。此外还介绍了模版验证和性能分析的方法。

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
}

 

转载于:https://www.cnblogs.com/jiangtao1218/p/8592813.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值