01_Elasticsearch简介与环境搭建

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 01_Elasticsearch简介与环境搭建

Elasticsearch简介与环境搭建

一、简介

ElasticSearch是一个分布式,高性能、高可用、可伸缩的搜索和分析系统,

根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。

1、什么是搜索

百度、Google:我们想寻找一个我们喜欢的电影或者书籍就会去百度或者Google搜索一下。
互联网搜索:电商搜索商品,招聘网站搜索简历或者岗位
IT系统的搜索:员工管理搜索,会议管理搜索

2.如果用数据库做搜索会怎么样

3.正常的sql搜索存在的问题:

  1. 如果表记录上千万上亿了这个性能问题,另外一个如果有一个本文字段要在里面模糊配置,这个就会出现严重的性能问题
  2. 还不能将搜索词拆分开来,比如上面这个只能搜索名字是“张三”开头的员工,如果想搜出“张小三”那是搜索不出来的。
    总体来说,用数据库来实现搜索,是不太靠谱的,通常性能也会很差

3、什么是全文检索、倒排索引和Lucene

举个简单的例子:比如最近上映的热剧(碟中谍6:全面瓦解),我们想搜索一下全面瓦解这个电视剧,可是在输入的过程,不小心输入了”全瓦解”,我们看看百度这个返回了什么,百度返回的结果确实是我想要找到的内容

全文检索

就比较好理解的,就是当我们输入“全瓦解”,会被拆分成”全”,“瓦解”2个词,用2个词去倒排索引里面去检索数据,检索到的数据返回。整个过程就叫做全文检索

倒排索引

如果这个用数据库的思维来做的话,假如一共100W的记录,按照之前的思路就是扫描100W次,而且每次扫描,都需要匹配那个文本所有的字符,确认是否包含搜索的关键词,而且还不能将搜索词拆解来进行检索
如果是利用倒排索引的话,假设还是100W,拆分出来的词语,假设有1000W个词语,那么在倒排索引中,就有1000W行。我们可能不需要检索1000W词,有可能检索1次,就能找到我们需要的数据,也有可能是100W次,也有可能是1000W次
这就是为什么我们命名搜索的是全瓦解,事实上只是按照瓦解搜索的,因为全在倒排索引中没有存在

4、ElasticSearch的应用场景

  1. 维基百科
  2. The Guardian(国外新闻网站)
  3. Stack Overflow(国外的程序异常讨论论坛)
  4. GitHub(开源代码管理)
  5. 电商网站
  6. 日志数据分析
  7. 商品价格监控网站
  8. BI系统
  9. 站内搜索

5.ElasticSearch的功能

分布式的搜索引擎和数据分析引擎
搜索:网站的站内搜索,IT系统的检索
数据分析:电商网站,统计销售排名前10的商家
全文检索,结构化检索,数据分析
全文检索:我想搜索商品名称包含某个关键字的商品
结构化检索:我想搜索商品分类为日化用品的商品都有哪些
数据分析:我们分析每一个商品分类下有多少个商品
对海量数据进行近实时的处理
分布式:ES自动可以将海量数据分散到多台服务器上去存储和检索
海联数据的处理:分布式以后,就可以采用大量的服务器去存储和检索数据,自然而然就可以实现海量数据的处理了
近实时:检索数据要花费1小时(这就不要近实时,离线批处理,batch-processing);在秒级别对数据进行搜索和分析

二、环境搭建

环境版本要求:

1. elasticsearch-7.8.0
2. elasticsearch-analysis-ik-7.8.0
3. kibana-7.8.0
4. node-v14.19.0-x64.msi

1.安装 elasticsearch-7.8.0

(1)Elasticsearch无需安装,解压即用。

(2)配置  elasticsearch-7.8.0\config\elasticsearch.yaml

http.cors.enabled: true #表示是否支持跨域,默认为false
http.cors.allow-origin: "*"  #当设置允许跨域,默认为*,表示支持所有域名

(3)进入elasticsearch/bin目录,可以看到下面的执行文件:elasticsearch.bat 双击运行,等全部加载完

可以看到绑定了两个端口:

  • 9300:Java程序访问的端口
  • 9200:浏览器、postman访问的端口

(3)我们在浏览器中访问:http://127.0.0.1:9200

看到了上面的信息,说明你的Elasticsearch已经安装成功了

2.配置Elasticsearch的客户端工具

(1)安装node.js

node-v14.19.0-x64.msi

安装完成用cmd进入安装目录执行 node -v可查看版本号

(2) 执行 npm install -g grunt-cli 安装grunt

安装完成后执行grunt -version查看是否安装成功,会显示安装的版本号

(3)解压安装elasticsearch-head-master

    修改Gruntfile.js

在对应的位置加上hostname:’*’

