丰富API

edit

以下是用于管理丰富策略的丰富API:

创建丰富策略 API

edit

创建一个富化策略。

PUT /_enrich/policy/my-policy
{
  "match": {
    "indices": "users",
    "match_field": "email",
    "enrich_fields": ["first_name", "last_name", "city", "zip", "state"]
  }
}

请求

edit

PUT /_enrich/policy/

先决条件

edit

要使用丰富策略,您必须具备:

  • read 对任何使用的索引的读取权限
  • enrich_user 内置角色

描述

edit

使用创建丰富策略 API 来创建一个 丰富策略

一旦创建,您无法更新或更改一个富化策略。 相反,您可以:

  1. 创建并执行一个新的丰富策略。
  2. 用新的丰富策略替换之前使用的丰富策略, 在任何正在使用的丰富处理器或ES|QL查询中。
  3. 使用删除丰富策略 API 或 Kibana中的索引管理 删除之前的丰富策略。

路径参数

edit
<enrich-policy>
(必需,字符串) 要创建或更新的丰富策略的名称。

请求体

edit
<policy-type>

(必需,对象) 配置富化策略。字段键是富化策略类型。有效的键值包括:

geo_match
基于geo_shape查询,将富化数据与传入文档匹配。有关示例,请参见 示例:基于地理位置丰富您的数据
match
基于term查询,将富化数据与传入文档匹配。有关示例,请参见 示例:基于精确值丰富您的数据
range
将传入文档中的数字、日期或IP地址与富化索引中的范围匹配,基于term查询。有关示例, 请参见示例:通过将值与范围匹配来丰富您的数据
的属性
indices

(必需,字符串或字符串数组) 用于创建富化索引的一个或多个源索引。

如果指定了多个索引,它们必须共享一个共同的 match_field

match_field
(必需,字符串) 源索引中用于匹配传入文档的字段。
enrich_fields
(必需,字符串数组) 要添加到匹配的传入文档中的字段。这些字段必须存在于源索引中。
query
(可选,查询DSL查询对象) 用于过滤富化索引中文档的查询。策略仅使用与此查询匹配的文档来丰富传入文档。默认为 match_all查询。

删除丰富策略 API

edit

删除现有的enrich policy及其 enrich index

DELETE /_enrich/policy/my-policy

请求

edit

DELETE /_enrich/policy/

先决条件

edit

要使用丰富策略,您必须具备:

  • read 对使用的任何索引的索引权限
  • enrich_user 内置角色

描述

edit

使用删除丰富策略 API 来删除现有的丰富策略及其丰富索引。

您必须在删除之前从任何正在使用的摄取管道中移除一个富化策略。 您不能移除正在使用的富化策略。

路径参数

edit
<enrich-policy>
(必需,字符串) 要删除的充实策略。

获取丰富策略 API

edit

返回有关enrich policy的信息。

GET /_enrich/policy/my-policy

请求

edit

GET /_enrich/policy/

GET /_enrich/policy

GET /_enrich/policy/policy1,policy2

先决条件

edit

要使用丰富策略,您必须具备:

  • read 对任何使用的索引的读取权限
  • enrich_user 内置角色

路径参数

edit
<name>

(可选, 字符串) 逗号分隔的丰富策略名称列表 用于限制请求。

要返回所有丰富策略的信息,请省略此参数。

示例

edit

获取单个策略

edit
GET /_enrich/policy/my-policy

API返回以下响应:

{
  "policies": [
    {
      "config": {
        "match": {
          "name": "my-policy",
          "indices": [ "users" ],
          "match_field": "email",
          "enrich_fields": [
            "first_name",
            "last_name",
            "city",
            "zip",
            "state"
          ]
        }
      }
    }
  ]
}

获取多个策略

edit
GET /_enrich/policy/my-policy,other-policy

API返回以下响应:

{
  "policies": [
    {
      "config": {
        "match": {
          "name": "my-policy",
          "indices": [ "users" ],
          "match_field": "email",
          "enrich_fields": [
            "first_name",
            "last_name",
            "city",
            "zip",
            "state"
          ]
        }
      }
    },
    {
      "config": {
        "match": {
          "name": "other-policy",
          "indices": [ "users" ],
          "match_field": "email",
          "enrich_fields": [
            "first_name",
            "last_name",
            "city",
            "zip",
            "state"
          ]
        }
      }
    }
  ]
}

获取所有策略

edit
GET /_enrich/policy

API返回以下响应:

{
  "policies": [
    {
      "config": {
        "match": {
          "name": "my-policy",
          "indices": [ "users" ],
          "match_field": "email",
          "enrich_fields": [
            "first_name",
            "last_name",
            "city",
            "zip",
            "state"
          ]
        }
      }
    },
    {
      "config": {
        "match": {
          "name": "other-policy",
          "indices": [ "users" ],
          "match_field": "email",
          "enrich_fields": [
            "first_name",
            "last_name",
            "city",
            "zip",
            "state"
          ]
        }
      }
    }
  ]
}

