在 Mapping 里面,将 dynamic 参数设置成 strict 可以拒绝索引包含未知字段的文档。 此条 Tips 由 medcl 贡献。

ES 查询 使用两个字段的差值做条件

Elasticsearch | 作者 OABern | 发布于2018年01月03日 | 阅读数:17720

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
                }
            }
        }
    }
}
 
不知道是否还有其他的方案可以实现这种需求?
脚本查询语句的具体执行原理和普通查询语句有什么区别?性能会下降多少?
已邀请:

rockybean - Elastic Certified Engineer, ElasticStack Fans,公众号:ElasticTalk

赞同来自: kennywu76 trycatchfinal medcl

最简单的方案,直接算好了存进去,最高效

要回复问题请先登录注册