elasticsearch搜索项目重构

这段时间一直在忙着重构公司之前的搜索业务这块,由于公司之前的搜索使用的是基于mysql的方案,因为里面涉及到一些主从搜索,分表搜索,索引整体上比较复杂,重构期间要花很多时间理解业务跟数据表之间的关系,理清之后呢,还要结合elasticsearch的特性开始重构整个搜索平台。

由于公司是使用Hessian搭建的RPC服务,拿到服务包之后便开始基于elasticsearch的API实现搜索方案了,下面主要列一下重构的主要步骤,然后在依次做介绍:

  • 搭建elasticsearch集群服务,这个比较简单。
  • 编写初始化数据的Job,该Job主要的步骤就是,把mysql里面的数据信息通过任务复制到ES集群中,这只是一个初始化的过程。
  • 定时更新数据信息,首先编写触发器,要是数据发生改变就触发触发器,然后有个任务定时去触发器table里面查询是否有数据发生改变,发生改变则更新ES集群的数据。
  • 针对服务接口,分别实现相关服务。
时间: 2024-10-03 15:14:50

elasticsearch搜索项目重构的相关文章

网站基于ElasticSearch搜索的优化笔记 PHP

基本情况就是,媒体.试题.分类,媒体可能有多个试题,一个试题可能有多个分类,分类为三级分类加上一个综合属性.通过试题名称.分类等搜索查询媒体. 现在的问题为,搜索结果不精确,部分搜索无结果,ES的数据结构不满足搜索需求.解决方案就是,重构ES数据结构,采用父子关系的方式,建立media和question两个type. 全程使用https://github.com/mobz/elasticsearch-head,这个进行ES的管理和查看,很方便. 从ES的说明可以看出,ES是面向文档,其实所有的数

Elasticsearch.net项目实战

elasticsearch.net项目实战 @智客幸达 目录 Elasticsearch+kibana 环境搭建 windows 10环境配置 安装Elasticsearch head安装(非必需) 安装kibana DSL的基本使用 增加 修改 查询 删除 Elasticsearch .Net Low level client基本使用 项目实战 总结 参考 ? ???Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎.无论在开源还是专有领域,Lucene可以被

Elasticsearch.net项目

Elasticsearch.net项目实战 https://www.cnblogs.com/lucky_hu/p/9746736.html elasticsearch.net项目实战 @智客幸达 目录 Elasticsearch+kibana 环境搭建 windows 10环境配置 安装Elasticsearch head安装(非必需) 安装kibana DSL的基本使用 增加 修改 查询 删除 Elasticsearch .Net Low level client基本使用 项目实战 总结 参考

一次项目重构的心得体会

接手一老项目,经过几个月之后,实在顶不顺原来的架构,一样事情要干两件活,代码冗余复杂,给维护工作带来很多问题和隐患,趁着前段时间新需求比较少,遂与产品负责人沟通之后暂停新需求,先进行项目重构.于是就花了近一个月的时间对其架构进行重构,首先是将接入部分和业务处理部分分离,其次是将业务处理部分集中,再次是引入内存数据库,实现业务处理部分无状态,将所有状态保持在内存数据中,从而使得业务处理进程可以多个进程并行,并且可以进行业务处理模块的无间断更新.重构完之后可以说是脱胎换骨了,其中有些心得和体会分享一

分布式高维空间近邻搜索项目开发

项目名称 分布式高维空间近邻搜索 项目描写叙述 眼下在互联网上高维空间搜索的算法非常多,但性能都不尽人意.比方KD树算法,强调互联网,是指本人能在互联网上搜索到的相关算法,假设某个公司内部有自己研究的算法也可能有不错的性能表现. 測试KD树的性能,50维度的数据,100万的数据用了600多毫秒,并且搜索结果与线性搜索的结果相差还非常大.鉴于此,我自己研究了一个搜索算法.64维度,100万的数据量,搜索前十个近期邻点,大概在200毫秒左右(PS:通过修正bug,算法在此环境中达到了20ms以内搜索

iOS 基于 MVC 的项目重构总结

关于MVC的争论 关于MVC的争论已经有很多,对此我的观点是:对于iOS开发中的绝大部分场景来说,MVC本身是没有问题的,你认为的MVC的问题,一定是你自己理解的问题(资深架构师请自动忽略本文). 行文过程中查阅了互联网上的大量文档,其中水平良莠不齐(最常见的就是MVC改个名就当MVVM的),当然也有许多非常有价值的参考资料,在文末会逐一列举,以供参考. iOS中的MVC和MVP Cocoa版本的MVC 根据官网上的描述, Cocoa中的MVC是这样的: Model Objects Encaps

Android 项目重构之路:实现篇

前两篇文章<Android项目重构之路:架构篇>和<Android项目重构之路:界面篇>已经讲了我的项目开始搭建时的架构设计和界面设计,这篇就讲讲具体怎么实现的,以实现最小化可用产品(MVP)的目标,用最简单的方式来搭建架构和实现代码. IDE采用Android Studio,Demo实现的功能为用户注册.登录和展示一个券列表,数据采用我们现有项目的测试数据,接口也是我们项目中的测试接口. 项目搭建 根据架构篇所讲的,将项目分为了四个层级:模型层.接口层.核心层.界面层.四个层级之

通过HTTP RESTful API 操作elasticsearch搜索数据

通过HTTP RESTful API 操作elasticsearch搜索数据

Android 项目重构之路:界面篇

在前一篇文章<Android项目重构之路:架构篇>中已经简单说明了项目的架构,将项目分为了四个层级:模型层.接口层.核心层.界面层.其中,最上层的界面,是变化最频繁的一个层面,也是最复杂最容易出问题的一个层面,如果规划不好,很容易做着做着,又乱成一团了. 要规划好界面层,至少应该遵循几条基本的原则: 保持规范性:定义好开发规范,包括书写规范.命名规范.注释规范等,并按照规范严格执行: 保持单一性:布局就只做布局,内容就只做内容,各自分离好:每个方法.每个类,也只做一件事情: 保持简洁性:保持代