前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >手把手学会Elasticsearch(一)

手把手学会Elasticsearch(一)

作者头像
Java极客技术
发布2022-12-04 12:54:18
2660
发布2022-12-04 12:54:18
举报
文章被收录于专栏:Java极客技术Java极客技术

看到标题,相信大家肯定都不陌生,Elasticsearch,现在很多公司在使用的,也是很多公司在面试的时候很喜欢问的一些题目,而今天阿粉也想着出几篇教程,然后手把手的把ES这块的内容给大家展现出来,让大家都能够系统的学习一下。

什么是Elasticsearch

Elasticsearch 简称 ES,我们先来看看百度百科给的经典回答,

Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在 Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby 和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于 Lucene。

说到 Elasticsearch ,就不得不提一句 Solr 和 Lucene,为什么提这两个比较老的技术,是因为,Elasticsearch 和 Solr 全都是基于 Lucene 来实现的。

那么什么是 Lucene ?

什么是Lucene

Lucene是apache软件基金会 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎。

阿粉依稀记得,在某些培训机构的教学中,那时候都是教学员们学习的 Lucene 和 Solr,但是现在目前而言,Elasticsearch 才是大家最好的选择。

而 Elasticsearch 为什么要用呢?它都解决了什么问题?

毕竟一门技术的出现,肯定伴随着他的应用,有了应用层面,才会让这个技术更快的被大众所接受,而 Elasticsearch 的出现则是为了处理大量数据而存在。

我们生活中的数据总体分为两种:结构化数据和非结构化数据。

结构化数据

指具有固定格式或有限长度的数据,如数据库,元数据等。

常见的结构化数据也就是数据库中的数据。 通常都是使用 sql语句进行查询,而且能很快的得到查询结果。

非结构化数据

指不定长或无固定格式的数据,如邮件,word 文档等磁盘上的文件

而非结构化的数据,一般有两种方式,顺序扫描和倒排索引。

顺序扫描是什么意思呢?

我们做个最简单的比喻,有一本字典,我想要查找一个字,粉,那如果使用顺序扫描的话,那么就得从头开始一页一页的去找,最终找到这个字所在的页码。

而倒排索引呢?

这种方式最简单的比喻还是一本字典,我要搜索一个字,粉,那么我会从F 开头的地方去寻找,这样我们就能很快的定位到 粉 字所在的页码,然后找到我们的数据。

字典的拼音表和部首检字表就相当于字典的索引,对每一个字的解释是非结构化的, 如果字典没有音节表和部首检字表,在茫茫辞海中找一个字只能顺序扫描。然而字的某些信息可以提取 出来进行结构化处理,比如读音,就比较结构化,分声母和韵母,分别只有几种可以一一列举,于是将 读音拿出来按一定的顺序排列,每一项读音都指向此字的详细解释的页数。我们搜索时按结构化的拼音 搜到读音,然后按其指向的页数,便可找到我们的非结构化数据——也即对字的解释。

这种先建立索引,再对索引进行搜索的过程就叫全文检索(Full-Text Search)

现在我们都已经了解了这个Elasticsearch 那么就得来使用一下这个Elasticsearch了。

Elastic有一条完整的产品线:Elasticsearch、Logstash、Kibana等,前面说的三个就是大家常说的ELK技术栈(开源实时日志分析平台)。

我们一个一个来学习,首先来说这个Elasticsearch,目前已经是8.x的版本了,但是目前可能在普及的,也就是6左右的版本,毕竟没有那么多企业会选择使用最新的版本,因为未知的问题才是最难解决的。

Elasticsearch 安装

我们可以直接来安装 Windows版本的和 Linux 版本的,区别不大,看你个人喜好。

Windows版本的

我们找一个7的版本来进行操作,直接下载,然后解压一下,尽量别解压到中文目录,毕竟我们也说不好万一出了什么问题,定位问题都找不到是什么原因。

直接解压出来我们看看都是什么

  • bin

保存的是命令,启动和停止都在这里

  • config

配置文件,ES的配置和日志的配置都在这里

  • lib

ES的依赖jar包

  • logs

不用说了,日志

  • moudules

ES依赖组件,在ES启动的时候需要加载的组件

  • plugins

第三方插件包,如果IK分词器

然后我们启动一下试试,看看能否启动,如果启动失败,那么再找原因看看。

如果不出意外,一般都是启动成功了,但是也有个例,

然后我们访问一下 http://127.0.0.1:9200/

看到如下画面的时候,证明你的安装是成功的,但是也有很多同学发现,有的时候会报错,一般情况下报错有两种,

第一种:JDK问题

JDK的问题一般都是,电脑安装的 JDK 和 ES 所需要的 JDK 不是一个版本

如果你安装的时候出现这么个提示信息。

代码语言:javascript
复制
future versions of Elasticsearch will require Java 11; your Java version from [/opt/jdk1.8.0_211/jre] does not meet this requirement

那么恭喜你,你被 Elasticsearch 的强依赖 JDK 给安排到了,因为 Elasticsearch 该版本内置了 JDK,而内置的 JDK 是当前推荐的JDK版本。当然如果你本地配置了 JAVA_HOME 那么 ES 就是优先使用配置的JDK启动ES。

如果你使用了一些不支持的JDK版本,ES会告诉你,我启动不了,因为你的 JDK 的原因,你只需要切换一下你的 JDK 的版本就可以了。

第二种:内存问题

如果出现这么个问题,那就比较简单了,因为如果你是自己学习的话,百分之七八十都会出现这个问题,毕竟服务器的性能有限,这个时候就去调整配置,把内存稍微降低一下,

文件目录:

代码语言:javascript
复制
config/jvm.options

找到

代码语言:javascript
复制
-Xms1g
-Xmx1g

适当性的改小一点就可以了,关于 Elasticsearch 的安装,你学会了么?

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-07-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java极客技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是Elasticsearch
  • Elasticsearch 安装
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档