不为失败找理由,要为成功找方法。

ES function_score计算分时,自定义script_score 里的def怎么取出结果的前几位

Elasticsearch | 作者 zhougreat | 发布于2019年07月09日 | 阅读数:3322

{
          "function_score": {
            "query": {"bool": {}},
            "score_mode": "sum",
            "max_boost": 200,
            "script_score": {
              "script": "def def_index=doc['region'].value;if(def_index === 110000){return 20 * 0.2}{return 95 * 0.2}else if(def_index [:?怎么取出前几位的值]=== 1100){return 60* 0.2}"
            },
            "boost_mode": "replace"
     }
}
已邀请:

zhougreat - 执念执着

赞同来自:

通过substring(0,index)解决  
{
          "function_score": {
            "query": {
              "bool": {
                "filter": [{}]
              }
            },
            "score_mode": "sum",
            "max_boost": 200,
            "script_score": {
              "script": "def def_index=doc['region_id'].value;if ( '110000' == def_index){return 100 * 0.25}else if ( '1100' == def_index.substring(0,4){return 50* 0.25}
            },
            "boost_mode": "replace"
          }
        }

要回复问题请先登录注册