You're viewing version 2.8 of the OpenSearch documentation. This version is no longer maintained. For the latest version, see the current documentation. For information about OpenSearch version maintenance, see Release Schedule and Maintenance Policy.
Rename field processor
This is an experimental feature and is not recommended for use in a production environment. For updates on the progress of the feature or if you want to leave feedback, join the discussion in the OpenSearch forum.
The rename_field
search response processor intercepts a search response and renames the specified field. This is useful when your index and your application use different names for the same field. For example, if you rename a field in your index, the rename_field
processor can change the new name to the old one before sending the response to your application.
Request fields
The following table lists all available request fields.
Field | Data type | Description |
---|---|---|
field | String | The field to rename. Required. |
target_field | String | The new field name. Required. |
tag | String | The processor’s identifier. |
description | String | A description of the processor. |
Example
The following example demonstrates using a search pipeline with a rename_field
processor.
Setup
Create an index named my_index
and index a document with the field message
:
POST /my_index/_doc/1
{
"message": "This is a public message",
"visibility":"public"
}
Creating a search pipeline
The following request creates a search pipeline with a rename_field
response processor that renames the field message
to notification
:
PUT /_search/pipeline/my_pipeline
{
"response_processors": [
{
"rename_field": {
"field": "message",
"target_field": "notification"
}
}
]
}
Using a search pipeline
Search for documents in my_index
without a search pipeline:
GET /my_index/_search
The response contains the field message
:
Response
{
"took" : 1,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 2,
"relation" : "eq"
},
"max_score" : 1.0,
"hits" : [
{
"_index" : "my_index",
"_id" : "1",
"_score" : 1.0,
"_source" : {
"message" : "This is a public message",
"visibility" : "public"
}
}
]
}
}
To search with a pipeline, specify the pipeline name in the search_pipeline
query parameter:
GET /my_index/_search?search_pipeline=my_pipeline
The message
field has been renamed to notification
:
Response
{
"took" : 2,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 1,
"relation" : "eq"
},
"max_score" : 0.0,
"hits" : [
{
"_index" : "my_index",
"_id" : "1",
"_score" : 0.0,
"_source" : {
"visibility" : "public",
"notification" : "This is a public message"
}
}
]
}
}
You can also use the fields
option to search for specific fields in a document:
POST /my_index/_search?pretty&search_pipeline=my_pipeline
{
"fields":["visibility", "message"]
}
In the response, the field message
has been renamed to notification
:
Response
{
"took" : 4,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 1,
"relation" : "eq"
},
"max_score" : 0.0,
"hits" : [
{
"_index" : "my_index",
"_id" : "1",
"_score" : 0.0,
"_source" : {
"visibility" : "public",
"notification" : "This is a public message"
},
"fields" : {
"visibility" : [
"public"
],
"notification" : [
"This is a public message"
]
}
}
]
}
}