ELK,萌萌哒

elasticsearch单字导致大结果集召回,性能出现问题,有好的方案解决吗?

Elasticsearch | 作者 kiralovecat | 发布于2019年11月25日 | 阅读数:2369

实际业务中,使用es6.x版本,其中文档数量在5亿左右,当用户输入单字,如:好,这种字的时候,容易召回上百万的结果集,导致function_score逻辑耗时超过2s。请问大家碰到这种情况是如何解决的?
已邀请:

core_wzw - 某AILab搜索技术负责人

赞同来自: tacsklet

(1)如果只是单字搜索不想耗时,那么:
目前兜底的打分模板不动,针对单字走另一个模板,该模板里的所有function_score匹配域保留重要字段即可,比如去掉描述、正文。因为单字场景用户提供的信息极少,用标题match+文档质量分足够出好文档。
(2)如果所有搜索词都想提速,那么:
修改原有打分模板,function_score保留原有样子,在filter里追加一个must去包一个/几个match或term,通过减少字段域或minimum_should_match往更严格的方向去卡匹配阈值,通过此来减少倒排求交召回的文档数量。阈值别太严格,不影响目标文档被召回即可。

tacsklet - 公司有用到es

赞同来自:

我们是限制不让这么用。。。有更好的方法请@我
匿名用户

匿名用户

赞同来自:

全文索引,都是挑几个重要的字段的,而且单字符的查询,意义有多大?起码应该2个字符以上。

要回复问题请先登录注册