ElasticSearch安装及使用

目录

一、ElasticSearch 概述

二、为什么要使用 ElasticSearch

2.1 关系型数据库有什么问题?

2.2 ElasticSearch 有什么优势?

2.3 倒排索引核心原理

三、ES 基础概念

3.1 文档和字段

3.2 索引和映射

3.3Mysql 与 Elasticsearch

3.4 字段数据类型

3.5 keyword 类型和 text 类型的区别

四 安装及配置

1.ES 安装

1、安装

2、熟悉目录

3、启动

2.kibaa

1、下载地址:

2、安装

3、启动

3.IK 分词器(elasticsearch 插件)

1、下载

2、安装

3、重启 ElasticSearch

4、使用 ElasticSearch安装补录/bin/elasticsearch-plugin 可以查看插件

五、项目集成 ES


一、ElasticSearch 概述

官网:Download Elasticsearch | Elastic

Elaticsearch,简称为 es,es 是一个开源的高扩展分布式全文检索引擎,它可以近乎实时的存储检索数据;

二、为什么要使用 ElasticSearch

2.1 关系型数据库有什么问题?

传统的关系数据库提供事务保证,具有不错的性能,高可靠性,久经历史考验,而且使用简单,功能强大,同时也积累了大量的成功案例。

后来,随着访问量的上升,几乎大部分使用 MySQL 架构的网站在数据库上都开始出现了性能问题。

2.2 ElasticSearch 有什么优势?

非关系型、搜索引擎、近实时搜索与分析、高可用、天然分布式、横向可扩展

2.3 倒排索引核心原理

倒排索引是整个 ES 的核心,正常的搜索以一本书为例,应该是由 “目录 -> 章节 -> 页码 -> 内容” 这样的查找顺序,这样是正排索引的思想。

但是设想一下,我在一本书中快速查找 “elasticsearch” 这个关键字所在的页面该怎么办?倒排索引的思路是通过单词到文档 ID 的关系对应

例如有如下三个文件:文件就是文档

文件 A:通过 Python 搭建网站...........

文件 B:通过 Python 爬取网站数据............

文件 C:Linux 分布式爬虫..........................

现在我们要查询,带有 Python 的文件,正常是对每个文件进行遍历,每个文件遍历一次,如果文件特别大,每个文件有一亿个字符,总共有一亿个文件,双重 for 循环,每个我们都要遍历,非常消耗资源

三、ES 基础概念

elasticsearch 中有很多独有的概念,与 mysql 中略有差别,但也有相似之处。

3.1 文档和字段

elasticsearch 是面向文档(Document)存储的,可以是数据库中的一条商品数据,一个订单信息。文档数据会被序列化为 json 格式后存储在 elasticsearch 中。

3.2 索引和映射

索引(Index),就是相同类型的文档的集合。

例如:

所有用户文档,就可以组织在一起,称为用户的索引;

所有商品的文档,可以组织在一起,称为商品的索引;

所有订单的文档,可以组织在一起,称为订单的索引;

因此,我们可以把索引当做是数据库中的表。

数据库的表会有约束信息,用来定义表的结构、字段的名称、类型等信息。因此,索引库中就有映(mapping),是索引中文档的字段约束信息,类似表的结构约束。

3.3Mysql 与 Elasticsearch

我们统一的把 mysql 与 elasticsearch 的概念做一下对比:

3.4 字段数据类型

  • 字符串类型

    • text、keyword

  • 数值型

    • long、Integer、short、byte、double、float

  • 日期类型

    • date

  • 布尔类型

    • boolean

3.5 keyword 类型和 text 类型的区别

(1)Text:

1.支持分词,全文检索,支持模糊查询,支持精确查询,不支持聚合,排序操作;

2.最大支持的字符长度无限制,适合大字段存储;

3.将字段进行分词处理,然后再存入到 es 中;

使用场景:

1.存储全文搜索数据,例如:文章内容、地址、代码块;

2.默认结合 standard analyzer(标准解析器)对文本进行分词、倒排索引;

3.默认结合标准分析器进行词命中、词频相关度打分;

(2)Keyword:

1.不进行分词,直接索引,支持模糊查询,支持精确查询,支持聚合,排序操作;

2.最大支持的字符长度 UTF-8 32766 个,可以通过设置 ignore_above 指定自持字段长度,超过给定长度后的数据将不被索引,无法通过 term 精确匹配检索返回结果;

3.默认字符长度 256 个;

使用场景:

1.存储邮箱号码,url,name,title,手机号码;

2.用于筛选数据(例如:select * from x where status = ‘open’)、排序、聚合;

3.直接将完整的文本保存至倒排索引中;

总结:

text 比 keyword 多出了分词处理,所以从内存占比与性能上来看,如果 keyword 满足业务场景并且业务场景中不需要分词,那么优先使用 keyword,因为其内存占比更低,性能更优

四 安装及配置

1.ES 安装

JDK8,最低要求

使用 Java 开发,必须保证ElasticSearch的版本与 Java 的核心 jar 包版本对应!(Java 环境保证没错)

Windows 下安装

1、安装

下载地址:https://www.elastic.co/cn/downloads/

历史版本下载:https://www.elastic.co/cn/downloads/past-releases/

解压即可(尽量将 ElasticSearch 相关工具放在统一目录下)

2、熟悉目录

3、启动

一定要检查自己的 java 环境是否配置好

2.kibaa

Kibana 是一个针对 ElasticSearch 的开源分析及可视化平台,用来搜索、查看交互存储在 Elasticsearch 索引中的数据。使用 Kibana ,可以通过各种图表进行高级数据分析及展示。Kibana 让海量数据更容易理解。它操作简单,基于浏览器的用户界面可以快速创建仪表板( dashboard )实时显示 Elasticsearch 查询动态。设置 Kibana 非常简单。无需编码或者额外的基础架构,几分钟内就可以完成 Kibana 安装并启动 Elasticsearch 索引监测。

1、下载地址:

下载的版本需要与 ElasticSearch 版本对应

下载地址

历史版本下载:https://www.elastic.co/cn/downloads/past-releases/

2、安装

解压即可(尽量将 ElasticSearch 相关工具放在统一目录下)

3、启动

访问

  1.  localhost:5601 

3.IK 分词器(elasticsearch 插件)

IK 分词器:中文分词器

分词:即把一段中文或者别的划分成一个个的关键字,我们在搜索时候会把自己的信息进行分词,会把数据库中或者索引库中的数据进行分词,然后进行一一个匹配操作,默认的中文分词是将每个字看成一个词(不使用用 IK 分词器的情况下)。

IK 提供了两个分词算法ik_smartik_max_word ,其中ik_smart最少切分ik_max_word最细粒度划分

1、下载

版本要与 ElasticSearch 版本对应

下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases

2、安装

ik 文件夹是自己创建的

解压即可(但是我们需要解压到 ElasticSearch 的 plugins 目录 ik 文件夹下)

3、重启 ElasticSearch

加载了 IK 分词器

4、使用 ElasticSearch安装补录/bin/elasticsearch-plugin 可以查看插件

E:\ElasticSearch\elasticsearch-7.6.1\bin>elasticsearch-plugin list

五、项目集成 ES

https://www.easy-es.cn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值