Doug Cutting 美国工程师,hadoop之父,感兴趣的可以去了解下,感觉还是挺有意思的,以前学习过程中看这些人物事迹一般都直接跳过,最近看看还是蛮有意思的也可以从某些角度激励激励自己。

概述

lucene是一套信息检索工具包!jar包,不包含搜索引擎系统
包含的:索引结构,读写索引的工具,排序,搜索规则,工具类!
Lucene和ElasticSearch关系:
ElasticSearch是基于Lucene做了一些封装和增强

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

简介

ElasticSearch是一个实时分布式搜索和分析引擎。它让你以前所未有的速度处理大数据成为可能。
它用于全文搜索,结构化搜索,分析以及将这三者混合使用。

是一个基于Apache Lucene的开源搜索引擎。无论在开源还是转悠领域,Lucene可以被认为是距今为止最先进,性能最好的,功能最全的搜索引擎库。
但是Lucene只是一个库,想要使用它。必须使用java来作为开发语言ing将其集成到你的应用中,更糟糕的是,你需要深入了解检索的相关只是来理解它是如何工作的。
ElasticSearch也使用java开发并使用Lucene作为其核心来实现所有索引和搜索的功能。但是它的目的是通过简单的RESTful风格来隐藏Lucene的复杂性,从而让全文搜索变得简单。

ElasticSearch安装

jdk1.8最低要求,客户端,界面工具
一定注意版本对应!
官网 https://elastic.cn/
链接: https://elastic.cn/.
下载慢的小伙伴们可以到 华为云的镜像去下载,反正我这官网打开巨慢无比
速度很快,自己找对应版本就可以
ElasticSearch: https://mirrors.huaweicloud.com/elasticsearch/?C=N&O=D.
logstash: https://mirrors.huaweicloud.com/logstash/?C=N&O=D.
kibana: https://mirrors.huaweicloud.com/kibana/?C=N&O=D.
下载好后解压即用
在这里插入图片描述
目录自行理解,启用目录,配置,日志,以及插件目录。
运行bat文件
在这里插入图片描述
启动成功,访问下9200测试
u8iiiiiio
安装可视化界面 head插件
下载地址:https://github.com/mobz/elasticsearch-head.
下载解压
在这里插入图片描述
注意,head为前端项目,要使用先配置一下node.js环境,然后根据官网启动
在这里插入图片描述
在这里插入图片描述
运行
在这里插入图片描述
查看9100端口
在这里插入图片描述
点击连接我们的es服务发现连接不上,这是因为跨域问题,解决下跨域问题,在es的配置文件yml中添加跨域配置
在这里插入图片描述
修改完成保存后重新启动es,再次连接发现成功
在这里插入图片描述

在es中可以我们可以把一个索引就理解成一个库,文档即为库中的数据(这里感觉其实和mongodb挺像的),新建一个索引
在这里插入图片描述
在这里插入图片描述
后面的查询在kibana中进行。

Kibana

下面我们准备安装下kibana,在此之前先了解下ELK的概念

ELK

ELK是ElasticSearch,Logstack、Kibana三大开源框架首字母大写简称。市面上也称之为Elastic stack,es技术栈,其中es是一个基于lucene、分布式,通过restful方式进行交互的近实时搜索平台框架。像类似百度、谷歌这种大数据全文搜索引擎的场景都可以使用es作为底层支持框架。Logstack是ELK的中央数据流引擎,用于从不同目标(文件/数据存储/MQ)收集的不同格式数据,经过过滤后支持输出到不同目的地(文件/MQ/redis/es/kafka等)。kibana可以将es的数据通过友好的页面展示出来,提供实时分析的功能。

kibana详情

kibana是一个针对es的开源分析及可视化平台,用来搜索、查看和交互存储在es索引中的数据。使用kibana,可以通过各种图表进行高级数据分析及展示。kibana让海量数据更容易理解。
注意kibana的版本要和es的版本保持一致。老规矩,解压
在这里插入图片描述
ELK的好处都是开箱即用,运行bat文件:
在这里插入图片描述
访问5601端口:
在这里插入图片描述
之后的所有操作都在这里进行
在这里插入图片描述

