【问题标题】:How to map a Firestore date object to a date in elasticsearch如何将 Firestore 日期对象映射到 elasticsearch 中的日期
【发布时间】:2019-07-30 00:10:08
【问题描述】:

我正在使用云功能将 Firebase Firestore 文档发送到 elasticsearch 以进行索引。我正在尝试找到一种将firebase时间戳字段映射到索引中的elasticsearch日期字段的方法。

elasticsearch 日期类型映射支持 epoch_millis 和 epoch_seconds 格式,但 firestore 日期类型是如下对象:

"timestamp": {
  "_seconds": 1551833330,
  "_nanoseconds": 300000000
},

我可以使用秒字段,但会丢失秒的小数部分。

有没有办法将时间戳对象映射到索引中的日期字段,从 _seconds 和 _nanoseconds 字段计算 epoch_millis?我知道精度会丢失(毫微到毫微)。

【问题讨论】:

  • 您找到解决方案了吗?
  • 我最终在索引文档之前添加了另一个字段。不理想,但有效。
  • 你能解释一下你到底做了什么吗?

标签: firebase date elasticsearch timestamp google-cloud-firestore


【解决方案1】:

如果您不介意丢失秒的小数部分,您可以像这样在索引上设置映射,这就是我最终要做的:

"mappings": {
      "date_detection": false,
      "dynamic_templates": [
        {
            "dates": {
              "match": ".*_seconds",
              "match_pattern": "regex",
              "mapping": {
                  "type": "date",
                  "format": "epoch_second"
              }
            }
        }
      ]
}

它将任何时间戳(甚至嵌套在文档中)转换为具有秒精度的日期。

【讨论】:

  • 想知道,您为什么禁用 date_detection?另外,您在映射定义中设置了什么数据类型?字符串还是日期?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-10
  • 1970-01-01
  • 1970-01-01
  • 2011-08-12
  • 1970-01-01
  • 2010-10-31
  • 2019-04-15
相关资源
最近更新 更多