搜索管道

您可以使用 搜索管道 来构建新的或重用现有的结果重排序器、查询重写器以及其他在查询或结果上操作的组件。搜索管道使您能够更轻松地在 UDB-SX 内处理搜索查询和搜索结果。将部分应用程序功能移至 UDB-SX 搜索管道可以降低应用程序的整体复杂性。作为搜索管道的一部分,您需要指定一系列执行模块化任务的处理器的列表。然后,您可以轻松地添加或重新排序这些处理器,以根据应用程序需求定制搜索结果。

术语

以下是搜索管道的术语列表:

  • 搜索请求处理器:一个拦截搜索请求(请求中传递的查询和元数据)的组件,对搜索请求执行操作,并返回搜索请求。

  • 搜索响应处理器:一个拦截搜索响应和搜索请求(请求中传递的查询、结果和元数据)的组件,对搜索响应执行操作,并返回搜索响应。

  • 搜索阶段结果处理器:一个在协调节点级别上运行于搜索阶段之间的组件。搜索阶段结果处理器拦截从一个搜索阶段检索到的结果,并在将其传递给下一个搜索阶段之前进行转换。

  • 处理器:指搜索请求处理器或搜索响应处理器。

  • 搜索管道:集成到 UDB-SX 中的有序处理器列表。管道拦截查询,对查询进行处理,将其发送到 UDB-SX,拦截结果,对结果进行处理,然后将结果返回给调用应用程序,如下图所示。

搜索处理器示意图

管道的请求和响应处理都在协调节点上执行,因此没有分片级别的处理。

处理器

要了解有关可用搜索处理器的更多信息,请参阅搜索处理器

示例

要创建搜索管道,请向搜索管道端点发送一个请求,指定将按顺序应用的有序处理器列表:

PUT /_search/pipeline/my_pipeline 
{
  "request_processors": [
    {
      "filter_query" : {
        "tag" : "tag1",
        "description" : "This processor is going to restrict to publicly visible documents",
        "query" : {
          "term": {
            "visibility": "public"
          }
        }
      }
    }
  ],
  "response_processors": [
    {
      "rename_field": {
        "field": "message",
        "target_field": "notification"
      }
    }
  ]
}

有关创建和更新搜索管道的更多信息,请参阅创建搜索管道

要在查询中使用管道,请在 search_pipeline 查询参数中指定管道名称:

GET /my_index/_search?search_pipeline=my_pipeline

或者,您可以在请求中使用临时管道,或为索引设置默认管道。要了解更多信息,请参阅使用搜索管道

要了解如何检索现有搜索管道的详细信息,请参阅检索搜索管道