elasticsearch functionScoreQuery scriptFunction效率问题
Elasticsearch | 作者 kepmoving | 发布于2017年03月31日 | 阅读数:11175FunctionScoreQueryBuilder weightBuilders = QueryBuilders.functionScoreQuery(queryBuilders, ScoreFunctionBuilders.scriptFunction(script)).boostMode(CombineFunction.SUM);
通过脚本去重新计算得分后,查询时间由原先的500ms以内,升高到要10s样子,索引的文档数接近3000W,这个应该怎么优化,10s也太夸张了。
有大神指点吗?
1 个回复
kennywu76 - Wood
赞同来自: laoyang360 、kepmoving 、medcl 、famoss 、Xargin 、delecarnegie 、xianyu 、tygcs 、zhangdi 、nofearinmyheat更多 »
如果实在拗不过产品,要严格按照对方要求的打分逻辑打分,而不得不用scriptQuery,那么有以下优化手段:
最后,在文档打分方面,很容易陷入一个误区,意图通过精妙的打分算法呈现给用户最精确的数据。 然而很多时候,这种努力是徒劳的。所谓的最佳匹配,通常是伪命题,不同的人有不同的理解。
读一读以下链接的文档会受到一些启发:
https://www.elastic.co/guide/e ... .html
吴军在《数学之美》这本书里,也阐述了类似的观点: