elasticsearch - 如何使用弹性搜索(6 月 6 日晚上 7 点到 6 月 7 日晚上 7 点)定义日期时间范围以获取特定数据?
问题描述
我通过定义两个时间戳尝试了以下查询,但它获取了空结果。如果我在查询中给出类似 "from": "2021-06-06T19:00:00" 和 "to": "now" 的内容,它会获取结果,我如何定义 "from" 的日期时间范围:" 2021-06-06T19:00:00" 和 "to": "2021-06-07T19:00:00" 使用以下查询?
注意:参考此文档进行日期时间范围查询
POST invoices/_search
{
"from": 0,
"size": 50,
"query": {
"bool": {
"must": [
{
"range": {
"mdt": {
"from": "2021-06-06T19:00:00",
"to": "2021-06-07T19:00:00",
"include_lower": true,
"include_upper": true,
"boost": 1
}
}
}
],
"adjust_pure_negative": true,
"boost": 1
}
},
"version": true,
"explain": false
}
解决方案
很可能您使用的格式与映射不同。默认情况下,Elasticsearch 使用 's 映射中提供的日期格式。此值会覆盖该映射格式。所以我相信如果你将格式添加到范围查询中,你应该得到你期望的结果,所以你的查询应该是这样的:
询问:
POST invoices/_search
{
"from": 0,
"size": 50,
"query": {
"bool": {
"must": [
{
"range": {
"mdt": {
"gte": "2021-06-06T19:00:00",
"lte": "2021-06-07T19:00:00",
"include_lower": true,
"include_upper": true,
"boost": 1,
"format": "yyyy-MM-dd'T'HH:mm:ss.SSSSSSZ"
}
}
}
],
"adjust_pure_negative": true,
"boost": 1
}
},
"version": true,
"explain": false
}
您可以在此处查看 elasticsearch 支持的不同格式类型。
推荐阅读
- css - 如何在没有 html 头标签的情况下将外部 css 文件添加到 AngularJS
- java - 浓缩咖啡定制匹配器
- ajax - 如何使用javascript将消息发送回事物网络?
- wso2 - wso2 Identity Server 5.9.0 设置覆盖 carbon.xml
- javascript - React(next.js) 将状态从旧的 Classcomponents 更改为新的函数
- sql - Golang 时间比较无法正常工作
- excel - 不在两个数字之间且不为零时的Excel条件格式
- docker - Docker在ubuntu 16.04上配置Nginx和letencrypt问题
- android - 在 imageview 中显示白色方块,而不是来自 mipmap 的图像
- python - 使用 Python 对象和 Neo4j - 能够存储对象,例如 pandas 数据帧/字典