为什么弹性搜索内置衰减函数比script_score脚本函数快?

时间:2018-07-16 07:20:43

标签: elasticsearch

我在弹性搜索 script_score 中编写了一个脚本,用于计算当前日期和文档日期字段之间的年份间隔。

满分为100, doc ['date'] 距当前日期越近,获得的评分越高。

很显然,我的脚本是线性的。但是,与诸如高斯和线性衰减之类的内置衰减函数相比,该性能非常差。

我的衰减函数看起来比内置函数更有效。但是为什么表演如此异常。还是他们有什么办法可以提高我的脚本性能(糟糕的?)?

 'script_score': {
                            'script': {
                                'lang': 'painless',
                                "params": {
                                    'current_date': current_date
                                },
                             // pre compute numerical calculation to increase performance
                             // "source": "double d = 100.0 -((params.current_date-doc['date'].date.millis)/(3600000.0*24.0))/365.0*10.0); if(d<0||d>100){return 0.0;} else{return d;}"
                                "source": "double d = 100.0 -((params.current_date-doc['date'].date.millis)/3153600000.0); if(d<0||d>100){return 0.0;} else{return d;}"

                            }
                 }

 'gauss': {
                    'date': {
                       'origin': "2018-07-16",
                       'offset': '180d',
                       'scale': '360d'
                    }

          }

感谢您的所有建议。

0 个答案:

没有答案