1. Elasticsearch 简介
Eladticsearch是一个基于 Lucene 库 的搜索引擎
他提供了一个 分布式 、反对多用户的全文搜索引擎,采纳的是HTTP 接口的形式对外提供服务
Elasticsearch 是一个实时的分布式搜寻剖析引擎,它被用作全文检索、结构化搜寻、剖析以及这三个性能的组合
属于面向文档的数据库
- Elasticsearch 是 _面向文档_ 的,意味着它存储整个对象或 _文档。Elasticsearch 不仅存储文档,而且 索引_每个文档的内容使之能够被检索。在 Elasticsearch 中,你 对文档进行索引、检索、排序和过滤–而不是对行列数据。
搜寻原理:
倒排索引:
- 倒排索引是一种索引办法,被用来存储在全文搜寻下某个单词在文档或者一组文档中的存储地位的映射。它是文档检索系统中最罕用的数据结构(会对文档数据进行标准化解决)
相关性排序:
- 检索词频率:检索词在该文档中呈现的次数,呈现次数越多,相关性越高
- 反向文档频率:检索词在整个文档中呈现的频率,呈现次数越多相关性越低
- 字段长度准则:长度越长,相关性越低
集群
- 节点(node):
- 一个运行中的 Elasticsearch 实例称为一个节点。
- 每个节点都晓得任意文档的所处地位,能够将申请发给任意一个节点(包含主节点),所以主节点不会成为不会成为集群的瓶颈
- 主节点:当一个节点被选举成主节点时,它将负责管理集群范畴内所有变更,例如减少、删除索引,或者减少删除节点。而主节点并不需要波及到文档级别的变更和搜寻等操作。
- 分片(shard):
- 一个分片是一个底层的工作单元 它仅保留了 全副数据中的一部分。Elasticsearch 是利用分片将数据散发到集群内各处的。分片是数据的容器,文档保留在分片内,分片又被调配到集群内的各个节点里。当你的集群规模扩充或者放大时,Elasticsearch 会主动的在各节点中迁徙分片,使得数据依然均匀分布在集群里。
- 主分片(primary shard):索引内的任意一个文档都属于一个主分片,所以主分片(按 50G 时查问和写入的性能较好)的数目决定着可能保留的最大数据量
- 复制分片(replica shard):复制分片是主分片的拷贝。复制分片作为硬件故障时爱护数据不失落的冗余备份,并为搜寻和返回文档等读操作提供服务。
- 在索引建设的时候就曾经确定了主分片数,然而正本分片数能够随时批改.
- 每一个分片是一个性能残缺的搜索引擎,它能够应用一个节点上的所有资源的能力。复制分片越多,也将领有越高的吞吐量
# 设置索引的分片
curl -X PUT IP:9200/ 库名 -H 'Content-Type: application/json' -d'{"settings": {"index": {"number_of_shards": 3,"number_of_replicas" : 1}
}
}
'
# 批改副分片数量
PUT IP:9200/ 库名 /_settings {"number_of_replicas" : 2}
# 查看集群衰弱状态
GET IP:9200/_cluster/health
2. ES 的单机部署
一、配置网卡(无网环境疏忽此条)
vi /etc/sysconfig/network-scripts/ifcfg-*
BOOTPROTO=static # 批改为动态网路,能够不批改
ONBOOT=yes
systemctl restart network
二、配置本地 yum 源(有网环境疏忽此条)
mkdir /centos7 #寄存本地 yum 源
mount /iso ./tmp #将 iso 镜像挂载到本地文件中
cp -vrf ./tmp/* /centos7 #将挂载后到本地文件 copy 到本地 yum 源文件中
cd /etc/yum.repos.d
mv ./CentOS-* /root/tmp #移除 yum 到网络源信息
vi yum.repo #编写本地 yum
[centos7-yum]
name="yum.local"
baseurl=file:///centos7
gpgcheck=0
enabled=1
yum clean all #刷新缓存
rm -rf /var/cache/yum
yum list #显示数据则示意本地 yum 配置胜利
yum install net-tools #装置 net-tools,查看 ifconfig
留神:
本地挂载完镜像之后,如果还要应用该文件的话,必须先 umount 该文件,否则会报错,提醒权限不够
三、敞开防火墙及 selinux
systemctl disable firewalld
systemctl stop firewalld
vi /etc/sysconfig/selinux
SELINUX=disabled
setenforce 0
getenforce
留神:
装置 docker 时能够不必敞开,当 es 进行集群部署时,必须敞开,否则集群无奈失效
四、装置 docker
scp docker.zip root@ip:~ #没网手动 copy
unzip docker.zip
cd docker
sh setup_without_container-selinux-2.9 #虚拟机 / 实体机
# 服务器,间接联网装置,不赘述
setup_without_container-selinux-2.9.sh 脚本内容如下:
#auto-mount
yum clean all
yum makecache
yum remove -y docker-engine
mkdir -p /data/tmp
chmod -R 777 /data/tmp
mkdir -p /data/sys/var/docker
chmod -R 777 /data/sys/var/docker
ln -s /data/sys/var/docker /var/lib/docker
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo "vm.max_map_count=655360" >> /etc/sysctl.conf && sysctl -p
yum install -y net-tools
useradd -d /data/duser -m duser
echo "duser:5VSDHai4" |chpasswd
echo "duser ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
rpm -ivh container-selinux-2.9-4.el7.noarch.rpm
yum install -y ./docker-ce-17.09.0.ce-1.el7.centos.x86_64.rpm
usermod -aG docker duser
rm -fr ./*
cd ../
rm -fr docker_install docker_install.tar.gz
留神:
sh 脚本能够依据具体情况进行批改
当呈现无奈装置胜利,且提醒 rpm 装置问题时,在 rpm 装置命令之后,加 —nodeps —force,意思为不思考剖析包之间的依赖关系,即可装置胜利
五、开启 docker 服务
systemctl start docker
systemctl enable docker
systemctl status docker
docker version #查问是否开启 docker
六、装置 java(部署 es 的依赖)
java -version #查看是否有 java,如果有,疏忽当前步骤
本地装置 java
http://www.oracle.com/technet…
七、读取镜像(依据理论状况)
docker load -i image.tar #如果是 zip 的镜像,则先 unziip 成 tar 文件
docker images
# 启动容器,并且将本地的文件目录挂载至容器 data 目录下
docker run -itd -p 8888:8888 -v /data/origin_file:/data/duser/patent_similaruty/data/origin_file --name patent_preprocess patent_preprocess:1.1 bash
#进入容器
docker exec -it patent_preprocess bash
#进行容器
docker stop patent_preprocess
八、如果须要 docker-compose 启动
装置并应用 docker-compose
办法一:
应用 curl 命令下载
curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
办法二:
应用 pip 命令下载
yum -y install epel-release
yum -y install python-pip
pip install docker-compose
你学废了吗?