【商城】Elasticsearch搜索引擎

11 篇文章 0 订阅
5 篇文章 0 订阅

Elasticsearch是一种分布式、高扩展性和实时性的搜索与数据分析引擎,可轻松实现大规模数据的搜索、分析和探索能力。通过充分利用Elasticsearch的水平扩展性,数据在生产环境中变得更具价值。Elasticsearch的实现原理主要包括以下几个步骤:首先,用户将数据提交到Elasticsearch数据库中;然后,通过分词控制器对语句进行分词,并将权重和分词结果存入数据中;当用户搜索数据时,根据权重对结果进行排名和打分,并将结果返回给用户。
Elasticsearch作为商城核心框架,主要应用在商城搜索、商品搜索、订单搜索、店铺搜索等搜索场景,起到支撑核心业务的重要作用。下面以为Elasticsearch 6.x为例搭建一套完整的搜索引擎。

1、系统参数配置

1.1 配置资源限制

打开/etc/security/limits.conf 在文件最后添加如下配置:

`如Elasticsearch使用appuser用户部署`
 appuser -memlock unlimited
 appuser -nofile 100000
 appuser -nproc 32768
 appuser -as unlimited
1.2 配置网络缓冲区和虚拟内存

打开/etc/sysctl.conf 在文件最后添加如下配置:

 net.ipv4.tcp_syncookies=1
 net.ipv4.tcp_tw_reuse=1
 net.ipv4.tcp_tw_recycle=1
 net.ipv4.tcp_synack_retries=2
 net.ipv4.tcp_syn_retries=2
 net.ipv4.tcp_max_orphans=3276800
 net.ipv4.tcp_fin_timeout=30
 vm.max_map_count=1048575
 vm.swappiness=5

让配置生效: sysctl -p

2、ES中间件部署

将Elasticsearch 6.x解压到指定的目录,并进入config目录,修改elasticsearch.yml文件配置

  • cluster.name: es-cluster #集群名称,同一集群保持名称一致

  • node.name: node-1 #建议按照IP地址尾号命名,如node-123

  • node.master: true #指定该节点是否有资格被选举成为node(注意这里只是设置成有资格, 不代表该node一定就是master),默认是true,es是默认集群中的第一台机器为master,如果这台机挂了就会重新选举master

  • node.data: true #指定该节点是否存储索引数据,默认为true

  • path.data:/appuser/elasticsearch/data #文件路径

  • path.logs:/nas/elasticsearch/logs #日志路径

  • bootstrap.memory_lock: true #内存交换的选项,官网建议为true

  • network.host:0.0.0.0

  • network.publish_host:192.168.0.1 #当前主机实际IP地址

  • http.port:9200 #设置对外服务的http端口,默认为9200

  • transport.tcp.port: 9300 #es节点之间通信的端口,默认为 9300

  • http.cors.enabled: true #解决跨域问题

  • http.cors.allow-origin: “*”

  • descovery.zen.unicast.hosts:[“192.168.0.1:9300”,“192.168.0.2:9300”,“192.168.0.3:9300”] #集群的ip集合,启动新节点时,通过这个ip列表进行节点发现,组建集群

  • discovery.zen.minimum_master_nodes:2 #通过配置此参数来防止集群“脑裂现象”(集群节点总数/2+1),可根据集群规模适当调整到3

2.1 jvm.options调优

可根据宿主机内存大小进行调整,可参考官网说明,以下是以16G内存大小的主机为例配置:

-Xms8g
-Xmx8g
-XX:NewRatio=1
-XX:+AlwaysPreTouch
#GC垃圾回收期,默认是MARK清除垃圾回收期,此处使用G1
-XX:+UseG1GC
-XX:G1RSetUpdatingPauseTimePercent=5
-XX:MaxGCPauseMillis=500
-XX:InitiatingHeapOccupancyPercent=70
-XX:ParallelGCThreads=16
-XX:ConcGCThreads=16       #默认是并行ParallelGCThreads的1/4,设置相同减少STW
#其他Print参数使用默认即可;
#Heap Dumps配置
`-XX:HeapDumpPath`=/heapdump   #具体地址
`-XX:ErrorFile`=/applog/logs/hs_err_pid%p.log

建议多关心这条限制:ElasticSearch推荐的最大JVM堆空间为30~32G, 所以把你的分片最大容量限制为30GB, 然后再对分片数量做合理估算. 例如, 你认为你的数据能达到200GB, 我们推荐你最多分配7到8个分片。
在这里插入图片描述

2.2 更多调优,请查看另一篇文章
3、启动ES

进入bin目录,执行命令./elasticsearch -d 即可启动

3.1 查看集群状态

(1)进入path.logs查看日志文件
(2)浏览器输入http://ip:9200,其中ip为任意主机的ip地址,可以查看对应的节点信息

 {
   "nome":"node-1",
   "cluster_name":"es-cluster",
   "cluster_uuid":"wSNcWcAVT1ik8pffGMRgKg",
   "version":{
       "number":"6.x",
       "build_flavor":"default",
       "build_type":"tar"
       ....等等
   },
   "tagline":"You Know,for Search"
 }

(3)浏览器输入http://ip:9200/_cat/nodes 可查看集群状态,有*的为集群的主节点

192.168.0.1 52 89 1 0.00 0.02 0.05 dilm - node-1
192.168.0.2 52 78 2 0.00 0.15 0.12 dilm * node-2
192.168.0.3 52 92 3 0.00 0.20 0.16 dilm - node-3

4、IK分词器安装

4.1 中文分词器

下载elasticsearch-analysis-ik-6.x.zip,注意ik分词器安装包的版本与ES的版本要一致,安装的时候,每台ES宿主机都需要安装
(1)安装ik分词器前,停止所有的es服务,可以kill掉所有ES进程;
(2)进入es目录

  • cd elasticsearch-6.x

在该目录下执行如下命令:

  • ./bin/elasticsearch-plugin install file:/appuser/…/elasticsearch-analysis-ik-6.x.zip

其中,file:后面的是ik分词器安装包安装的绝对路径,对每一个节点执行以上操作,即可完成整个集群ik分词器的安装部署。

4.2 中文拼音分词器

下载elasticsearch-analysis-pinyin-6.x.zip,安装时候,每台ES宿主机执行相同操作。
(1)安装ik分词器前,停止所有的es服务,可以kill掉所有ES进程;
(2)进入es目录

  • cd elasticsearch-6.x
    在该目录下执行如下命令:
  • ./bin/elasticsearch-plugin install file:/appuser/…/elasticsearch-analysis-pinyin-6.x.zip
    其中,file:后面的是pingyin分词器安装包安装的绝对路径,对每一个节点执行以上操作,即可完成整个集群pingyin分词器的安装部署。
4.3 ik分词器验证

完成所有节点ik安装后,启动ES集群,查看ES每个节点的日志(路径path.logs:配置),可以看到类似下面的内容,说明ik分词器安装成功。

[2021-01-20T14:01:53,584][INFO][o.e.p.PluginsService][node-1]loaded plugin [analysis-ik]

注:为了确保插件成功安装,请一一排除ES集群每个节点。

5、Kibana 6.x安装

可选择性安装,只需要为ES集群中的某一个节点安装Kibana即可。解压后配置kibana.yml文件

#访问kibana的端口
server.port=5601
#安装kibana的机器IP
server.host:"192.168.0.1"
#kibana访问的ES地址
elasticsearch.url:192.168.0.1:9200
xpack.security.enabled:false

(1)启动Kibana

  • ./bin/kibana

(2)访问kibana

  • http://ip:5601
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Moutai码哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值