Elasticsearch查询指南
查表时希望根据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地址):
前端从Elasticsearch表中查询数据 通过时间范围查询 以及过滤条件不生效问题解决 以及Elasticsearch-head工具可视化查询语句使用