首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Elasticsearch构建商品搜索系统

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

2.6K31

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.3K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    系统设计:Twitter搜索服务

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

    5.2K400

    Find命令-Linux系统搜索利器

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

    1.5K50

    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.5K00

    基于 ElasticSearch 开发垂直搜索系统

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

    1.3K71

    有赞搜索系统技术内幕

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

    68020

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

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

    2.5K110

    使用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.4K81

    有赞搜索系统的架构演进

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

    95520

    系统设计:在搜索系统实现缓存的策略与思考

    在这个不断变化的复杂世界里,人类每天会在搜索系统中敲下数万乃至上亿个问题,找寻答案,给自己的好奇一个归宿。而搜索系统就像一个输送管道,每日孜孜不倦地进行各种计算,浪里淘金,旨在为各种问题送上致命一击。...02 从简单的搜索系统框架说起 图 一种简单的搜索架构 讨论搜索系统中的缓存设计,我们需要从搜索框架说起,分析搜索系统中数据的流动和使用情况。...如图是一种典型的搜索框架,一般来说,搜索系统可大致分为5个层级: 搜索入口层。搜索入口一般指 cgi。...这些工具可以帮助我们追踪每次搜索行为的细节,细化监控系统中的每一个角落,为搜索系统的健康运行提供有力保障。...大多数搜索系统中都会将动态缓存和静态缓存混用;有的搜索系统还会通过统计查询长度、查询频次等特征来细化缓存策略,以获取更高的缓存收益。 预取策略。

    10810

    【Embedding】Airbnb:个性化搜索排序系统

    Airbnb 这种体量的公司是如何在搜索中做到实时计算个性化,计算量不会很大吗? 如何解决新用户和新房源的冷启动问题的? 读者阅读完本文后将一一得到答案: 1....4.1 Search Model 首先我们将 Item Embedding 应用于搜索模型中,d32 表示维度大小为 32。...横坐标为用户预订前最新的 17 次点击,纵坐标为预订 Item 平均排名,我们我可以看到对于系统本身的 Search Model,用户点击次数越多越精准,而我们的 Embedding 向量加入也是非常有效的...4.3 Embedding FE Airbnb 使用基于 Pariwise 并支持 Lambda Rank 的 GDBT 模型进行搜索排序,使用的特征包括房源特征、用户特征、搜索特征和交叉特征等共 104...for Search Ranking at Airbnb》 《Listing Embeddings in Search Ranking》 《从KDD 2018 Best Paper看Airbnb实时搜索排序中的

    1.8K20

    Lucene的索引系统搜索过程分析

    一,搜索引擎的索引系统简介 在介绍Lucene的search之前,有必要对搜索引擎的索引系统做一个简单的了解。...那么在搜索引擎中我们需要储存的是文档和网页内容,就像是书中的一个一个章节一样。那么搜索引擎的索引其实就是查询的关键词,通过关键词,搜索引擎帮助你快速查找到文档在哪里。...这就是索引系统简历的关键。 我们知道现在的全文检索的索引系统大都是基于倒排索引的,倒排索引可以快速通过关键词(索引)找到相应的文档,Lucene的索引系统自然也是基于倒排索引。...1.正排索引 介绍倒排索引之前先介绍正排索引,因为正排索引是倒排索引创建的基础,二者结合起来就很好理解搜索引擎的索引系统。全文检索系统无法就是在大量的索引库中寻找命中搜索关键词的文档。...接下来看Lucene的索引系统

    2.3K30

    商品搜索引擎—推荐系统设计

    一、前言 结合目前已存在的商品推荐设计(如淘宝、京东等),推荐系统主要包含系统推荐和个性化推荐两个模块。...系统推荐: 根据大众行为的推荐引擎,对每个用户都给出同样的推荐,这些推荐可以是静态的由系统管理员人工设定的,或者基于系统所有用户的反馈统计计算出的当下比较流行的物品。...3.3、用户喜好设计 (1)判断用户喜好因素:历史购买、历史购物车、历史搜索、历史浏览等,待确定我们可用数据再进一步细化。...(2)用户对某个商品的喜好程度,通过不同行为对应不同分值权重,如:历史购买(10)、历史购物车(8)、历史搜索(5)、历史浏览(6),确定用户喜好因素后再进一步对各个因素评分权重进行 合理的设计。...,由于还没有大量的用户数据,系统无法计算出推荐模型,从而导致系统的推荐功能失效的问题。

    1.4K40

    AI知识搜索利器:基于ElasticSearch构建专知实时高性能搜索系统

    【导读】今天向大家介绍下ElasticSearch在专知搜索中的使用。ElasticSearch是一个基于Lucene的搜索服务器,是当前流行的企业级搜索引擎。...对所有使用ElasticSearch的案例来说,它们最终都可以归结为对文档的搜索。...集群(cluster) 当数据量或查询压力超过单机负载时,需要多个节点来协同处理,所有这些节点组成的系统成为集群(cluster)。...分片(shard) 正如我们之前提到的那样,集群允许系统存储的数据总量超过单机容量。为了满足这个需求,ES将数据三步倒多个物理Lucene索引上。...ES使用 ES生态系统中有着大量的扩展工具,可以满足开发者的各类开发需求。

    2.4K50

    推荐系统搜索引擎的关系

    无论在互联网上,还是在线下的场景里,搜索和推荐这两种方式都大量并存,那么推荐系统搜索引擎这两个系统到底有什么关系?区别和相似的地方有哪些?...图1:搜索引擎和推荐系统是获取信息的两种不同方式 主动或被动:搜索引擎和推荐系统的选择 获取信息是人类认知世界、生存发展的刚需,搜索就是最明确的一种方式,其体现的动作就是“出去找”,找食物、找地点等,到了互联网时代...近年来,搜索引擎逐步融合了推荐系统的结果,例如右侧的“相关推荐”、底部的“相关搜索词”等,都使用了推荐系统的产品思路和运算方法(如下图红圈区域)。 ?...搜索引擎中融合的推荐系统元素 推荐系统也大量运用了搜索引擎的技术,搜索引擎解决运算性能的一个重要的数据结构是倒排索引技术(Inverted Index),而在推荐系统中,一类重要算法是基于内容的推荐(Content-based...本文总结 作为大数据应用的两大类应用,搜索引擎和推荐系统既相互伴随和影响,又满足不同的产品需求。

    2.6K40

    使用 Elasticsearch 搭建自己的搜索系统,真心强大!

    大名鼎鼎的Lucene 搜索引擎被广泛用于搜索领域,但是操作复杂繁琐,总是让开发者敬而远之。...搜索为什么不用MySQL而用es 我们本文案例是一个迷你商品搜索系统,为什么不考虑使用MySQL来实现搜索功能呢?...Lucene封装自己的搜索系统,为了适配公司营销战略、推荐系统等会有更多定制化的搜索需求 es客户端选型 spring-boot-starter-data-elasticsearch 我相信你看到的网上各类公开课视频或者小项目均推荐使用这款...搭建自己的迷你搜索系统 引入es相关依赖,除此之外需引入springboot-web依赖、jackson依赖以及lombok依赖等。...RestClientBuilder restClientBuilder) {         return new RestHighLevelClient(restClientBuilder);     } } 封装es常用操作es搜索系统封装源码

    1.2K20
    领券