1.什么是Lucene?
Lucene就是一个jar包,里面包含了封装好的各种建立倒排索引,以及进行行搜索的代码,包含了各种算法,我们用java开发的时候,引入lucene .jar,然后基于lucene的api去进行开发就可以了,我们就可以将已有的数据建立索引,lucene会在本地磁盘上面,给我们组织索引的数据结构。我们也可以用lucene提供的功能和api来针对磁盘索引数据,进行搜索。
Elsticsearch将很难用的lucene分钟,用简单的命令调用,天生分布式集群高可用
举例倒排索引
当在搜索引擎中搜索 生化危机
会给你搜索的词拆分,建立索引
1.生化仪 生化 化仪
2.生化武器 生化 武器 化武
3.生化危机电影 生化 危机 电影 机电
4.生化危机音乐 生化 危机 音乐
5.生化危机海报 生化 危机 海报
生化 5次 1 2 3 4 5
危机 3次 3 4 5
电影 1次 3
345出现的次数最多
会根据你搜索的内容进行匹配,看出现次数最多的进行显示
elasticsearch的功能
1.分布式搜索和分析引擎
2.全文检索,结构化检索,数据分析
3.对海量数据进行近实时的处理
Elasticsearch vs 数据库
Document 行
Type 表
Index 库
filed 字段
安装方式
docker
优点:部署方便,开箱即用,启动迅速
缺点:需要docker知识,修改配置文件麻烦,需要重启生成镜像,数据存储需要挂载目录
tar
优点:部署灵活,对系统侵占性小
缺点:需要自己写启动配置文件,目录提前规划好
RPM|deb
优点:部署方便,启动脚本安装即用,存放目录标准化
缺点:软件各个组件分布在不同目录,卸载可能不干净,默认配置文件需要修改
ansible
优点:及其灵活,你想要的功能都有,批量部署快
缺点:需要学习ansible语法,需要提前规划好所有标准,需要专人维护
rpm安装方式
三台机器 10.0.0.122 10.0.0.123 10.0.0.124
安装java(三台都先装上)
yum install -y java-1.8.0-openjdk.x86_64
下载安装软件(三台)
mkdir -p /data/soft -p
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.0.rpm
(暂时先装一台10.0.0.122)
rpm -vih elasticsearch-6.6.0.rpm
会提示你重启配置文件
systemctl daemon-reload
systemctl start elasticsearch.service
netstat -lntup|grep 9200
tcp6 0 0 127.0.0.1:9200 :::* LISTEN 10618/java
tcp6 0 0 ::1:9200 :::* LISTEN 10618/java
curl 127.0.0.1:9200
{
"name" : "VOwrU2x",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "AdrCI8z9QVulHYlZUVUvvw",
"version" : {
"number" : "6.6.0",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "a9861f4",
"build_date" : "2019-01-24T11:27:09.439740Z",
"build_snapshot" : false,
"lucene_version" : "7.6.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
配置文件详解
rpm -qc elasticsearch
/etc/elasticsearch/elasticsearch.yml #ES主配置文件
/etc/elasticsearch/jvm.options #jvm虚拟机
/etc/init.d/elasticsearch #启动文件
/etc/sysconfig/elasticsearch #环境变量相关的
/usr/lib/sysctl.d/elasticsearch.conf #jvm相关配置
/usr/lib/systemd/system/elasticsearch.service #systemctl 启动文件
/var/lib/elasticsearch #数据目录
/var/log/elasticsearch #日志目录
/var/run/elasticsearch #pid目录
/etc/elasticsearch/elasticsearch.yml 单机简单的配置
node.name: node-1 #节点名称
path.data: /data/elasticsearch #path路径
path.logs: /var/log/elasticsearch #日志路径
bootstrap.memory_lock: true #启动的时候将内存锁死
network.host: 10.0.0.122 #绑定主机(内网)
http.port: 9200 #端口
内存限制
/etc/elasticsearch/jvm.options
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms1g
-Xmx1g
官方提示
1.不要超过32G
2.最大最小设置为一样
3.配置文件设置锁定内存
4.至少给服务器本身空余50%的内存(假如60G 内存 最大30G,建议一点一点给,8G 12G 24G --16G内存,建议最大8G,如果没有其他服务,可以再给大点,并且还要看数据量大小)
创建目录并授权
mkdir /data/elasticsearch
chown -R elasticsearch:elasticsearch /data/elasticsearch/
systemctl status elasticsearch
重启会失败
查看日志
tail -f /var/log/elasticsearch/elasticsearch.log
[ERROR][o.e.b.Bootstrap ] [node-1] node validation exception
[1] bootstrap checks failed
[1]: memory locking requested for elasticsearch process but memory is not locked
解决办法:
systemctl edit elasticsearch
[Service]
LimitMEMLOCK=infinity
重启
systemctl daemon-reload
systemctl restart elasticsearch
netstat -lntup|grep 9200