用于订购性能的ElasticSearch自定义脚本

时间:2015-01-11 11:43:46

标签: groovy elasticsearch

我根据下面的文档参数编写了一个简单的评分:

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 ,这仍然是合理的。

0 个答案:

没有答案