ElasticSearch7.6.x
版本: ElasticSearch 7.6.1 ( 全 最新了)
6.X 7.X的区别十分大,6.x的API (原生API、RestFul高级! )
我们要讲解什么/p>
SQL:like%狂神说%,如果是的大数据,就十分慢!索引!
ElasticSearch :搜索! ( 百度、github、 淘宝电商! )
1、聊一个人
2、货比三家
3、安装
4、生态圈.
5、分词器ik
6、RestFul操作 ES
7、CRUD .
8、SpringBoot 集成ElasticSearch (从原理分析!
9、爬虫爬取数据!
10、 实战,模拟全文检索!
以后你只要,需要用到搜索,就可以使用ES! (大数据量的情况下使用! )
聊聊Doug Cutting
1998年9月4日, Google公司在美国硅谷成立。正如大家所知,它是一家做搜索弓 |擎起家的公司。
回到主题
Lucene是一套信息检索工具包! jar包!不包含搜索弓|擎系统!
包含的:索引结构!读写索引的工具!排序,搜索规则…工具类!
Lucene和ElasticSearch关系:
ElasticSearch是基于Lucene做了- -些封装和增强(我们上手是十分简单! )
我的讲课风格:学习更多的是培养大家的学习兴趣!
Elaticsearch概述
Elaticsearch ,简称为es,es是- f个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,
可以扩展到上百台服务器,处理PB级别的数据。es也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能 ,但是
它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。
据国际权威的数据库产品评测机构DB Engines的统计,在2016年1月, ElasticSearch已超过Solr等,成为排名第一-的搜索引擎类应
历史
多年前, -个叫做Shay Banon的刚结婚不久的失业开发者,由于妻子要去伦敦学习厨师,他便跟着也去了。在他找工作的过程
中,为了给妻子构建-一个食谱的搜索弓|擎,他开始构建一个早期版本的Lucene。
直接基于Lucene工作会比较困难,所以Shay开始抽象Lucene代码以便Java程序员可以在应用中添加搜索功能。他发布了他的第一
个开源项目,叫做”Compass”。
后来Shay找到一份工作,这份工作处在高性能和内存数据 格的分布式环境中,因此高性能的、实时的、分布式的搜索引擎也是理
所当然需要的。然后他决定重写Compass库使其成为-个独立的服务叫做Elasticsearch。
第一个公开版本出现在2010年2月,在那之后Elasticsearch已经成为Github.上最受欢迎的项目之- – ,代码贡献者超过300人。一家
主营Elasticsearch的公司就此成立,他们一-边提供商业支持一-边开发新功能 ,不过Elasticsearch将永远开源且对所有人可用。
Shay的妻子依旧等待着她的食谱搜…
谁在使用:
ES和solr的差别
Solr简介
Solr是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供 了比Lucene更为丰富的查询
语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化
Solr可以独立运行,运行在Jetty、Tomcat等这些Servlet容器中, Solr 索引的实现方法很简单,用POST方法向Solr服务器发送一
个描述Field及其内容的XML文档, Solr根据xml文档添加、删除、更新索引。Solr 搜索只需要发送HTTP GET请求,然后对Solr
返回Xml、json等格式的查询结果进行解析,组织页面布局。Solr不提供构建UI的功能, Solr提供了一一个管理界面,通过管理界面可
以查询Solr的配置和运行情况。
solr是基于lucene开发企业级搜索服务器,实际上就是封装了lucene。
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器
提交一定格式的文件,生成索引;也可以通过提出查找请求,并得到返回结果。
Lucene简介
Elasticsearch和Solr比较
2、熟悉目录!
3、启动,访问9200 ;
4.访问测试
你们初学,就把es当做-个数据库! ( 可以建立索引(库) ,文档(库中的数据! )
了解ELK
ELK是Elasticsearch、Logstash、 Kibana三大开源框架首字母大写简称。市面上也被成为Elastic Stack。其中Elasticsearch是一 个基于Lucene、分布式、通过Restful方式进行交 互的近实时搜索平台框架。像类似百度、谷歌这种大数据全文搜索引擎的场景都可以使用Elasticsearch作为底层支持框架,可见Elasticsearch提供的搜索能力确实强大,市面上很多时候我们简称Elasticsearch为es。
Logstash是ELK的中央数据流引擎,用于从不同目标(文件/数据存储/MQ )收集的不同格式数据,经过过滤后支持输出到不同目的
地(文件/MQ/redis/elasticsearch/kafka等)。Kibana可以将elasticsearch的数据通过友好的页面展示出来 ,提供实时分析的功能。
收集清洗数据–>搜索,存储–> Kibana
市面_上很多开发只要提到ELK能够一致说出它是一 一个日志分析架构技术栈总称,但实际上ELK不仅仅适用于日志分析,它还可以支持其它任何数据分析和收集的场景,日志分析和收集只是更具有代表性。并非唯-性。
汉化!自己修改kibana配置即可! zh-CN !
文档
之前说elasticsearch是面向文档的,那么就意味着索引和搜索数据的最小单位是文档, elasticsearch中,文档有几个重要属性:
●自我包含,一篇文档同时包含字段和对应的值,也就是同时包含key:value !
●可以是层次型的,一个文档中包含自文档,复杂的逻辑实体就是这么来的!
●灵活的结构,文档不依赖预先定义的模式,我们知道关系型数据库中,要提前定义字段才能使用,在elasticsearch中,对于字
段是非常灵活的,有时候,我们可以忽略该字段,或者动态的添加一一个新的字段。
尽管我们可以随意的新增或者忽略某个字段,但是,每个字段的类型非常重要,比如一个年龄字段类型,可以是字符串也可以是整
形。因为elasticsearch会保存字段和类型之间的映射及其他的设置。这种映射具体到每个映射的每种类型,这也是为什么在
elasticsearch中,类型有时候也称为映射类型。
类型
类型是文档的逻辑容器,就像关系型数据库一样,表格是行的容器。类型中对于字段的定 义称为映射,比如name映射为字符串
类型。我们说文档是无模式的,它们不需要拥有映射中所定义的所有字段,比如新增一个字段,那么elasticsearch是怎么做的呢br> elasticsearch会自动的将新字段加入映射,但是这个字段的不确定它是什么类型, elasticsearch就开始猜,如果这个值是18 ,那么
elasticsearch会认为它是整形。但是elasticsearch也可能猜不对 ,所以最安全的方式就是提前定义好所需要的映射,这点跟关系
型数据库殊途同归了,先定义好字段,然后再使用,别整什么幺蛾子。
索引
就是数据库!
索弓是映射类型的容器, elasticsearch中的索引是- – -个非常大的文档集合。索引存储了映射类型的字段和其他设置。然后它们被存
储到了各个分片上了。我们来研究下分片是如何工作的。
物理设计:节点和分片如何工作
一个集群至少有一个节点,而一个节点就是一个elasricsearch进程 ,节点可以有多个索引默认的,如果你创建索引,那么索引将会有个5个分片( primary shard ,又称主分片)构成的,每- -一个主分片会有一个副本( replica shard ,又称复制分片)
IK分词器插件
什么是IK分词器
分词:即把一段中文或者别的划分成-个个的关键字,我们在搜索时候会把自己的信息进行分词,会把数据库中或者索引库中的数
据进行分词,然后进行- -个匹配操作,默认的中文分词是将每个字看成一个词,比如“我爱狂神”会被分为”我”,“爱”,“狂”,“神” ,这显然是不符合要求的,所以我们需要安装中文分词器ik来解决这个问题。
IK提供了两个分词算法: ik_ smart和ik_ max_ word ,其中ik_ smart 为最少切分, ik_max _word为最细粒度划分! -会我们测试!
安装
下载地址
2、下载完毕之后 ,放入到我们的elasticsearch插件即可!
4、elasticsearch-plugin 可以通过这个命令来查看加载进来的插件
关于索引的基本操作
1、创建一个索引!
PUT /test1/type1/1
{
“name”: “狂神说”
“age”: 3
}
3、那么name这个字段用不用指定类型呢。毕竟我们关系型数据库是需要指定类型的啊!
字符串类型
text、keyword
●数值类型
long, integer, short, byte, double, float, half float, scaled float
●日期类型
date
●te布尔值类型
boolean
二进制类型
binary.
●等等…
类型的官方连接
GET test 查看默认的信息
GET test3