Elasticsearch:在 Epoch 之前存储和查询日期

Elasticsearch: store & query dates before Epoch

我正在寻找一种能够存储和查询大纪元(1970 年 1 月 1 日)之前的日期的解决方案。

例如,我试图将日期 December, 25 1969 00:00:00 +0100 存储到 Elasticsearch 的索引中。 我想可以存储到字符串或整数中,但是有什么解决方案可以将字段类型 date 保留到 Elasticsearch 的映射中吗?

您绝对可以存储纪元之前的日期,只需存储日期字符串或负数即可。

如果您的索引映射如下所示:

PUT epoch
{
  "mappings": {
    "properties": {
      "my_date": {
        "type": "date"
      }
    }
  }
}

然后你可以索引纪元之前的文档,像这样:

PUT epoch/_doc/1
{
  "my_date": -608400
}

PUT epoch/_doc/2
{
  "my_date": "1969-12-25T00:00:00"
}

当搜索日期早于纪元的文档时,两者都会返回:

POST epoch/_search 
{
  "query": {
    "range": {
      "before": {
        "lt": "1970-01-01"
      }
    }
  }
}