前端从Elasticsearch表中查询数据,通过时间范围查询,以及过滤条件不生效问题解决,以及Elasticsearch-head工具可视化查询语句使用
查表时希望根据DateTime字段获取某时间段的数据:对应前端查询代码:const url='http://ip:port/表名/_search'const body: any = {query: {bool: {must: [{match: {name:'测试'}}],
·
查表时希望根据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地址):
更多推荐
所有评论(0)