【全文搜索引擎】Elasticsearch相关介绍与linux系统安装

概念

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

相关的概念

  • Lucene:由Java语言编写的一套实现全文检索的开源引擎工具包,属于Apache公司
  • 全文检索:先创建索引库,再根据索引库进行搜索的过程
  • 索引库:存储索引的数据库 — 数据于数据库
  • 倒排索引:先对文档进行分词,形成词条与文档ID及词条与文档ID的对应关系,再通过词条查询到文档的过程

与数据库进行对比

MySQL数据库
  • 如果使用模糊查询,左边有通配符,不会走索引,会全表扫描,性能低
  • 查询功能弱,没有分词,如果以”华为手机“作为条件,查询不到数据“华为5G手机”
  • 有事务性,有外键
  • 负责存储数据
ElasticSearch
  • 搜索性能高,功能强,可以分词
  • 没有事务性,没有外键
  • 负责搜索数据
结论
  • MySQL有事务性,而ElasticSearch没有事务性,所以删了的数据是无法恢复的。
  • ElasticSearch没有物理外键这个特性,,如果数据强一致性要求比较高,还是建议慎用
  • ElasticSearch和MySql分工不同,MySQL负责存储数据,ElasticSearch负责搜索数据

ElasticSearch安装

windows安装

百度百科有个以windows操作系统和ES0.19.7版本为例的安装步骤,可以参考
在这里插入图片描述

linux系统安装

上传ElasticSearch安装包

alt+p # 打开sftp窗口
# 上传es安装包
put e:/software/elasticsearch-7.4.0-linux-x86_64.tar.gz

执行解压操作

 # 将elasticsearch-7.4.0-linux-x86_64.tar.gz解压到opt文件夹下. -C 大写
 tar -zxvf elasticsearch-7.4.0-linux-x86_64.tar.gz  -C /opt

创建普通用户

因为安全问题,Elasticsearch 不允许root用户直接运行,所以要创建新用户,在root用户中创建新用户,执行如下命令:
useradd wanyuan  # 新增wanyuan用户
passwd  wanyuan  # 为wanyuan用户设置密码

为新用户授权

# 将 /opt/elasticsearch-7.4.0文件夹授权给wanyuan用户
chown -R wanyuan:wanyuan /opt/elasticsearch-7.4.0 #文件夹所有者

修改elasticsearch.yml文件

vim /opt/elasticsearch-7.4.0/config/elasticsearch.yml 
# ======================== Elasticsearch Configuration =========================
cluster.name: my-application
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["node-1"]
cluster.name:配置elasticsearch的集群名称,默认是elasticsearch。建议修改成一个有意义的名称

node.name:节点名,elasticsearch会默认随机指定一个名字,建议指定一个有意义的名称,方便管理

network.host:设置为0.0.0.0允许外网访问

http.port:Elasticsearch的http访问端口

cluster.initial_master_nodes:初始化新的集群时需要此配置来选举master

修改配置文件

# 新创建的wanyuan用户最大可创建文件数太小,最大虚拟内存太小,
# 切换到root用户,编辑下列配置文件, 添加类似如下内容
# 切换到root用户
su root 

#1. ===最大可创建文件数太小=======
vim /etc/security/limits.conf 
# 在文件末尾中增加下面内容
wanyuan soft nofile 65536
wanyuan hard nofile 65536
# =====
vim /etc/security/limits.d/20-nproc.conf
# 在文件末尾中增加下面内容
wanyuan soft nofile 65536
wanyuan hard nofile 65536
*  hard    nproc     4096
# 注:* 代表Linux所有用户名称	

#2. ===最大虚拟内存太小=======
vim /etc/sysctl.conf
# 在文件中增加下面内容
vm.max_map_count=655360
# 重新加载,输入下面命令:
sysctl -p

启动elasticsearch

su wanyuan  # 切换到wanyuan用户启动
cd /opt/elasticsearch-7.4.0/bin
./elasticsearch #启动

访问elasticsearch

在访问elasticsearch前,请确保防火墙是关闭的,执行命令:

#暂时关闭防火墙
systemctl  stop  firewalld

# 或者

#永久设置防火墙状态
systemctl enable firewalld.service  #打开防火墙永久性生效,重启后不会复原 
systemctl disable firewalld.service #关闭防火墙,永久性生效,重启后不会复原 

浏览器输入http://192.168.149.135:9200/,如下图
在这里插入图片描述
此时elasticsearch已成功启动:

重点几个关注下即可:
	number" : "7.4.0"   表示elasticsearch版本
	lucene_version" : "8.2.0"  表示lucene版本
	name : 默认启动的时候指定了 ES 实例名称
	cluster_name : 默认名为 elasticsearch

核心概念

  • 索引(index):ElasticSearch存储数据的地方,可以理解成关系型数据库中的数据库概念。
  • 映射(mapping):mapping定义了每个字段的类型、字段所使用的分词器等。相当于关系型数据库中的表结构。
  • 文档(document):Elasticsearch中的最小数据单元,常以json格式显示。一个document相当于关系型数据库中的一行数据。
  • 倒排索引:一个倒排索引由文档中所有不重复词的列表构成,对于其中每个词,对应一个包含它的文档id列表。
  • 类型(type):
    • 一种type就像一类表。如用户表、角色表等。
    • ES 5.x中一个index可以有多种type。
    • ES 6.x中一个index只能有一种type。
    • ES 7.x以后,将逐步移除type这个概念,现在的操作已经不再使用,默认_doc

RESTful风格

  • REST(Representational State Transfer),表述性状态转移,是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是RESTful。就是一种定义接口的规范。
  • 基于HTTP。
  • 可以使用XML格式定义或JSON格式定义。
  • 每一个URI代表1种资源。
  • 客户端使用GET、POST、PUT、DELETE 4个表示操作方式的动词对服务端资源进行操作:
    • GET:用来获取资源
    • POST:用来新建资源(也可以用于更新资源)
    • PUT:用来更新资源
    • DELETE:用来删除资源
发布了34 篇原创文章 · 获赞 14 · 访问量 1568

猜你喜欢

转载自blog.csdn.net/Wan_Yuan/article/details/105443840