Wil*_*amf 3 ruby elasticsearch tire
我有一个ElasticSearch模型(由Tire持有,没有ActiveRecord).如果我查询它,我得到一些方面的结果(如预期的那样).
The format is:
class Mention
include Tire::Model::Persistence
index_name 'mentions'
# basic display attributes
property :created_at, :type => 'date'
end
Run Code Online (Sandbox Code Playgroud)
查询返回结果很好.当我检查返回的日期时,我收到一个字符串.
1.9.2p320 :046 > a.results[0].created_at
=> "2012-12-26T02:55:50+01:00"
1.9.2p320 :047 > a.results[0].created_at.class
=> String
1.9.2p320 :048 > a.results[1].created_at
=> "2012-12-26T02:55:50+01:00"
1.9.2p320 :049 > a.results[2].created_at
=> "2012-12-26T02:56:33+01:00"
1.9.2p320 :050 > a.results[2].created_at.class
=> String
Run Code Online (Sandbox Code Playgroud)
我有一个简单的facet返回date_histogram,只是为了检索与查询匹配的日期结果量.格式如下:
facet 'volumes' do
date :created_at
end
Run Code Online (Sandbox Code Playgroud)
不幸的是,这似乎回归了一个疯狂的Unix时间戳.
1.9.2p320 :069 > d = a.helper.facets["volumes"]["entries"][0]["time"].to_s
=> "1356307200000"
1.9.2p320 :070 > d.class
=> String
1.9.2p320 :071 > Date.strptime(d, "%s")
=> Sun, 31 Aug 44949
1.9.2p320 :072 >
Run Code Online (Sandbox Code Playgroud)
我必须做错事.我呢?如果是这样,什么?
轮胎不会操纵构面响应,因此它返回Elasticsearch返回的原始值.
对于date_histogram
facet,时间戳返回为自纪元以来的毫秒数.另一方面,Ruby 从epoch开始工作几秒钟.
你能做的最简单的事就是简单地除以1000:
>> d = a.helper.facets["volumes"]["entries"][0]["time"].to_i
=> 1356307200000
>> Time.at(d/1000)
=> 2012-12-24 01:00:00 +0100
Run Code Online (Sandbox Code Playgroud)
可以说,Tire可以/应该在这里进行转换.