(4)启动 elasticsearch-head-master
  • 在命令提示符进入该文件夹根目录例:D:\environment\elasticsearch-head-master
npm install -g
  • 执行npm run start 运行head插件,如果运行不成功建议重新安装grunt
npm run start


(5)打开浏览器访问head:http://127.0.0.1:9100健康值为绿色即成功

3 .安装Ik分词器

什么是IK分词器?

分词:即把一段中文或者别的划分成一个个的关键字,我们在搜索时候会把自己的信息进行分词,会把数据库中或者索引库中的数据进行分词,然后进行一个匹配操作,默认的中文分词是将每个字看成一个词,比如“我爱黎明”会被分为"我","爱","“黎","明" 。这显然是不符合要求的,所以我们需要安装中文分词器IK来解决这个问题。

IK提供了两个分词算法: ik. smart和ik_max_ word

其中ik_smart为最少切分, ik _max_word为最细粒度划分

ElasticSearch 默认采用的分词器, 是单个字分词 ,效果很差 ,所以我们需要安装一个更实用的分词器,这里采用IK分词器

1、下载

https://github.com/medcl/elasticsearch-analysis-ik

elasticsearch-analysis-ik-7.8.0.zip

(1)解压到elasticsearch主文件下plugins下的一个新建文件夹,我们起名为ik

例:解压到\elasticsearch-7.8.0-windows-x86_64\elasticsearch-7.8.0\plugins\ik

(2)重启elasticsearch主文件和客户端工具

正常能通过

http://127.0.0.1:9200/访问

http://127.0.0.1:9100/健康值仍为绿色,成功

4. Kibana安装

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

官网:https://www.elastic.co/cn/kibana

注意:使用的ES版本要与Kibana的对应

elasticsearch-7.8.0

kibana-7.8.0

下载完成解压kibana-7.8.0,

修改kibana/config/kibana.yml

将连接es服务的配置 注释去除,使得有效

双击kibana.bat启动即可, 访问http://localhost:5601/

在Kibana目录下的config中修改Kibana.yml文件,最后一行加上

i18n.locale: "zh-CN"

重启即可

ElasticSearch、head、Kibana三个服务:

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
Web App开发 自然语言处理 Java
Elasticsearch简介及安装
Elasticsearch简介及安装
290 0
|
6月前
|
自然语言处理 Java Shell
Elasticsearch【环境搭建 01】【elasticsearch-6.4.3 单机版】(含 安装包+分词插件 云盘资源)
【4月更文挑战第12天】Elasticsearch【环境搭建 01】【elasticsearch-6.4.3 单机版】(含 安装包+分词插件 云盘资源)
68 2
|
存储 数据可视化 搜索推荐
分布式系列教程(26) -分布式日志搜集工具Elasticsearch简介
分布式系列教程(26) -分布式日志搜集工具Elasticsearch简介
109 0
|
自然语言处理 Rust 搜索推荐
elasticsearch简介
elasticsearch简介
76 0
|
6月前
|
存储 自然语言处理 Java
Elasticsearch全文搜索技术之二kibana的简介和使用
Elasticsearch全文搜索技术之二kibana的简介和使用
85 2
|
存储 消息中间件 监控
【ElasticSearch】ELK简介
【ElasticSearch】ELK简介
170 2
【ElasticSearch】ELK简介
|
6月前
|
数据可视化 Java 关系型数据库
Elasticsearch【环境搭建 02】最新版 elasticsearch + kibana(7.15.0)安装、配置、启动(多个问题处理 + kibana仪表盘使用举例)
Elasticsearch【环境搭建 02】最新版 elasticsearch + kibana(7.15.0)安装、配置、启动(多个问题处理 + kibana仪表盘使用举例)
390 0
|
6月前
|
自然语言处理 Java 关系型数据库
Elasticsearch【环境搭建 01】elasticsearch-6.4.3 单机版不能以root用户运行es 及 max_map_count 问题解决(含 安装包+分词插件 云盘资源)
Elasticsearch【环境搭建 01】elasticsearch-6.4.3 单机版不能以root用户运行es 及 max_map_count 问题解决(含 安装包+分词插件 云盘资源)
56 0
|
关系型数据库 MySQL Docker
ElasticSearch简介
ElasticSearch简介
|
存储 机器学习/深度学习 SQL
阿里云 Elasticsearch简介和购买流程
开源Elasticsearch是一个基于Lucene的实时分布式的搜索与分析引擎,是遵从Apache开源条款的一款开源产品,是当前主流的企业级搜索引擎。作为一款基于RESTful API的分布式服务,Elasticsearch可以快速地、近乎于准实时地存储、查询和分析超大数据集,通常被用来作为构建复杂查询特性和需求强大应用的基础引擎或技术。