搜索处理器

搜索处理器 #

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

搜索请求处理器 #

搜索请求处理器用于拦截搜索请求(包括查询语句和请求中传递的元数据),对其进行操作或处理,然后将处理后的请求提交至索引。

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

处理器描述最早可用版本
filter_query添加一个过滤查询,用于过滤搜索请求。1.14.0
script添加一个脚本,在新索引的文档上执行。1.14.0
semantic_query_enricher在索引或字段级别设置神经搜索和神经稀疏搜索的默认模型。1.14.0

搜索响应处理器 #

搜索响应处理器用于拦截搜索响应和搜索请求(包括查询、结果及请求中的元数据),对其进行操作或处理,然后返回处理后的搜索响应。

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

处理器描述最早可用版本
rename_field重命名一个已存在的字段。1.14.0

搜索阶段结果处理器 #

搜索阶段结果处理器在协调节点级别运行,位于两个搜索阶段之间。它会拦截一个搜索阶段返回的结果,并在将其传递给下一阶段之前进行转换。

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

处理器描述最早可用版本
hybrid-ranker-processor拦截查询阶段的结果,对文档评分进行归一化和合并,然后将文档传递至获取(fetch)阶段。1.14.1

查看可用的处理器类型 #

您可以使用 节点搜索管道 API 来查看当前可用的处理器类型:

GET /_nodes/search_pipelines

响应中包含 search_pipelines 对象,列出当前可用的请求和响应处理器:

响应示例
{
  "_nodes": {
    "total": 1,
    "successful": 1,
    "failed": 0
  },
  "cluster_name": "easy-leader",
  "nodes": {
    "1xzPLe7jSheptsZfLgDcZQ": {
      "name": "node-1",
      "transport_address": "127.0.0.1:9302",
      "host": "localhost",
      "ip": "127.0.0.1",
      "version": "7.10.2",
      "build_flavor": "default",
      "build_type": "tar",
      "build_hash": "ac7bdb31a4b56faa7726a6d9898d9d2171725051",
      "roles": [
        "data",
        "ingest",
        "master",
        "remote_cluster_client",
        "search"
      ],
      "search_pipelines": {
        "phase_results_processors": [
          {
            "type": "hybrid-ranker-processor"
          }
        ],
        "request_processors": [
          {
            "type": "filter_query"
          },
          {
            "type": "script"
          },
          {
            "type": "semantic_query_enricher"
          }
        ],
        "response_processors": [
          {
            "type": "hybrid_score_explanation"
          },
          {
            "type": "rename_field"
          }
        ]
      }
    }
  }
}