如何使用elastic-builder构造带script_score的Elasticsearch查询体
你可以直接使用elastic-builder提供的scriptScoreQuery API构造目标结构,track_total_hits属于请求顶层参数,需要在requestBodySearch实例上配置,完整实现代码如下:
const esQuery = esb.requestBodySearch() // 配置顶层track_total_hits参数 .trackTotalHits(true) .query( esb.scriptScoreQuery() // 配置script_score内部的查询条件 .query(esb.boolQuery().must(esb.matchAllQuery())) // 配置自定义评分脚本 .script(esb.script('source', '...my script...')) ) .toJSON()
调用toJSON()方法后生成的结构和你需要的目标JSON完全一致。
补充说明:你之前使用的functionScoreQuery对应的是Elasticsearch的function_score查询类型,和你需要的script_score是完全独立的两类查询,自然生成的结构不匹配需求。
内容的提问来源于stack exchange,提问作者Adriel Tosi
相关产品推荐
相关产品推荐

