首页 > 解决方案 > 在客户端实现 created_on 和 updated_on 逻辑

问题描述

从 elasticsearch > 2 开始,没有_timestamp字段。我们必须明确地填充时间字段,例如created_onupdated_on

我知道填充这些字段的一种方法是检查要填充的项目是否已存在于数据库中uid(假设uid使用某些项目属性在客户端生成)。如果数据库中存在项目,则更新除 之外的所有字段created_on。如果 item 不存在,则在数据库中创建 item 且created_on等于当前时间的条目。

我的问题是:
*不是每次创建/更新时都检查是多余的吗?
*有没有更好的方法在客户端实现created_on和逻辑没有冗余(不查询elasticsearch)?updated_on

标签: elasticsearchdesign-patternslogic

解决方案


为此使用“中间件”是避免在客户端中使用这种逻辑的好方法,一旦更改设计,就需要对每个客户端实现进行更改,因此我认为这是摄取管道的一个很好的用例并且文档中有一个示例。

访问摄取元数据字段:除了元数据字段和源字段之外,摄取还将摄取元数据添加到它处理的文档中。这些元数据属性可在 _ingest 键下访问。目前 ingest 在 ingest 元数据的 _ingest.timestamp 键下添加了 ingest 时间戳。摄取时间戳是 Elasticsearch 收到索引或批量请求以预处理文档的时间。

如果您需要更智能的中间件,请注意脚本处理器,它允许在摄取管道中执行内联和存储的脚本。


推荐阅读