- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我绞尽脑汁想解决这个问题。一切似乎都已 checkout ,但无法正常工作:(
我有以下文件的索引test-index
:
{
"_index": "test-index",
"_type": "testType",
"_id": "AV33b_VYUyX1XZAq7NTI",
"_score": 1,
"_source": {
"timestamp": "2017-08-17T17:56:55"
}
},
{
"_index": "test-index",
"_type": "testType",
"_id": "AV33cBN4UyX1XZAq7NTJ",
"_score": 1,
"_source": {
"timestamp": "2017-08-18T17:11:12"
}
},
{
"_index": "test-index",
"_type": "testType",
"_id": "AV33cetJUyX1XZAq7NTK",
"_score": 1,
"_source": {
"timestamp": "2017-08-19T17:11:12"
}
}
GET test-index/testType/_search?pretty
{
"query": {
"range": {
"timestamp": {
"lte": "now-30m"
}
}
}
}
"hits": {
"total": 2,
"max_score": 1,
"hits": [
{
"_index": "test-index",
"_type": "testType",
"_id": "AV33b_VYUyX1XZAq7NTI",
"_score": 1,
"_source": {
"timestamp": "2017-08-17T17:56:55"
}
},
{
"_index": "test-index",
"_type": "testType",
"_id": "AV33cBN4UyX1XZAq7NTJ",
"_score": 1,
"_source": {
"timestamp": "2017-08-18T17:11:12"
}
}
]
gte now-30m
,它可以按预期工作,并以明天的时间戳提取记录。如果我也将其更改为
lte now-1d
,则范围查询正常工作,仅显示预期的08/17记录,但我想使用一分钟作为截止时间。当我尝试做几个小时时,也可以观察到相同的不当行为。
yyyy-MM-dd HH:mm:ss
并接受ES的默认日期映射,但是没有运气。
{
"_index": "test-index",
"_type": "testType",
"_id": "AV33gSs6UyX1XZAq7NTS",
"_score": 1,
"_source": {
"timestamp": "2017-08-18 19:11:12"
}
}
最佳答案
我想我最终找到了根本原因。在为文档建立索引时,ES会将提供的值视为UTC日期/时间。查询时,ES使用now
的UTC日期/时间与索引的时间戳进行比较。
假设我比UTC落后5个小时,并且正在使用本地日期/时区为文档编制索引,那么我的查询实际上是在说“给我少于5个小时-从现在开始30分钟的日期。
这是我最终编写的查询,以查看它在字面上进行比较的值,以及为实现 bool(boolean) 查询内部的“预期”结果而要做的事情:
GET test-index/testType/_search?pretty
{
"query": {
"bool" : {
"must" : {
"script" : {
"script" : {
"inline": "doc['timestamp'].value < new Date().getTime() - (5 * 60 * 60 * 1000) - (120 * 60 * 1000)",
"lang": "painless"
}
}
}
}
},
"script_fields": {
"timestampValue" : {
"script" : "doc['timestamp'].value"
},
"valueTimestampMustBeLessThan" : {
"script" : "new Date().getTime() - (120 * 60 * 1000)"
},
"now" : {
"script" : "new Date().getTime()"
},
"subtract": {
"script": "(120 * 60 * 1000)"
},
"timestamp" : {
"script" : "doc['timestamp']"
},
"lt?" : {
"script" : "doc['timestamp'].value < new Date().getTime() - (120 * 60 * 1000)"
},
"gt?" : {
"script" : "doc['timestamp'].value > new Date().getTime() - (120 * 60 * 1000)"
}
}
}
now
的UTC时间为11:41 pm,其“本地”时间为6:41 pm。 关于elasticsearch - 查询以提取超过30m年前更新的时间戳不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45765887/
给定一个带有多个 date_time 戳的字符串,我想 提取第一个戳及其前面的文本 候选字符串可以有一个或多个时间戳 后续的 date_time 戳记将被 sep="-" 隔开 后续date_time
是否可以合并从相机拍摄的文本和照片?我想在照片上标记日期和时间,但我在 Google 上找不到任何内容。 最佳答案 使用下面的代码来实现你所需要的。 Bitmap src = Bitm
有没有办法通过 Graph API 戳另一个用户?基于this post ,并使用 Graph Explorer ,我发布到“/USERID/pokes”,我已经授予它(Graph API 应用程序和
我有两个向左浮动的元素。一个是 body 的第一个 child ,另一个是容器的第一个 child ,容器是 body 的第二个 child 。 ...
我是一名优秀的程序员,十分优秀!