ElasticSearch的学习笔记并整合SpringBoot做测试

ElasticSearch的学习

简介

ElasticSearch是一个分布式的开源搜索和分析引擎,MySQL专攻于数据的持久化存储与管理(即CRUD),在真正要处理海量数据的检索与分析时,ElasticSearch是更胜一筹的,可以秒级地从海量数据中检索出需要需要的数据,而MySQL如果单表达到百万以上的数据再进行检索是非常慢的。

ElasticSearch功能有很多,包括各种检索功能(应用程序搜索、网站搜索、企业搜索)、对检索来的数据做处理分析(特别是日志处理和分析)、应用指标的监控、数据的分析和可视化等。

ElasticSearchm是目前全文搜索引擎的首选,可以快速地存储、搜索和分析海量数据。数据默认放在内存中

其底层是用以前Apache的开源库Lucene,对Lucene做了再一次的简化封装,直接提供REST API的操作接口,比如直接给ElasticSearch发请求就可以使用其复杂的检索功能。

官方文档

一、基本概念

1、Index(索引)

动词,相当于MySQL中的insert,在MySQL中插入一条数据 = 在ElasticSearch中索引一条数据;

名词,相当于MySQL中的Database,MySQL中的库 = ElasticSearch的索引

2、Type(类型)【根据当前ES版本最新文档,“Before 7.0.0, the mapping definition included a type name. Elasticsearch 7.0.0 and later no longer accept a default mapping. See Removal of mapping types.”,类型已被移除。具体原因及解决见 Mapping 知识块】

在Index(索引)中,可以定义一个或多个类型;

类似于MySQL中的Table;每一种类型的数据放在一起

3、Document

保存在某个索引(Index)下,某种类型(Type)的一个数据(Document),文档是JSON格式的,Document就像是MySQL中的某个Table里面的内容(一条条的记录)

4、ElasticSearch概念 — 倒排索引机制

分词:将整句分拆为单词;

将拆分出来的单词和该单词出现的记录存放在ElasticSearch额外维护的倒排索引表中

检索:拆分检索的数据为单词,在倒排索引表中查询这些单词分别在哪些记录中

相关性得分,将相关性得分高的记录数据查出来

二、docker安装ElasticSearch

修改 Linux 网络设置
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ls
ifcfg-eth0  ifdown-bnep  ifdown-isdn    ifdown-sit       ifup          ifup-ippp  ifup-plusb   ifup-sit       ifup-wireless
ifcfg-eth1  ifdown-eth   ifdown-post    ifdown-Team      ifup-aliases  ifup-ipv6  ifup-post    ifup-Team      init.ipv6-global
ifcfg-lo    ifdown-ippp  ifdown-ppp     ifdown-TeamPort  ifup-bnep     ifup-isdn  ifup-ppp     ifup-TeamPort  network-functions
ifdown      ifdown-ipv6  ifdown-routes  ifdown-tunnel    ifup-eth      ifup-plip  ifup-routes  ifup-tunnel    network-functions-ipv6
[root@localhost network-scripts]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:4d:77:d3 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global noprefixroute dynamic eth0
       valid_lft 83062sec preferred_lft 83062sec
    inet6 fe80::5054:ff:fe4d:77d3/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:87:53:b1 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.10/24 brd 192.168.56.255 scope global noprefixroute eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe87:53b1/64 scope link 
       valid_lft forever preferred_lft forever
4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:da:49:0e:5c brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:daff:fe49:e5c/64 scope link 
       valid_lft forever preferred_lft forever
6: veth9f2577f@if5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether 4a:e1:fa:70:da:a3 brd ff:ff:ff:ff:ff:ff link-netnsid 1
    inet6 fe80::48e1:faff:fe70:daa3/64 scope link 
       valid_lft forever preferred_lft forever
8: veth938fc84@if7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether 2a:e1:8c:3b:bc:66 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::28e1:8cff:fe3b:bc66/64 scope link 
       valid_lft forever preferred_lft forever
12: vethb2c64c0@if11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether 0e:fa:e2:77:1a:62 brd ff:ff:ff:ff:ff:ff link-netnsid 3
    inet6 fe80::cfa:e2ff:fe77:1a62/64 scope link 
       valid_lft forever preferred_lft forever
18: veth9f373db@if17: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether 1e:42:ad:3e:88:f2 brd ff:ff:ff:ff:ff:ff link-netnsid 2
    inet6 fe80::1c42:adff:fe3e:88f2/64 scope link 
       valid_lft forever preferred_lft forever
