Link Search Menu Expand Document Documentation Menu

搜索处理器

搜索处理器可以分为以下类型:

搜索请求处理器

搜索请求处理器会拦截搜索请求(查询和请求中传递的元数据),对搜索请求执行操作,然后将搜索请求提交到索引。

下表列出了所有支持的搜索请求处理器。

处理器 描述 最早可用版本
filter_query 添加用于过滤请求的过滤查询。 2.8
ml_inference 调用已注册的机器学习(ML)模型以重写查询。 2.16
neural_query_enricher 在索引或字段级别为神经搜索和神经稀疏搜索设置默认模型。 2.11 (神经), 2.13 (神经稀疏)
neural_sparse_two_phase_processor 加速神经稀疏查询。 2.15
oversample 增加搜索请求的 size 参数,并将原始值存储在管道状态中。 2.12
script(脚本) 添加一个在新增索引文档上运行的脚本。 2.8

搜索响应处理器

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

下表列出了所有支持的搜索响应处理器。

处理器 描述 最早可用版本
collapse 根据字段值对搜索结果进行去重,类似于搜索请求中的 collapse 2.12
hybrid_score_explanation explain 参数启用时,向搜索结果添加详细的评分信息,提供关于分数归一化、组合技术以及混合查询中各个分数计算的信息。 2.19
ml_inference 调用已注册的机器学习(ML)模型,以便将模型输出作为额外的搜索响应字段。 2.16
personalize_search_ranking 使用 Amazon Personalize 对搜索结果进行重新排序(需要设置 Amazon Personalize 服务)。 2.9
rename_field 重命名现有字段。 2.8
rerank 使用交叉编码器模型对搜索结果进行重新排序。 2.12
retrieval_augmented_generation 用于对话式搜索中的检索增强生成 (RAG)。 2.10 (在 2.12 版本中普遍可用)
sort(排序) 按升序或降序对项数组进行排序。 2.16
split 根据指定的分隔符将字符串字段拆分为子字符串数组。 2.17
truncate_hits 在达到指定目标数量后丢弃搜索结果。可以撤销 oversample 请求处理器的效果。 2.12

搜索阶段结果处理器

搜索阶段结果处理器在协调节点级别的搜索阶段之间运行。它拦截从一个搜索阶段检索到的结果,并对其进行转换,然后将其传递到下一个搜索阶段。

下表列出了所有支持的搜索阶段结果处理器。

处理器 描述 最早可用版本
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"
          }
        ]
      }
    }
  }
}

除了 OpenSearch 提供的处理器之外,插件也可能提供额外的处理器。

选择性启用处理器

search-pipeline-common 模块定义的处理器通过以下集群设置选择性启用:search.pipeline.common.request.processors.allowedsearch.pipeline.common.response.processors.allowedsearch.pipeline.common.search.phase.results.processors.allowed。如果未指定,则启用所有处理器。空列表会禁用所有处理器。移除已启用的处理器会导致使用它们的管道在节点重启后失败。


相关文章

剩余 350 字符

有问题?

想贡献?