Java+ElasticSearch
如题:像那种实时刷新响应的全(局)文搜索接口请求,是如何保证性能的,如百度搜索,然后还要有提示
后端打算使用Java,然后不能分布式,接口日请求量大概在20万左右
1、接口日请求量在20万左右,这个值是不能作为性能指标参考的,至少要出现峰值负载。
2、百度搜索的结果不能称之为实时,百度搜索所能获取到的结果,在展现之前,经历了爬取、过滤、分词等操作,最终收录入库,数据的时效性是有限制的。
3、在缩短响应周期的处理上,是有很多手段的,比如热词预加载、多级哈希、响应数据分层次等,也就是对缓存的使用,对存储结构的优化,对单次传输数据体积的压缩。空间换效率是最常见的思路。
把需要搜索的数据存整理成json 形式写入到elasticSearch中,需要全文索引的字段设置分词,如果不设置分词,默认分词
会把字一个一个分词,查询的时候使用match 进行模糊查询,会分页返回结果,在数据量上百万的单个elasticSearch机器上(非分布式)
模糊搜索响应时间在毫秒级别。
JAVA客户端spring-data-elasticsearch
性能这块elasticsearch做的很好了,使用上只是调整服务配置和索引配置优化,搜索数据中文的话需要自己做词典,词典数据这块直接决定中文搜索质量