首页
学习
活动
专区
工具
TVP
发布

Elasticsearch构建商品搜索系统

搜索这个特性可以说是无处不在,现在很少有网站或者系统不提供搜索功能了,所以,即使你不是一个专业做搜索的程序员,也难免会遇到一些搜索相关的需求。...今天这节课,我们就以电商中的商品搜索作为例子,来讲一下,如何用ES(Elasticsearch)来快速、低成本地构建一个体验还不错的搜索系统。...理解倒排索引机制 刚刚我们说了,既然我们的数据大多都是存在数据库里,用SQL的LIKE也能实现匹配,也能搜出结果,为什么还要专门做一套搜索系统呢?我先来和你分析一下,为什么数据库不适合做搜索。...理解了倒排索引的原理之后,我们一起用ES构建一个商品索引,简单实现一个商品搜索系统。虽然ES是为搜索而生的,但本质上,它仍然是一个存储系统。...所以,你就把ES当做一个支持全文搜索的数据库来使用就行了。 小结 ES本质上是一个支持全文搜索的分布式内存数据库,特别适合用于构建搜索系统

2.4K31
您找到你想要的搜索结果了吗?
是的
没有找到

系统设计:Twitter搜索服务

在本章中,我们将设计一个可以存储和搜索用户推文的服务。类似的问题:推特搜索。 难度:中等 1.什么是Twitter搜索? Twitter用户可以随时更新他们的状态。...每个状态(称为tweet)都由纯文本组成,我们的目标是设计一个允许搜索所有用户推特 的系统。 2.系统的要求和目标 •假设Twitter拥有15亿用户,每天有8亿活跃用户。...•假设每天有5亿次搜索。 •搜索查询将由多个与和/或组合的词组成。我们需要设计一个能够高效存储和查询推文的系统。...我们如何创建系统范围内唯一的TweetID? 如果我们每天都能收到4亿条新推,那么五年内我们预计会收到多少推特对象?...对于缓存逐出策略,最近最少使用(LRU)似乎适合我们的系统。 9.负载平衡 我们可以在系统中的两个位置添加负载平衡层 1)在客户端和应用服务器之间, 2)在应用服务器和后端服务器之间。

5.1K400

ElasticSearch构建全文搜索系统

前言 Elasticsearch 是一个分布式、可扩展、实时的搜索与数据分析引擎,通过它我们可以构建出一个强大的全文搜索系统,解决诸如文章检索慢,商品检索慢、MySQL的like查询慢这样的问题。...4.查询数据 搜索chenqionghe curl -s -X GET 'localhost:9200/book/_search?...localhost:9200/book/_close' # 开启 curl -XPOST 'localhost:9200/book/_open' 总结 通过Elasticsearch,我们可以快速构建出一个强大的全文搜索系统...倒排索引为搜索而生,先对需要索引的字段进行分词,再通过词直接匹配出文档,速度非常快,这是优点。...但是,相比数据库采用的 B 树索引,它的写入和更新性能都比较差,因此倒排索引也只是适合全文搜索,不适合更新频繁的交易类数据。

1.2K30

Find命令-Linux系统搜索利器

1.Motivation ---- 搜索查找是管理文件系统常用的操作,虽然动作逻辑本质上是匹配,很简单,但搜索也有很多种花样,可以用来加速搜索,快速提取想要的内容 最简单的搜索:你想递归遍历从当前目录下所有子目录以及子目录下的文件...,得以了解这个目录组织结构 基于文件名的搜索:你想递归搜索从当前目录下所有拥有特定文件名或者后缀的文件 基于文件路径的搜索:你想递归搜索从当前目录下所有拥有特定路径名的路径 文件名反向排除的搜索:你不知道目标文件可能是什么但可以确定目标文件绝不是什么...,需要将不可能的文件排除在外 目录范围模糊的搜索:当你可以确定目标文件在当前目录下的多少级范围内且目录层次较深时,超过一定级数范围的目录就可以不必搜索 基于文件类型的搜索:你也许只是想要搜索目录,或者链接...,或者字符设备等等,其他文件类型就可以不必搜索 基于文件时间的搜索:你可能刚刚改动了许多文件但不记得名字,那么在过去的一个时间范围上对文件的三个时间进行搜索:访问时间,修改时间,变化时间 基于文件大小的搜索...,也影响搜索的效率,比如限定搜索目录范围应该优先于限定搜索文件的名字 实际使用还需要从搜索逻辑来考虑多个影响因素,进而加快搜索速度,提高搜索效率

1.5K50

有赞搜索系统技术内幕

