当前位置:   article > 正文

elasticsearch 主键字段_为什么学习和掌握elasticsearch

elasticsearch 指定字段作为主键

有个帅哥名字叫“Shay Banon”,对就是这位。这是他2013年在dotScale大会上分享Elasticsearch的照片。

a593e5c8dd315cc6e52616b23b8362ba.png

课程大纲


1、为什么学习和掌握elasticsearch
2、传统的关系型数据库存在的问题
3、ElasticSearch的安装
4、SpringBoot整合es完成搜索和数据的抓取
5、完成Docker-ES集群的搭建

Elasticsearch的诞生历史


许多年前,一个叫Shay Banon的待业工程师跟随他的新婚妻子来到伦敦,他的妻子想在伦敦学习做一名厨师。而他在伦敦寻找工作的期间,接触到了Lucene的早期版本,他想为自己的妻子开发一个方便搜索菜谱的应用。

直接使用Lucene构建搜索会有很多的坑以及重复性的工作,所以Shay便在Lucene的基础上不断进行抽象来让Java程序嵌入搜索变得更容易一些,经过一段时间的打磨,就诞生了他的第一个开源作品,他给自己的这个作品起了个名字,叫 “Compass”,中文即“指南针”的意思。

之后,Shay找到了一份新工作,新工作是处在一个高性能分布式的开发环境中。他在工作中渐渐发现,越来越需要一个易用的高性能、实时、分布式搜索服务,于是他决定重写Compass,将它从一个库打造成了一个独立的server,并将其改名为Elasticsearch。

Elasticsearch发布的第一个版本是在2010年的二月份,从那之后,Elasticsearch便成了Github上最受人瞩目的项目之一,并且很快就有超过300名开发者加入进来贡献了自己的代码。后来Shay和另一位合伙人成立了公司专注打造Elasticsearch,他们对Elasticsearch进行了一些商业化的包装和支持。但是,Elasticsearch承诺,永远都将是开源并且免费的。

不过悲剧的是,Shay承诺为妻子开发的菜谱搜索应用,到现在还没做出来……

为什么学习和掌握elasticsearch

概述

Elaticsearch,简称为es, es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。es也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得。

MYSQL千万数据压测 (Jemeter)

表名:products

数据:300W

DROP INDEX user_uuid_index ON system_user;CREATE INDEX user_uuid_index ON system_user(user_uuid);EXPLAIN SELECT * FROM system_user WHERE  user_uuid = '9c55344c-132d-4ef4-b561-8a0beea1a261';EXPLAIN SELECT * FROM system_user_no WHERE  user_uuid = '9c55344c-132d-4ef4-b561-8a0beea1a261';

单字段的查询,速度快于很多,随着字段的增加,速度相应减慢,查询所有字段的速度和查询的速度相似,略低。单纯查询主键ID,并不会变快,索引字段在where后查询,速度极大提升。

传统搜索方案

1:性能上

数据库:比如我要查找某个商品,根据商品名,比如select * from product where doctname like %keywords%,这样查询的话对于数据量少是可以的,可是一旦你的数据量巨大几万几十万的时候,你的性能将会极大的减弱。

lucene:全文检索,建立一个索引库,一次建立多次使用。在索引库里面会把所有的商品名根据分词器建立索引,就好比新华字典,索引对应document,比如输入衬衫,那么就会根据索引迅速的翻到衬衫对应的商品名,时间迅速,性能很好。

2:多关键字搜索,需要程序员进行处理拼接大量or,性能更差。

3:准确性,比如我搜索:“我|想要|买|一本|java|书籍”。

数据库:select * from product where doctname like %ant%,搜索出来的可以是plant,aplant,planting等等,准确性不高

lucene:它是通过索引查询的,就好像你查字典一样,准确性比数据库的模糊查询高许多

4:高亮处理

5:权重、相关度排序

数据库:数据库要实现该功能也是可以的,可是需要改变表的结构,添加一个字段,然后该字段用于排名,最后查询的时候order by 一下

lucene:查询出来的document都有一个算法(得分),根据算法可以计算得分,得分越高的排名越靠前,比如百度搜索一个东西,一般排名靠前的得分越高,得分通过算法,可以人工控制,比如百度推广,企业给的钱多得分自然高,因此排名靠前

全文检索解决方案

Lucene

根据用户输入的搜索关键词(java),应用服务器使用lucene提供的API搜索索引库,索引库返回搜索结果给应用服务器,应用服务器再把搜索结果响应给用户。

案例场景

1、2013年初,GitHub抛弃了Solr,采取ElasticSearch 来做PB级的搜索。“GitHub使用ElasticSearch搜索20TB 的数据,包括13亿文件和1300亿行代码”

2、维基百科:启动以elasticsearch为基础的核心搜索架构

3、SoundCloud:“SoundCloud使用ElasticSearch为1.8亿用户提供即时而精准的音乐搜索服务”

4、百度:百度目前广泛使用ElasticSearch作为文本数据分析,采集百度所有服务器上的各类指标数据及用户自定义数据,通过对各种数据进行多维分析展示,辅助定位分析实例异常或业务层面异常。目前覆盖百度内部

5、20多个业务线(包括casio、云分析、网盟、预测、文库、直达号、钱包、风控等),单集群最大100台机器,200个ES节点,每天导入30TB+数据新浪使用ES 分析处理32亿条实时日志

6、阿里使用ES 构建挖财自己的日志采集和分析体系  

**小结

如果你对分词器不理解:它会把表的数据通过分词器拆成若干的词和数据建立一种映射关系。

b58cd5e04d3bf5b16559665bacf79c1f.png

回复关键词

 JUC    分布式限流   消息队列   alibaba    JVM性能调优      Docker 

看更多精彩教程

别忘了点个在看哦!转发那就太好了!

0e6f41fef7558be930035a548ef0a799.png
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/962704
推荐阅读
相关标签
  

闽ICP备14008679号