[root@localhost network-scripts]# vi ifcfg-eth1

#VAGRANT-BEGIN
# The contents below are automatically generated by Vagrant. Do not modify.
NM_CONTROLLED=yes
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.56.10
NETMASK=255.255.255.0
GATEWAY=192.168.56.1		# 设置网关
DNS1=114.114.114.114		# 公共DNS,用于解析域名
DNS2=8.8.8.8
DEVICE=eth1
PEERDNS=no
#VAGRANT-END

[root@localhost network-scripts]# service network restart
修改 Linux 的 yum 源
  1. 备份原 yum 源
  2. 使用新 yum 源
  3. 生成缓存
[root@localhost network-scripts]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
[root@localhost network-scripts]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1572  100  1572    0     0   3849      0 --:--:-- --:--:-- --:--:--  3852
[root@localhost network-scripts]# yum makecache
Loaded plugins: fastestmirror
Determining fastest mirrors
base 																			| 3.6 kB  00:00:00     
docker-ce-stable 																| 3.5 kB  00:00:00     
extras 																			| 2.9 kB  00:00:00     
updates 																		| 2.9 kB  00:00:00     
(1/11): base/7/x86_64/other_db 													| 2.6 MB  00:00:01     
(2/11): base/7/x86_64/filelists_db 												| 7.2 MB  00:00:01     
(3/11): docker-ce-stable/7/x86_64/filelists_db 									|  24 kB  00:00:05     
(4/11): extras/7/x86_64/filelists_db 											| 226 kB  00:00:00     
(5/11): extras/7/x86_64/other_db 												| 134 kB  00:00:00     
(6/11): extras/7/x86_64/primary_db 												| 225 kB  00:00:00     
(7/11): updates/7/x86_64/primary_db 											| 5.6 MB  00:00:00     
(8/11): updates/7/x86_64/other_db 												| 454 kB  00:00:00     
(9/11): updates/7/x86_64/filelists_db 											| 3.4 MB  00:00:00     
(10/11): docker-ce-stable/7/x86_64/other_db 									| 117 kB  00:00:01     
(11/11): docker-ce-stable/7/x86_64/primary_db 									|  56 kB  00:00:09     
Metadata Cache Created
1、下载镜像文件
docker pull elasticsearch:7.10.1		#存储和检索数据,相当于MySQL服务
docker pull kibana:7.10.1				#可视化检索数据,相当于SQLyog

两个镜像版本需统一

2、创建实例
1)、Elasticsearch
mkdir -p /mydata/elasticsearch/config  
#将在docker容器中的ElasticSearch所有的配置文件信息都挂载在外面虚拟机中的/mydata/elasticsearch/config文件夹下,通过修改虚拟机/mydata/elasticsearch/config中配置文件的配置信息,就能修改docker容器中ElasticSearch的配置

mkdir -p /mydata/elasticsearch/data			
#同样将ElasticSearch中的一些数据文件挂载在外面虚拟机中的/mydata/elasticsearch/data文件夹下。

echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml        
#将http.host: 0.0.0.0写入elasticsearch.yml配置文件中,以便ElasticSearch可以让远程的任何机器进行访问
#如果在之后一部步启动elasticsearch容器报错,并无法通过浏览器访问elasticsearch的9200端口访问到信息,可以查看日志排查,如是文件权限问题,进行以下修改。也可以事先进行文件权限修改
docker logs elasticsearch				#查看elasticsearch启动的日志
ll /mydata/elasticsearch/				#查看/mydata/elasticsearch/目录下的文件的权限,包括config、data、plugins
#发现三个文件都为drwxr-xr-x权限,文件所有人(这里是root用户)可读可写可执行rwx,文件所有组和其他人只有可读和可执行的权限r-x。
#解读drwxr-xr-x:
#第1位 	d		代表文件类型,-:普通文件,d:目录文件,l:链接文件,b:设备文件,c:字符设备文件,p:管道文件
#第2-4位	rwx		代表文件所有者(属主)有可读可写可执行的权限
#第5-7位	r-x		代表文件所有组(属组,与属主同一组的用户)有可读可执行的权限
#第8-10位	r-x		代表其他人有可读可执行的权限
#r:可读,数字表示为4;w:可写,数字表示为2;x:可执行,数字表示为1。
chmod -R 777 /mydata/elasticsearch/   	#chmod是修改权限的命令;-R是可选项,表示递归;777表示将任何用户任何组的权限改为可读可写可执行,对应了三
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值