无法从 Elasticsearch 序列化 AWSDate

Posted

技术标签:

【中文标题】无法从 Elasticsearch 序列化 AWSDate【英文标题】:Unable to serialise AWSDate from Elasticsearch 【发布时间】:2020-05-04 13:55:43 【问题描述】:

我正在使用 AWS elasticsearch 服务作为我的数据库构建一个 AppSync 项目,并在查询时收到此错误:

“无法序列化值(/getUsers/created_at):无法序列化 2020-01-18T07:36:13 作为有效的 DateTime 对象。”

当我得到一个如下所示的用户对象时会发生这种情况:

type Users 
  id: String!
  name: String!
  description: String
  created_at: AWSDateTime
  updated_at: AWSDateTime
  logged_in: AWSDateTime

elasticsearch中存储的数据为字符串类型,格式为:2020-01-18T07:36:13。

我看到了类似的帖子,但找不到任何解决方案。那么,有什么办法,我应该在我的响应映射模板中将它反序列化为 AWSDataTime,或者我应该以某种日期格式存储在 elasticsearch 中。

我从这篇帖子Unable to serialise AWSDate from RDS in AppSync response mapping template 得到的一个解决方案是将日期类型设为字符串。但是,AWSDateTime 到底有什么用。

【问题讨论】:

【参考方案1】:

查看 AWS AppSync 文档,似乎时区偏移对于此标量(即 AWSDateTime)是强制性的。从您的示例中,这似乎丢失了,因为在 seconds 字段之后没有任何内容。您可以尝试自己附加时区偏移量,在这种情况下,它将正确序列化。

【讨论】:

以上是关于无法从 Elasticsearch 序列化 AWSDate的主要内容,如果未能解决你的问题,请参考以下文章

AWS OpenSearch 客户端错误:无法验证服务器是 Elasticsearch

AWS ElasticSearch 使用方案、主机和白名单从远程集群问题重新索引

AWS Managed ElasticSearch 上的弹性传输客户端

在AWS实例中无法访问弹性搜索

经验谈:ElasticSearch借助AWS缩放至PB规模

AWS Elasticsearch Service IAM 基于角色的访问策略