阿里巴巴程序员在 Elasticsearch 使用前置通配符 差点被开除
原文:https://www.jianshu.com/p/39ecc1bba539
最近在研究Elasticsearch多标签匹配问题,发现了这篇文章,大致看下了表达了一个意思:
搜索关键词时绝对不能使用前置通配符,否则一定会被别有用心的人搜索大段内容导致系统过载崩溃。
其实这个道理普通SQL查询中已经人尽皆知了,就像索引都是由前向后排序,如果前面加入通配符则会导致索引失效。
这位技术老哥可能高估了Elasticsearch的智能和稳定性,其实搜索这东西用逻辑上的原理来想想就知道,有些功能无论再好的系统也是难以实现的,从逻辑上就讲不通。
500引用我看了你的标题和内容 看了下贴的连接。 人家不是说不建议前置通配符吗? 没说不让啊(业务上肯定得前后都需要匹配) 然后解决方案是限制长度。或者像百度一样,直接忽略后面的字符
500 我看了你的标题和内容 看了下贴的连接。 人家不是说不建议前置通配符吗? 没说不让啊(业务上肯定得前后都需要匹配) 然后解决方案是限制长度。或者像百度一样,直接忽略后面的字符
标题改了下,前置通配符。文章里说的也一样,后置暂且不论,前置通配符搜索非常高耗能,即便单次200字搜索,也能造成严重性能损耗。即便限制了长度,数据量一大时,这种用法也是十分危险的,治标不治本。最根本解决办法是不用前置通配符,业务上的需要使用拆词等方法来替代。