ES版本5.4ES貌似没有query对两个字段的差值直接做比较然后查询!
比如sql的形式为:SELECT * FROM tableA AS a WHERE a.endTime - a.beginTime > 38600
目前已知的实现方案为使用ScriptQuery构建查询语句,如下:
{
"from": 0,
"size": 100,
"query": {
"bool": {
"filter": {
"script": {
"script": {
"inline": "doc['endTime'].value - doc['beginTime'].value > 38600",
"lang": "painless"
},
"boost": 1
}
}
}
}
}
不知道是否还有其他的方案可以实现这种需求?
脚本查询语句的具体执行原理和普通查询语句有什么区别?性能会下降多少?
比如sql的形式为:SELECT * FROM tableA AS a WHERE a.endTime - a.beginTime > 38600
目前已知的实现方案为使用ScriptQuery构建查询语句,如下:
{
"from": 0,
"size": 100,
"query": {
"bool": {
"filter": {
"script": {
"script": {
"inline": "doc['endTime'].value - doc['beginTime'].value > 38600",
"lang": "painless"
},
"boost": 1
}
}
}
}
}
不知道是否还有其他的方案可以实现这种需求?
脚本查询语句的具体执行原理和普通查询语句有什么区别?性能会下降多少?
1 个回复
rockybean - Elastic Certified Engineer, ElasticStack Fans,公众号:ElasticTalk
赞同来自: kennywu76 、trycatchfinal 、medcl