Search processors
Search processors can be of the following types:
- Search request processors
- Search response processors
- Search phase results processors
- Viewing available processor types
Search request processors
A search request processor intercepts a search request (the query and the metadata passed in the request), performs an operation with or on the search request, and submits the search request to the index.
The following table lists all supported search request processors.
| Processor | Description |
|---|---|
filter_query | Adds a filtering query that is used to filter requests. |
script | Adds a script that is run on newly indexed documents. |
oversample | Increases the search request size parameter, storing the original value in the pipeline state. |
query_embedding | Embeds query text or images at search time and injects the resulting vector into the search query. Enables natural language search without client-side embedding calls. |
ml_inference | Calls a registered machine learning model, maps fields out of the query into its input, and writes the output back into the query or a query template. |
reproject | Reprojects query geometry from source_crs to target_crs. |
Search response processors
A search response processor intercepts a search response and search request (the query, results, and metadata passed in the request), performs an operation with or on the search response, and returns the search response.
The following table lists all supported search response processors.
| Processor | Description |
|---|---|
personalize_search_ranking | Uses Amazon Personalize to rerank search results (requires setting up the Amazon Personalize service). |
retrieval_augmented_generation | Used for retrieval-augmented generation (RAG) |
rename_field | Renames an existing field. |
collapse | Deduplicates search hits based on a field value, similarly to collapse in a search request. |
retrieval_grounding | Enriches search hits with provenance, spatial context, and chunk context metadata for explainable retrieval and RAG citation. |
multimodal_rerank | Reranks top-N search results using a multimodal inference model (Claude on Bedrock) for improved precision. |
truncate_hits | Discards search hits after a specified target count is reached. Can undo the effect of the oversample request processor. |
ml_inference | Calls a registered machine learning model on the returned hits and writes the output onto them — classification, enrichment, or scoring. |
reproject | Reprojects geometry in search hits from one CRS to another. |
reproject_raster | Reprojects imagery in search hits into target_crs, as colour PNG or scientific float samples. |
Search phase results processors
A search phase results processor runs between search phases at the coordinating node level. It intercepts the results retrieved from one search phase and transforms them before passing them to the next search phase.
The following table lists all supported search phase results processors.
| Processor | Description |
|---|---|
normalization-processor | Intercepts the query phase results and normalizes and combines the document scores before passing the documents to the fetch phase. |
Viewing available processor types
You can use the Nodes Search Pipelines API to view the available processor types:
GET /_nodes/search_pipelines
This API reports only request_processors and response_processors. It does not report
search phase results processors, so normalization-processor —
the processor that makes hybrid search work — is missing from its output. Treat the tables on this
page, not this response, as the complete list. For the equivalent ingest-side request, which is
complete, see Ingest processors.
The response contains the search_pipelines object that lists the available request and response processors:
Response
{
"_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"
}
]
}
}
}
}
In addition to the processors provided by Lucenia, additional processors may be provided by plugins.