在 Painless 中使用 ingest 处理器

编辑

在 Painless 中使用 ingest 处理器

编辑

一些 ingest 处理器 通过 Painless 方法公开行为,这些方法可以在 ingest 管道中执行的 Painless 脚本中调用。

方法用法

编辑

所有 Painless 中可用的 ingest 方法都限定在 Processors 命名空间内。例如:

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 方法参考

编辑

字节转换

编辑

使用 bytes 处理器 返回在 value 参数中提供的人类可读的字节值中的字节数。

long bytes(String value);

小写转换

编辑

使用 lowercase 处理器value 参数中提供的字符串转换为其小写形式。

String lowercase(String value);

大写转换

编辑

使用 uppercase 处理器value 参数中提供的字符串转换为其大写形式。

String uppercase(String value);

JSON 解析

编辑

使用 JSON 处理器 将 JSON 字符串转换为结构化的 JSON 对象。第一个 json 方法接受一个 map 和一个键。处理器将 map 中由 key 参数指定的 JSON 字符串转换为结构化的 JSON 内容。该内容将直接添加到 map 对象中。

第二个 json 方法接受 value 参数中的 JSON 字符串,并返回一个结构化的 JSON 对象。

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

然后,您可以通过上下文对象将此对象添加到文档中。

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

URL 解码

编辑

使用 URL 解码处理器value 参数中提供的字符串进行 URL 解码。

String urlDecode(String value);

URI 分解

编辑

使用 URI 部分处理器 来分解 value 参数中提供的 URI 字符串。返回一个键值对的 map,其中键是 URI 组件的名称,例如 domainpath,值是该组件的对应值。

String uriParts(String value);

网络社区 ID

编辑

使用 社区 ID 处理器 计算网络流数据的网络社区 ID。

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)