返回顶部

[Python 开发] Elasticsearch搜索引擎简介及单机部署

[复制链接]
天才儿童Caya 显示全部楼层 发表于 2020-11-30 21:39:28 |阅读模式 打印 上一主题 下一主题
​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=yessystemctl 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=1yum clean all  #刷新缓存rm -rf /var/cache/yumyum list  #显示数据则表示本地yum配置成功yum install net-tools #安装net-tools,查看ifconfig注意:
本地挂载完镜像之后,如果还要使用该文件的话,必须先umount该文件,否则会报错,提示权限不够
三、关闭防火墙及selinuxsystemctl disable firewalldsystemctl stop firewalldvi /etc/sysconfig/selinux SELINUX=disabledsetenforce 0getenforce注意:
安装docker时可以不用关闭,当es进行集群部署时,必须关闭,否则集群无法生效
四、安装dockerscp docker.zip root@ip:~ #没网手动copyunzip docker.zipcd dockersh setup_without_container-selinux-2.9 #虚拟机/实体机# 服务器,直接联网安装,不赘述
setup_without_container-selinux-2.9.sh 脚本内容如下:
#auto-mountyum clean allyum makecacheyum remove -y docker-enginemkdir -p /data/tmpchmod -R 777 /data/tmpmkdir -p /data/sys/var/dockerchmod -R 777 /data/sys/var/dockerln -s /data/sys/var/docker /var/lib/dockerln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtimeecho "vm.max_map_count=655360" >> /etc/sysctl.conf && sysctl -pyum install -y net-toolsuseradd -d /data/duser -m duserecho "duser:5VSDHai4" |chpasswdecho "duser    ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoersrpm -ivh container-selinux-2.9-4.el7.noarch.rpmyum install -y ./docker-ce-17.09.0.ce-1.el7.centos.x86_64.rpmusermod -aG docker duserrm -fr ./*cd ../rm -fr docker_install docker_install.tar.gz
注意:
sh脚本可以根据具体情况进行修改
当出现无法安装成功,且提示rpm安装问题时,在rpm安装命令之后,加 —nodeps —force ,意思为不考虑分析包之间的依赖关系,即可安装成功
五、开启docker服务systemctl start dockersystemctl enable dockersystemctl status dockerdocker version #查询是否开启docker六、安装java(部署es 的依赖)java -version #查看是否有java,如果有,忽略以后步骤本地安装java七、读取镜像(根据实际情况)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-composechmod +x /usr/local/bin/docker-compose
方法二:
使用pip命令下载
yum -y install epel-releaseyum -y install python-pippip install docker-compose
你学废了吗?

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

星点互联 成立于2014年8月,是目前国内优秀的开源技术社区,拥有超过300万会员,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作