elasticsearch/docs/reference/scripting-languages/painless/using-ingest-processors-in-painless.md
Colleen McGinnis b7e3a1e14b
[docs] Migrate docs from AsciiDoc to Markdown (#123507)
* delete asciidoc files

* add migrated files

* fix errors

* Disable docs tests

* Clarify release notes page titles

* Revert "Clarify release notes page titles"

This reverts commit 8be688648d.

* Comment out edternal URI images

* Clean up query languages landing pages, link to conceptual docs

* Add .md to url

* Fixes inference processor nesting.

---------

Co-authored-by: Liam Thompson <32779855+leemthompo@users.noreply.github.com>
Co-authored-by: Liam Thompson <leemthompo@gmail.com>
Co-authored-by: Martijn Laarman <Mpdreamz@gmail.com>
Co-authored-by: István Zoltán Szabó <szabosteve@gmail.com>
2025-02-27 17:56:14 +01:00

3.7 KiB

mapped_pages
https://www.elastic.co/guide/en/elasticsearch/painless/current/painless-ingest.html

Using ingest processors in Painless [painless-ingest]

Some ingest processors expose behavior through Painless methods that can be called in Painless scripts that execute in ingest pipelines.

Method usage [_method_usage]

All ingest methods available in Painless are scoped to the Processors namespace. For example:

POST /_ingest/pipeline/_simulate?verbose
{
  "pipeline": {
    "processors": [
      {
        "script": {
          "lang": "painless",
          "source": """
            long bytes = Processors.bytes(ctx.size);
            ctx.size_in_bytes = bytes;
          """
        }
      }
    ]
  },
  "docs": [
    {
      "_source": {
        "size": "1kb"
      }
    }
  ]
}

Ingest methods reference [_ingest_methods_reference]

Byte conversion [_byte_conversion]

Use the bytes processor to return the number of bytes in the human-readable byte value supplied in the value parameter.

long bytes(String value);

Lowercase conversion [_lowercase_conversion]

Use the lowercase processor to convert the supplied string in the value parameter to its lowercase equivalent.

String lowercase(String value);

Uppercase conversion [_uppercase_conversion]

Use the uppercase processor to convert the supplied string in the value parameter to its uppercase equivalent.

String uppercase(String value);

JSON parsing [_json_parsing]

Use the JSON processor to convert JSON strings to structured JSON objects. The first json method accepts a map and a key. The processor converts the JSON string in the map as specified by the key parameter to structured JSON content. That content is added directly to the map object.

The second json method accepts a JSON string in the value parameter and returns a structured JSON object.

void json(Map<String, Object> map, String key);
Object json(Object value);

You can then add this object to the document through the context object:

Object json = Processors.json(ctx.inputJsonString);
ctx.structuredJson = json;

URL decoding [_url_decoding]

Use the URL decode processor to URL-decode the string supplied in the value parameter.

String urlDecode(String value);

URI decomposition [_uri_decomposition]

Use the URI parts processor to decompose the URI string supplied in the value parameter. Returns a map of key-value pairs in which the key is the name of the URI component such as domain or path and the value is the corresponding value for that component.

String uriParts(String value);

Network community ID [_network_community_id]

Use the community ID processor to compute the network community ID for network flow data.

String communityId(String sourceIpAddrString, String destIpAddrString, Object ianaNumber, Object transport, Object sourcePort, Object destinationPort, Object icmpType, Object icmpCode, int seed)
String communityId(String sourceIpAddrString, String destIpAddrString, Object ianaNumber, Object transport, Object sourcePort, Object destinationPort, Object icmpType, Object icmpCode)