查表时希望根据DateTime字段获取某时间段的数据:
对应前端查询代码:
const url='http://ip:port/表名/_search'
const body: any = {
query: {
bool: {
must: [
{
match: {
name:'测试'
}
}
],
filter: {
range: {
"Datetime": {
gt: timeRange[0].format("YYYY-MM-DD HH:00:00"),
lt: timeRange[1].format("YYYY-MM-DD HH:00:00")
}
}
}
}
},
from: 0,
size: 10
};
Axios.post(url, body)
但在确定过滤时间段内有数据的情况下查出来的结果是空。
解决:在过滤字段Datetime上加上.keyword
filter: {
range: {
"Datetime.keyword": {
gt: timeRange[0].format("YYYY-MM-DD HH:00:00"),
lt: timeRange[1].format("YYYY-MM-DD HH:00:00")
}
}
}
其中gt代表大于,gte代表大于等于,lt小于,lte小于等于。
如果只想查询大于某个值的结果只传入gt即可。
es可视化查询:
使用Elasticsearch-head工具(git地址):