上文说到有赞搜索系统的架构演进,为了支撑不断演进的技术架构,除了 Elasticsearch 的维护优化之外,我们也开发了上层的中间件来应对不断提高的稳定性和性能要求。...在索引拆分前,首先需要检查索引对应业务是否满足拆分的三个必要条件: 读写操作必定会带入固定条件 读写操作维度唯一 用户不关心全局的搜索结果 比较典型的比如店铺内商品搜索,不论买卖家都只关心固定店铺内的商品检索结果...HA 随着搜索系统的广泛使用,用户对系统的稳定性也提出了更高的要求,比如在机房发生断电等故障情况下,依然能够保证服务可用,这就需要我们能够将数据进行跨机房复制同步。...为了避免乐观锁失效,我们的解决方法是软删除的方式: delete 操作在中间件转换为 index 操作,文档内容仅包含一个特殊字段,不会命中正常的搜索条件,也就是正常情况下无法搜索得到该文档,达到实际的删除效果...小结 到这里有赞搜索系统的大致框架已经介绍完毕,因为篇幅的原因还有很多细节的功能设计并没有完整表述,也欢迎有兴趣的同学联系我们一起探讨,有表述错误的地方也欢迎大家联系我们纠正。

65220

hexo-butterfly-搜索系统引入

hexo-butterfly-搜索系统引入 本地方式 开发说明: 安装hexo-generator-search,按照文档做相应的配置(格式只支持xml) npm install hexo-generator-search...hexo-algoliasearch 构建思路 引入相关插件 注册algolia,创建集合存储信息 配置_config.yml存储algolia相关参数 配置主题配置文件,开启algolia的搜索模式...(关闭本地搜索) hexo-algolia 开发说明 安装hexo-algolia,按照文档做相应的配置 npm install hexo-algolia --save 注册algolia,...配置完成,随后执行hexo algolia,执行成功之后查看algolia中相关内容(如果提交失败,则先clean项目) 数据推送 ​ 上传数据到algolia(当添加了新文章,搜索不到的时候则需要刷新...load_data: 数据库加载中 algolia_search: input_placeholder: 搜索文章 hits_empty: '找不到您查询的内容:${query

1.4K00

基于 ElasticSearch 开发垂直搜索系统

一,背景介绍 ElasticSearch 是由 Lucene 包装上分布式复制一致性算法等附加功能,构成的开源搜索引擎系统。...近两年在业界热度大增,主要有 3 种应用场景: 全文搜索引擎 NOSQL 数据库 日志分析数据库 ELK 很多垂直领域搜索需求,都可以基于 ElasticSearch 来设计架构。...统一监控告警系统,监控各种请求失败,延迟分布等,并监控 ElasticSearch java 进程状态,集群状态 转发文档更新请求给本机的队列 。用队列做削峰填谷,自动合并批量,做限流。...三,搜索应用开发优化指南 垂直搜索系统的在线检索部分,一般流程如下 ? ES 用来实现 召回和粗排环节 ,和部分自动补全环节。...Elasticsearch 性能调优实践 https://www.infoq.cn/article/elasticsearch-performance-tuning-practice-at-ebay 有赞搜索系统的架构演进

1.1K71

项目小结:日立OA系统Asp.net)

客户端浏览器发送域名到DNS,DNS根据域名找到IP再发送回客户端浏览器; 2.浏览器根据IP向Web服务器发出请求(是Get方式,所以只有请求头),开始踏上不归路; 3.服务器接收到请求进行一连串处理(详细请参考:asp.net...管道模型(管线模型)之一发不可收拾和Asp.net页面生命周期) 4.服务器返回响应(响应头、响应体)给浏览器; 5.浏览器边接收响应边将HTML代码解释构建成Dom树,遇到css、js等解释性语言就进行解释...1.首先将css文件引用放在head标签中,js文件引用放在页面代码的末尾;   2.分别合并css文件引用和js文件引用的请求(具体方法请参考:网页优化系列一:合并文件请求(asp.net版));  ...客户基本满意,那这部分就算是交差了,(*^__^*) 嘻嘻…… 2.一键关闭web系统所有页面,不断尝试,却被奇怪的方法Kill了             需求:在OA系统首页有一个“关闭系统”按钮可以关闭该系统的所有页面...2.关闭系统时会先出现空白页面然后它又自动关闭。如果要关闭的窗口多那也挺突兀的。

3.1K50

ASP.NET Core集成现有系统认证

我们现在大多数转向ASP.NET Core来使用开发的团队,应该都不是从0开始搭建系统,而是老的业务系统已经在运行,ASP.NET Core用来开发新模块。...本文将给大家简单阐述一下认证与授权的基本概念,以及基于ASP.NET Core 中间件实现的认证和改造JwtBearer 认证中间件来实现的认证达到与老系统(主要是token-based认证)的集成。...这是一个完成认证的过程,系统现在知道你是我的某一个用户了。 那么何谓授权?  现在用户登录之后我们跳转到了另一个页面,这个页面可能会写一段这样的代码。...在ASP.NET Core下,MVC以一个Middleware加入到整个HTTP管道。...更多精彩文章: ASP.NET Core依赖注入全知道: https://mp.weixin.qq.com/s/lR9O7bXiI704kSu7bKdLGg 我心中的ASP.NET Core新核心对象之

2.7K90

ASP.NET的路由系统:路由映射