执行丰富策略 API

edit

执行现有的 enrich policy

PUT /_enrich/policy/my-policy/_execute?wait_for_completion=false

请求

edit

PUT /_enrich/policy//_execute

POST /_enrich/policy//_execute

先决条件

edit

要使用丰富策略,您必须具备:

  • read 对任何使用的索引的读取权限
  • enrich_user 内置角色

描述

edit

使用执行丰富策略 API 为现有丰富策略创建丰富索引。

丰富索引包含来自策略源索引的文档。 丰富索引始终以.enrich-*开头, 是只读的, 并且会进行强制合并

Enrich 索引应仅由 enrich 处理器ES|QL ENRICH 命令使用。避免将 enrich 索引用于其他目的。

一旦创建,您无法更新或将文档索引到扩展索引中。 相反,请更新您的源索引并执行扩展策略。 这将使用您更新的源索引创建一个新的扩展索引。 之前的扩展索引将通过延迟维护作业删除。 默认情况下,这是每15分钟执行一次。

默认情况下,此API是同步的:它在策略执行完毕后返回。由于执行策略会执行多个操作,因此可能需要一些时间才能返回响应,尤其是在源索引较大的情况下。这可能导致超时。为了防止超时,请将wait_for_completion参数设置为false。这将请求在后台异步运行,并返回一个任务ID。您可以使用任务ID通过任务管理API来管理请求。

路径参数

edit
<enrich-policy>
(必需,字符串) 要执行的丰富策略。

查询参数

edit
wait_for_completion
(可选,布尔值) 如果true,请求会阻塞直到执行完成。如果false,请求会立即返回,执行在后台异步运行。 默认为true

丰富统计 API

edit

返回富集协调器统计信息 以及关于当前正在执行的富集策略的信息。

GET /_enrich/_stats

请求

edit

GET /_enrich/_stats

响应体

edit
executing_policies

(对象数组) 包含有关每个正在执行的 丰富策略的信息的对象。

返回的参数包括:

name
(字符串) 丰富策略的名称。
task
(任务对象) 包含有关策略执行任务的详细信息的对象。
coordinator_stats

(对象数组) 包含有关每个协调摄取节点 的配置信息的对象。

返回的参数包括:

node_id
(字符串) 协调搜索请求的摄取节点的ID,用于配置的丰富处理器。
queue_size
(整数) 队列中的搜索请求数量。
remote_requests_current
(整数) 当前未完成的远程请求数量。
remote_requests_total

(整数) 自节点启动以来执行的未完成的远程请求数量。

在大多数情况下, 远程请求包括多个搜索请求。 这取决于远程请求执行时队列中的搜索请求数量。

executed_searches_total
(整数) 自节点启动以来,丰富处理器执行的搜索请求数量。
cache_stats

(对象数组) 包含有关每个摄取节点上的丰富缓存统计信息的对象。

返回的参数包括:

node_id
(字符串) 具有丰富缓存的摄取节点的ID。
count
(整数) 缓存条目的数量。
hits
(整数) 从缓存中提供服务的丰富查找次数。
misses
(整数) 无法从缓存中提供服务的丰富查找次数。
evictions
(整数) 从缓存中驱逐的缓存条目数量。
hits_time_in_millis
(长整型) 仅在成功缓存命中时,从缓存中获取数据所花费的时间(以毫秒为单位)。
misses_time_in_millis
(长整型) 仅在缓存未命中时,从丰富索引中获取数据并更新缓存所花费的时间(以毫秒为单位)。
size_in_bytes
(长整型) 丰富缓存在堆上占用的大小的近似值(以字节为单位)。

示例

edit
GET /_enrich/_stats

API返回以下响应:

{
  "executing_policies": [
    {
      "name": "my-policy",
      "task": {
        "id": 124,
        "type": "direct",
        "action": "cluster:admin/xpack/enrich/execute",
        "start_time_in_millis": 1458585884904,
        "running_time_in_nanos": 47402,
        "cancellable": false,
        "parent_task_id": "oTUltX4IQMOUUVeiohTt8A:123",
        "headers": {
          "X-Opaque-Id": "123456"
        }
      }
    }
  ],
  "coordinator_stats": [
    {
      "node_id": "1sFM8cmSROZYhPxVsiWew",
      "queue_size": 0,
      "remote_requests_current": 0,
      "remote_requests_total": 0,
      "executed_searches_total": 0
    }
  ],
  "cache_stats": [
    {
      "node_id": "1sFM8cmSROZYhPxVsiWew",
      "count": 0,
      "hits": 0,
      "misses": 0,
      "evictions": 0,
      "hits_time_in_millis": 0,
      "misses_time_in_millis": 0,
      "size_in_bytes": 0
    }
  ]
}