搜索管道
您可以使用 搜索管道 来构建新的或重用现有的结果重排序器、查询重写器以及其他在查询或结果上操作的组件。搜索管道使您能够更轻松地在 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
或者,您可以在请求中使用临时管道,或为索引设置默认管道。要了解更多信息,请参阅使用搜索管道。
要了解如何检索现有搜索管道的详细信息,请参阅检索搜索管道。