阿里巴巴程序员在 Elasticsearch 使用前置通配符 差点被开除

C 2020-5-4 2777

原文:https://www.jianshu.com/p/39ecc1bba539

最近在研究Elasticsearch多标签匹配问题,发现了这篇文章,大致看下了表达了一个意思:

搜索关键词时绝对不能使用前置通配符,否则一定会被别有用心的人搜索大段内容导致系统过载崩溃。

其实这个道理普通SQL查询中已经人尽皆知了,就像索引都是由前向后排序,如果前面加入通配符则会导致索引失效。

这位技术老哥可能高估了Elasticsearch的智能和稳定性,其实搜索这东西用逻辑上的原理来想想就知道,有些功能无论再好的系统也是难以实现的,从逻辑上就讲不通。

最新回复 (5)
  • 500 2020-5-4
    2

    我看了你的标题和内容

    看了下贴的连接。

    人家不是说不建议前置通配符吗?

    没说不让啊(业务上肯定得前后都需要匹配)

    然后解决方案是限制长度。或者像百度一样,直接忽略后面的字符

  • C 2020-5-4
    3
    500 我看了你的标题和内容 看了下贴的连接。 人家不是说不建议前置通配符吗? 没说不让啊(业务上肯定得前后都需要匹配) 然后解决方案是限制长度。或者像百度一样,直接忽略后面的字符

    标题改了下,前置通配符。文章里说的也一样,后置暂且不论,前置通配符搜索非常高耗能,即便单次200字搜索,也能造成严重性能损耗。即便限制了长度,数据量一大时,这种用法也是十分危险的,治标不治本。最根本解决办法是不用前置通配符,业务上的需要使用拆词等方法来替代。

  • 500 2020-5-4
    4
    C 标题改了下,前置通配符。文章里说的也一样,后置暂且不论,前置通配符搜索非常高耗能,即便单次200字搜索,也能造成严重性能损耗。即便限制了长度,数据量一大时,这种用法也是十分危险的,治标不治本。最根本解 ...

    太难了 现在都是like '%xxx%'

  • 恶霸 2020-5-4
    5

    水一下

  • crazyhl 2020-5-6
    6

    这是蘑菇街的程序员吧