ES核心概念

集群,节点,索引,类型,文档,分片
es是面向文档的,将其和关系型数据库进行对比

Relation DBElasticSearch
数据库索引
types
documents
字段fields

es(集群)中可以包含多个索引,每个索引中可以包含多个类型(表),类型中又包含多个文档,每个文档包含多个字段

物理设计:es在后台将每个索引划分成多个分片,每片分片可以在集群中的不同服务器之间进行迁移。
逻辑设计:一个索引类型中,包含多个文档,当我们索引一篇文档时,我们可以按照这样一个顺序找到目标:索引->类型->文档id,注意id不是整数,实际上是一个字符串。

文档

es是面向文档的,也就意味着索引和搜索数据的最小单位是文档,其中文档有几个重要的属性:

  • 自我包含,一篇文档同时包含字段和对应的值,也就是同时含有key和value
  • 可以是层次型的,一个文档中包含自文档,复杂的逻辑试题就是这么来的
  • 灵活的结构,文档不依赖预先定义的模式,我们知道关系型数据库中,要提前定义字段才能使用,在es中对于字段是非常灵活的,我们可以忽略该字段或者动态的添加一个新的字段

当然,尽管我们可以随意的新增或忽略某个字段,但是每个字段的类型非常重要,比如一个年龄字段类型,可以是字符串也可以是整形。因为es会保存字段和类型之间的映射及其他的设置。这种映射具体到每个映射的每种类型,这也是为什么在es中类型有时候也被称之为映射类型。

类型

类型是文档的逻辑容器,就像关系型数据库一样,表格是行的容器。类型中对于字段的定义称之为映射,比如name映射为字符串类型的。我们说文档时无模式的,他们不需要拥有映射中所定义的所有字段,比如新增一个字段,那么es会如何去做?es会自动的将新字段加入映射,但是这个字段不确定它是什么类型,es就去猜,如果这个值是18那么es就会认为它是整形的,但es也可能猜不对,所以最安全的方式就是提前定义好所需要的映射

索引

就是数据库!
索引是映射类型的容器,es中的索引是一个非常大的文档集合,索引存储了映射类型的字段和其他设置。然后他们被存储到了各个分片上。这里我们需要理解下分片是如何工作的。
物理设计:节点和分片是如何工作的
一个集群至少有一个节点,而一个节点就是一个es进程,节点可以有多个索引默认的,如果你创建索引,那么索引将会有五个分片(primary shard又称为主分片)构成的,每个主分片会有一个副本(replica shard,又称为复制分片)
在这里插入图片描述
比如上图是一个有三个节点的集群,可以看到主分片和对应的复制分片都不会在同一个节点内,这样有利于某个节点挂了,数据也不会丢失。实际上一个分片是一个Lucene索引,一个包含倒排索引的文件目录,倒排索引的结构使es在不扫描全部文档的情况下,就能告诉你哪些文档包含特定的关键字。

倒排索引

es使用的是一种称为倒排索引的结构,采用Lucene倒排索引作为底层。这种结构适用于快速的全文搜索,一个索引由文档中所有不重复的列表构成,对于每一个词,都有包含他的文档列表。例如现在有两个文档,每个文档包含的内容如下:

Study every day, good good up to forever #文档1
To forever,study every day, good good up #文档2

为了创建倒排索引,我们首先要将每个文档拆分成独立的词(或成为词条或者tokens),然后创建一个包含所有不重复的词条的排序列表,然后列出每个词条出现在哪个文档

term文档1文档2
Study×
To×
… …… …… …

现在我们试图搜索to forever,只需要查看包含每个词条的文档

term文档1文档2
to×
forever
total21

两个文档都匹配,但显然第一个文档比第二个文档更加匹配,如果没有别的条件,现在包含两个关键字的文档都将返回。
再看一个事例:
在这里插入图片描述
如果要搜索含有python标签的文章,那相当于查找所有原始数据而言,查找倒排索引后的数据会快很多,只需要查看标签这一栏然后直接获取相关的文章id即可。

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