ASP.NET路由系统的应用编程接口中定义了如下一个实现了IRouteConstraint接口的HttpMethodConstraint类型。...是否对现有文件实施路由取决于代表全局路由表的RouteCollection对象的RouteExistingFiles属性,该属性默认情况下为False,我们可以将此属性设置为True使ASP.NET路由系统忽略现有物理文件的存在...我们可以通过调用RouteCollection的Igore方法来注册一些需要让路由系统忽略的URL模板。...为了让ASP.NET路由系统忽略掉针对.js文件请求,我们可以按照如下的方式在Global.asax中调用RouteTable的Routes属性的Ignore方法。...的路由系统:URL与物理文件的分离 ASP.NET的路由系统:路由映射 ASP.NET的路由系统:根据路由规则生成URL

2.2K90

常见搜索系统流程-思维导图

正文: 搜索技术现在非常成熟,业界的开源工具,算法论文都很容易获取,前一段时间参加公司的课程《视频搜索技术栈解析》又系统的捋了一遍,做一个简单的搜索系统并不难,但是要做一个高效,高质量的搜索结果还是很复杂的...下面的思维导图主要的流程为参加学习的课程脉络来整理,有一些自己的调整,其中有些部分也没有展开,因为篇幅限制同时自觉能力自觉驾驭不了深挖的部分,例如搜索内容排序权重部分,对检索结果根据用户行为(搜索,点击率...不敢妄言,希望以后有机会深入学习实践与君共勉 搜索主流程 爬虫-》数据抽取-》搜索引擎-》智能提示-》Query分析-》召回&排序-》交互呈现 下面是思维导图正文:可以下载下来用工具查看,或者单独查看图片...在写技术小结的时候有几个困惑 1:有些知识明显的大家都知道,或者大部分人都知道,例如搜索中分词跟倒排索引,基本搜索相关文章必带的所以就更不好意思展开来写,毕竟珠玉在前。...所以就想到哪里写到哪里了,关于搜索的整体流程基本可以再上面的思维导图里面,具体的单点的模块如果了解就当跳过,如果不了解不熟悉就抽时间了解下、查漏补缺。

2.3K110

有赞搜索系统的架构演进

Elasticsearch Elasticsearch 是一个高可用分布式搜索引擎,一方面技术相对成熟稳定,另一方面社区也比较活跃,因此我们在搭建搜索系统过程中也是选择了 Elasticsearch 作为我们的基础引擎...架构 1.0 时间回到 2015 年,彼时运行在生产环境的有赞搜索系统是一个由几台高配虚拟机组成的 Elasticsearch 集群,主要运行商品和粉丝索引,数据通过 Canal 从 DB 同步到 Elasticsearch...问题 这样的架构支撑了搜索系统一年多的运行,但是也暴露出了许多问题,首当其冲的是越发高昂的维护成本,除去 Elasticsearch 集群维护和索引本身的配置、字段变更,虽然已经通过数据总线与业务库解耦...架构中做了一些针对性调整,列举主要的几点: 通过开放接口接收用户调用,与业务代码完全解耦; 增加 proxy 用来对外服务,预处理用户请求并执行必要的流控、缓存等操作; 提供管理平台简化索引变更和集群管理 这样的演变让有赞搜索系统逐渐的平台化...缓存和 ESLoader 主要是将原先高级搜索中的通用功能集成进来,使得高级搜索可以专注于搜索自身的查询分析和重写排序功能,更加内聚。

93020

使用elasticsearch搭建自己的搜索系统

es搜索系统封装源码,走过路过,请帮我点个star哦! ?原文地址为https://www.cnblogs.com/haixiang/p/12451703.html,转载请注明出处!...搜索为什么不用MySQL而用es 我们本文案例是一个迷你商品搜索系统,为什么不考虑使用MySQL来实现搜索功能呢?...Lucene封装自己的搜索系统,为了适配公司营销战略、推荐系统等会有更多定制化的搜索需求 es客户端选型 spring-boot-starter-data-elasticsearch 我相信你看到的网上各类公开课视频或者小项目均推荐使用这款...搭建自己的迷你搜索系统 引入es相关依赖,除此之外需引入springboot-web依赖、jackson依赖以及lombok依赖等。...RestClientBuilder restClientBuilder) { return new RestHighLevelClient(restClientBuilder); } } 封装es常用操作es搜索系统封装源码

1.2K10

实验手册——搜狗搜索日志分析系统

1:查看数据,构建系统前,需要了解如何进行数据相关的预处理:   进入实验数据文件夹,然后进行less 查看: ?...这个用户行为决定了尽管搜索 12 引擎返回的结果数目十分庞大,但真正可能被绝大部分用户所浏览的,只有排在最前面的很小一部分而已。...因此搜索引擎在处理这部分查询的时候,一个可能比较理想的方式是首先把相关的完整URL地址返回给用户,这样有较大可能符合用户的查询需求。...3:独立用户行为分析(搜索具备多样性,因人而异,主要注意个性化需求): 1 (1)查询搜索过”仙剑奇侠传“的 uid,并且次数大于 3 2 3 hive> select uid,count(*)...2011年11月30日的搜索排名前五十,这里是我的指标一,更多指标自己可以去想和做: ?

4.3K80
领券