搜索管道
您可以使用搜索管道来构建新的或重用现有的结果重排器、查询重写器以及其他对查询或结果进行操作的组件。搜索管道使您更容易在 OpenSearch 中处理搜索查询和搜索结果。将部分应用程序功能移至 OpenSearch 搜索管道可降低应用程序的整体复杂性。作为搜索管道的一部分,您可以指定一个执行模块化任务的处理器列表。然后,您可以轻松添加或重新排列这些处理器,以自定义应用程序的搜索结果。
术语
以下是搜索管道术语列表
- 搜索请求处理器:一个组件,它拦截搜索请求(请求中传递的查询和元数据),对搜索请求执行操作,并返回搜索请求。
- 搜索响应处理器:一个组件,它拦截搜索响应和搜索请求(请求中传递的查询、结果和元数据),对搜索响应执行操作,并返回搜索响应。
- 搜索阶段结果处理器:一个在协调节点级别,在搜索阶段之间运行的组件。搜索阶段结果处理器拦截从一个搜索阶段检索到的结果,并在将其传递给下一个搜索阶段之前对其进行转换。
- 处理器:可以是搜索请求处理器或搜索响应处理器。
- 搜索管道:集成到 OpenSearch 中的按序排列的处理器列表。该管道拦截查询,对查询执行处理,将其发送到 OpenSearch,拦截结果,对结果执行处理,然后将其返回给调用应用程序,如下图所示。
管道的请求和响应处理都在协调节点上执行,因此没有分片级处理。
处理器
要了解有关可用搜索处理器的更多信息,请参阅搜索处理器。
示例
要创建搜索管道,请向搜索管道端点发送请求,指定一个按顺序应用的处理器列表
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
或者,您可以将临时管道与请求一起使用,或为索引设置默认管道。要了解更多信息,请参阅使用搜索管道。
要了解有关检索现有搜索管道详细信息的信息,请参阅检索搜索管道。
搜索管道指标
有关检索搜索管道统计信息的信息,请参阅搜索管道指标。