最近在业务开发的过程中,需要使用到ElasticSearch搜索引擎来优化我们的小搜索(其实也算不上),我们需要根据关键字搜索出匹配的人员信息和节点信息,我们当时业务的数据量大概在200MB左右,一开始其实完全使用数据库完成这个搜索,但是随着用户量的增大(大概后期一百万左右),使用数据库完成搜索的速度之慢令人发指,大概5s左右(主要业务场景中还需要较多的表连接,导致速度变慢),所以后来我们打算采用ElasticSearch完成对搜索框的优化。
在使用ElasticSearch过程中,比如我们需要搜索叫张三的人,但200MB的数据中可能含有十几个张三,几百个张某三,照理说我指定返回评分最高的20条记录中,应该先是十几条张三,然后再是剩下的张某三,但是实际结果却是张某三和张三穿插其中,这和我们想要达到的效果就有些差异了,通过研究ElasticSearch的评分机制,才明白了问题所在。
首先我们先了解下ElasticSearch的评分机制: