Elasticsearch搜索引擎简介及单机部署

​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

你学废了吗?

你可能感兴趣的:(python,linux,docker,服务器)