elasticsearch,Json,Datetime,elasticsearch" /> elasticsearch,Json,Datetime,elasticsearch" />

Elasticsearch如何将日期转换为JSON字符串表示?

Elasticsearch如何将日期转换为JSON字符串表示?,json,datetime,elasticsearch,Json,Datetime,elasticsearch,我有一个关于Elasticsearch如何将日期转换为JSON字符串表示的问题。我在本例中使用的是1.4.2版 首先,将包含名为“postDate”的日期字段的简单文档发布到类型为“datetest”的“myindex”中: curl -XPOST "http://localhost:9200/myindex/datetest/" -d' { "content": "Hello World!", "postDate": "2009-11-15T14:12:12" }' 我们可以

我有一个关于Elasticsearch如何将日期转换为JSON字符串表示的问题。我在本例中使用的是1.4.2版

首先,将包含名为“postDate”的日期字段的简单文档发布到类型为“datetest”的“myindex”中:

curl -XPOST "http://localhost:9200/myindex/datetest/" -d'
{
    "content": "Hello World!",
    "postDate": "2009-11-15T14:12:12"
}'
我们可以查看自动生成的postDate的字段映射

curl -XGET "http://localhost:9200/myindex/_mapping/"

##postDate":{"type":"date","format":"dateOptionalTime"}
现在让我们发布另一个文档。此时间postDate包含UTC偏移量


curl -XPOST "http://localhost:9200/myindex/datetest/" -d'
{
    "content": "Hello World!",
    "postDate": "2009-11-15T14:12:12-07:00"
}'
现在,让我们检索上面创建的文档:

curl -XGET 'http://localhost:9200/myindex/datetest/_search?q=Hello'

  "hits": {
    "total": 2,
    "max_score": 0.11506981,
    "hits": [
      {
        "_index": "myindex",
        "_type": "datetest",
        "_id": "AUw0TyJgqFHXxhSON3r8",
        "_score": 0.11506981,
        "_source": {
          "content": "Hello World!",
          "postDate": "2009-11-15T14:12:12"
        }
      },
      {
        "_index": "myindex",
        "_type": "datetest",
        "_id": "AUw0VIQbqFHXxhSON3r-",
        "_score": 0.095891505,
        "_source": {
          "content": "Hello World!",
          "postDate": "2009-11-15T14:12:12-07:00"
        }
      }
    ]
  }
您可以看到,在返回的每个文档中,postDate的格式都与发布时完全相同。这让我很困惑。根据,

“日期类型是一种特殊类型,它映射到JSON字符串类型 遵循可显式设置的特定格式。所有日期均为 UTC。在内部,日期映射到一个长的数字类型,并添加 从字符串到长字符串和从长字符串到字符串的解析阶段。“(强调我的)

我的两个问题是:

1) 因为“在内部,一个日期映射到一个长的数字类型”,它是如何或在哪里的 elasticsearch存储日期的元数据信息 张贴

2) 我是否能够为日期指定输出格式, 不管他们是怎么发布的。也就是说,我可以控制“长”吗
字符串“转换独立于日期的输入方式吗?

源按原样存储,当您检索它时,Elasticsearch将返回您发布的相同文档

它在索引中“存储”长类型,并使用它在内部执行查询,但您看不到它

不要混淆源和索引

就像在索引字符串“Erik Iverson”时,它会保存在索引2术语[Erik][Iverson]中,但在检索文档时,会得到原始字符串,因为源没有更改