我根据下面的文档参数编写了一个简单的评分:
POST /_scripts/groovy/CustomScoring
{
"script": "(_source.ProductHits==null ? 0.1 :
(_source.ProductHits[myval]==null?0.2:_source.ProductHits[myval]))"
}
当我使用此自定义脚本对搜索结果进行排序时,这样:
POST /ecs/product/_search
{
"query": {
"bool": {
"must": [
{
"function_score":{
"query" : {"match_all": {}}
,"script_score": {
"script_id": "CustomScoring",
"lang" : "groovy",
"params":{
"myval": "iphone"
}
}
}
}
]
}
}
}
在50&000; 000个文档上运行 800ms (与 1ms 的初始运行时间相比)。 如何优化这种常规功能? Elasticsearch可以为这个函数使用某种缓存吗?
P.S。当我尝试使用基于doc.some_param.value的sum复杂公式和像log这样的嵌入式函数时,取而代之的是 40ms ,这仍然是合理的。