搜索处理器
搜索处理器可分为以下类型:
搜索请求处理器
搜索请求处理器拦截搜索请求(请求中传递的查询和元数据),对搜索请求执行操作,并将搜索请求提交给索引。
下表列出了所有受支持的搜索请求处理器。
| 处理器 | 描述 |
|---|---|
filter_query |
添加一个用于过滤请求的过滤查询。 |
ml_inference |
调用已注册的机器学习(ML)模型以重写查询。 |
neural_query_enricher |
在索引或字段级别为神经搜索和神经稀疏搜索设置默认模型。 |
neural_sparse_two_phase_processor |
加速神经稀疏查询。 |
oversample |
增加搜索请求的 size 参数,并将原始值存储在管道状态中。 |
script |
添加一个在新索引文档上运行的脚本。 |
搜索响应处理器
搜索响应处理器拦截搜索响应和搜索请求(请求中传递的查询、结果和元数据),对搜索响应执行操作,并返回搜索响应。
下表列出了所有受支持的搜索响应处理器。
| 处理器 | 描述 | 最早可用版本 |
|---|---|---|
collapse |
基于字段值对搜索命中项进行去重,类似于搜索请求中的 collapse。 |
|
hybrid_score_explanation |
当启用 explain 参数时,向搜索结果添加详细的评分信息,提供有关混合查询中分数归一化、组合技术和单个分数计算的信息。 |
|
ml_inference |
调用已注册的机器学习(ML)模型,以便将模型输出作为额外的搜索响应字段。 | |
personalize_search_ranking |
使用 Amazon Personalize 对搜索结果进行重排序(需要设置 Amazon Personalize 服务)。 | |
rename_field |
重命名字段。 | |
rerank |
使用交叉编码器模型对搜索结果进行重排序。 | |
retrieval_augmented_generation |
用于对话式搜索中的检索增强生成(RAG)。 | |
sort |
按升序或降序对项目数组进行排序。 | |
split |
根据指定的分隔符将字符串字段拆分为子字符串数组。 | |
truncate_hits |
在达到指定的目标数量后丢弃搜索命中项。可以撤销 oversample 请求处理器的影响。 |
搜索阶段结果处理器
搜索阶段结果处理器在协调节点级别上运行于搜索阶段之间。它拦截从一个搜索阶段检索到的结果,并在将其传递给下一个搜索阶段之前进行转换。
下表列出了所有受支持的搜索阶段结果处理器。
| 处理器 | 描述 | 最早可用版本 |
|---|---|---|
normalization-processor |
拦截查询阶段结果,并在将文档传递给获取阶段之前对文档分数进行归一化和组合。 | 2.10 |
查看可用的处理器类型
您可以使用节点搜索管道 API 来查看可用的处理器类型:
GET /_nodes/search_pipelines
响应包含 search_pipelines 对象,其中列出了可用的请求和响应处理器:
响应
{
"_nodes" : {
"total" : 1,
"successful" : 1,
"failed" : 0
},
"cluster_name" : "runTask",
"nodes" : {
"36FHvCwHT6Srbm2ZniEPhA" : {
"name" : "runTask-0",
"transport_address" : "127.0.0.1:9300",
"host" : "127.0.0.1",
"ip" : "127.0.0.1",
"version" : "3.0.0",
"build_type" : "tar",
"build_hash" : "unknown",
"roles" : [
"cluster_manager",
"data",
"ingest",
"remote_cluster_client"
],
"attributes" : {
"testattr" : "test",
"shard_indexing_pressure_enabled" : "true"
},
"search_pipelines" : {
"request_processors" : [
{
"type" : "filter_query"
},
{
"type" : "script"
}
],
"response_processors" : [
{
"type" : "rename_field"
}
]
}
}
}
}
除了 UDB-SX 提供的处理器外,插件也可能提供额外的处理器。