搜索应用程序搜索

编辑

此功能为 Beta 版,可能会发生更改。其设计和代码不如官方 GA 功能成熟,并按原样提供,不提供任何保证。Beta 版功能不受官方 GA 功能的支持 SLA 约束。

根据指定的查询参数,使用与搜索应用程序关联的搜索模板或默认模板(如果未指定)生成并执行 Elasticsearch 查询。未指定的模板参数将分配其默认值(如果适用)。

请求

编辑

POST _application/search_application/<名称>/_search

先决条件

编辑

需要对搜索应用程序的后备别名具有读取权限。

路径参数

编辑
typed_keys
(可选,布尔值)如果为 true,则聚合和建议器名称在响应中以其各自的类型为前缀。默认为 false

请求主体

编辑
params
(可选,字符串到对象的映射)用于从与搜索应用程序关联的搜索模板生成 Elasticsearch 查询的查询参数。如果在 params 中未指定搜索模板中使用的参数,则将使用该参数的默认值。

可以将搜索应用程序配置为验证搜索模板参数。有关详细信息,请参阅 put search application API 中的 dictionary 参数。

响应代码

编辑
400

传递给搜索模板的参数无效。例如:

  • 缺少必需的参数
  • 参数数据类型无效
  • 参数值无效
404
搜索应用程序 <名称> 不存在。

示例

编辑

以下示例针对名为 my-app 的搜索应用程序执行搜索,该应用程序使用来自 文本搜索示例的搜索模板

resp = client.search_application.search(
    name="my-app",
    params={
        "query_string": "my first query",
        "text_fields": [
            {
                "name": "title",
                "boost": 5
            },
            {
                "name": "description",
                "boost": 1
            }
        ]
    },
)
print(resp)
const response = await client.searchApplication.search({
  name: "my-app",
  params: {
    query_string: "my first query",
    text_fields: [
      {
        name: "title",
        boost: 5,
      },
      {
        name: "description",
        boost: 1,
      },
    ],
  },
});
console.log(response);
POST _application/search_application/my-app/_search
{
  "params": {
    "query_string": "my first query",
    "text_fields": [
      {"name": "title", "boost": 5},
      {"name": "description", "boost": 1}
    ]
  }
}

生成的 Elasticsearch 查询将如下所示:

{
  "from": 0,
  "size": 10,
  "query": {
    "multi_match": {
      "query": "my first query",
      "fields": [
        "description^1.0",
        "title^5.0"
      ]
    }
  },
  "explain": false
}

在这种情况下,请求中未指定 fromsizeexplain 参数,因此使用搜索模板中指定的默认值。

预期的响应是生成并执行的 Elasticsearch 查询的搜索结果。响应格式与 Elasticsearch 搜索 API 使用的格式相同

{
  "took": 5,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 1,
      "relation": "eq"
    },
    "max_score": 0.8630463,
    "hits": ...
  }
}