放置搜索应用程序
编辑放置搜索应用程序编辑
此功能处于测试阶段,如有更改,恕不另行通知。其设计和代码不如正式的 GA 功能成熟,并按原样提供,不作任何保证。测试功能不受正式 GA 功能的支持 SLA 的约束。
创建或更新搜索应用程序。
请求编辑
PUT _application/search_application/<name>
路径参数编辑
-
创建
- (可选,布尔值)如果为
true
,则此请求不能替换或更新现有的搜索应用程序。默认为false
。 -
<body>
-
(必需,对象)包含搜索应用程序的参数
<body>
对象的属性-
索引
- (必需,字符串数组)与此搜索应用程序关联的 索引。所有索引都需要存在才能添加到搜索应用程序中。
-
模板
-
(可选,对象)与此搜索应用程序关联的 搜索模板。搜索应用程序的模板仅通过搜索应用程序存储和访问。
- 此搜索模板必须是 Mustache 模板。
- 该模板必须包含 Mustache 脚本和脚本源。
- 可以通过后续的 放置搜索应用程序 请求修改模板。
- 如果在创建搜索应用程序时未指定模板,或者从搜索应用程序中删除了模板,我们将使用模板示例中定义的 query_string 作为默认值。
- 此模板将由 搜索应用程序搜索 API 用于执行搜索。
- 该模板接受一个可选的
dictionary
参数,该参数定义了一个用于验证发送到 搜索应用程序搜索 API 的参数的 JSON 模式。
<template>
的属性-
脚本
- (必需,对象)关联的 Mustache 模板。
-
字典
- (可选,对象)用于验证与 搜索应用程序搜索 API 一起使用的参数的字典。该字典必须是有效的 JSON 模式。如果未指定
dictionary
,则在应用于模板之前不会验证参数。
-
响应代码编辑
-
404
- 搜索应用程序
<name>
不存在。 -
409
- 搜索应用程序
<name>
存在,并且create
为true
。
示例编辑
以下示例创建或更新名为 my-app
的新搜索应用程序
PUT _application/search_application/my-app { "indices": [ "index1", "index2" ], "template": { "script": { "source": { "query": { "query_string": { "query": "{{query_string}}", "default_field": "{{default_field}}" } } }, "params": { "query_string": "*", "default_field": "*" } }, "dictionary": { "properties": { "query_string": { "type": "string" }, "default_field": { "type": "string", "enum": [ "title", "description" ] }, "additionalProperties": false }, "required": [ "query_string" ] } } }
指定上述 dictionary
参数后,搜索应用程序搜索 API 将执行以下参数验证
- 它只接受
query_string
和default_field
参数 - 它验证
query_string
和default_field
是否都是字符串 - 它只接受值为
title
或description
的default_field
如果参数无效,则 搜索应用程序搜索 API 将返回错误。
POST _application/search_application/my-app/_search { "params": { "default_field": "author", "query_string": "Jane" } }
在上面的示例中,default_field
参数的值无效,因此 Elasticsearch 将返回错误
{ "error": { "root_cause": [ { "type": "validation_exception", "reason": 'Validation Failed: 1: $.default_field: does not have a value in the enumeration [title, description];', "stack_trace": ... } ], "type": "validation_exception", "reason": 'Validation Failed: 1: $.default_field: does not have a value in the enumeration [title, description];', "stack_trace": ... }, "status": 400 }