公司是做社交相关产品的,社交类产品对搜索功能需求要求就比较高,需要根据用户城市.用户ID昵称等进行搜索. 项目原先的搜索接口采用SQL查询的方式实现,数据库表采用了按城市分表的方式.但随着业务的发展,搜索接口调用频次越来越高,搜索接口压力越来越大,搜索数据库经常崩溃,从而导致搜索功能经常不能使用. 从上面的系统架构图可以看出,当用户修改资料时,接口会修改用户库信息,接着触发器会将改变的用户信息写入临时表.定时脚本每隔1分钟扫描一次临时表,将变更的数据写入到搜索库中.当用户再次请求搜索接口时,就可…
公司是做社交相关产品的,社交类产品对搜索功能需求要求就比较高,需要根据用户城市.用户ID昵称等进行搜索. 项目原先的搜索接口采用SQL查询的方式实现,数据库表采用了按城市分表的方式.但随着业务的发展,搜索接口调用频次越来越高,搜索接口压力越来越大,搜索数据库经常崩溃,从而导致搜索功能经常不能使用. 从上面的系统架构图可以看出,当用户修改资料时,接口会修改用户库信息,接着触发器会将改变的用户信息写入临时表.定时脚本每隔1分钟扫描一次临时表,将变更的数据写入到搜索库中.当用户再次请求搜索接口时,就可…
twitter要存档tweet采用lucene做全量指数,新发型是实时索引推文.检索实时(10在几秒钟内指数).实时索引和检索系统,称为EarlyBird. 感觉写更清晰,简洁,这个信息是真实的,只有可信足够,完全能够做到实现参考. 我只是做了一些记录:  1)基于lucene + java,michael busch是lucene committer 2)词典直接用哈希表,因此不支持term的prefix,偏序查询,哈希表使用开放链址法实现,避免大量小对象gc开销 3)postings列表在o…
http://fuxiaopang.gitbooks.io/learnelasticsearch/content/  (中文) 在Elasticsearch中,文档术语一种类型(type),各种各样的类型存在于一个索引中.你也可以通过类比传统的关系数据库得到一些大致的相似之处: 关系数据库 ⇒ 数据库 ⇒ 表 ⇒ 行 ⇒ 列(Columns) Elasticsearch ⇒ 索引 ⇒ 类型 ⇒ 文档 ⇒ 字段(Fields)一个Elasticsearch集群可以包含多个索引(数据库),也就是说其…
转载:http://www.infoq.com/cn/articles/anatomy-of-an-elasticsearch-cluster-part03 近实时搜索 虽然Elasticsearch中的变更不能立即可见,它还是提供了一个近实时的搜索引擎.如前一篇中所述,提交Lucene的变更到磁盘是一个代价昂贵的操作.为了避免在文档对查询依然有效的时候,提交变更到磁盘,Elasticsearch在内存缓冲和磁盘之间提供了一个文件系统缓存.内存缓存(默认情况下)每1秒刷新一次,在文件系统缓存中使…
使用ElasticSearch作为大数据平台的实时OLAP框架 – lxw的大数据田地 http://lxw1234.com/archives/2015/12/588.htm 一直想找一个用于大数据平台实时OLAP(甚至是实时计算)的框架,之前调研的Druid(druid.io)太过复杂,整个Druid由5.6个服务组成,而且加载数据也不太方便,性能一般,亦或是我还不太会用它.后来发现使用ElasticSearch就可以满足海量数据实时OLAP的需求. ElasticSearch相信大家都很熟悉…
在线文档:http://doc.yc-l.com/#/README 在线演示地址:http://yc.yc-l.com/#/login 源码github:https://github.com/linbin524/yc.boilerplate 源码gitee:https://gitee.com/linxuanming/yc.boilerplate 视频教程: 元磁之力框架开源初心和框架设计介绍(上): https://www.bilibili.com/video/BV1VM4y1G7hC/ 元磁之…
目录 前言 一.安装 1.安装elasticsearch 2.启动集群cluster 3.安装管理界面elasticsearch-head 4.安装分词插件elasticsearch-analysis-ik 二.使用 1.创建一个表(index) 2.插入数据(doc) 3.批量插入数据(_bulk) 4.查询数据(search) 5.修改数据(_doc/{id}) 拉下来,我们将chenqionghe这条记录的绳命改为生命, 6.删除数据(_doc/{id}._delete_by_query)…
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描, Sql 代码 : select id from t where num is null; 可以在 num 上设置默认值 0,确保表中 num 列没有 null 值,然后这样查询: Sql 代码 : select id from t where num=0; 3.应尽量避免在 wh…
编者按:高可用架构分享及传播在架构领域具有典型意义的文章,本文由孙子荀分享.转载请注明来自高可用架构公众号 ArchNotes.   孙子荀,2009 年在华为从事内核和分布式系统的开发工作:2011 年在百度从事过高性能计算方面的工作:2012 年加入腾讯进行 QQ 群广告系统的开发,随后负责腾讯云加速的带宽调度系统的设计研发:2014 年开始手 Q 公众号后台设计开发. 腾讯优秀讲师,包括 Linux 内核的讲授,并行计算等课程.在内核.数据挖掘.计算机广告等方面有很深的造诣. 手 Q 公众…