SpringCloudAlibaba云商场-海量数据搜索实现(一)

95 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第25天,点击查看活动详情

每日英语:

Shall I compare thee to a summer's day?

翻译:我是否该将你比作夏日?

1.商品搜索环境搭建

商品搜索,包含了数据实时同步和搜索两个过程,我们要请求这两个过程之间的关系,这样才能做出符合工作需要的搜索来。

1.1 搜索分析

搜索分析.jpg 数据同步流程如下:

1、数据通过程序将Sku添加到数据库
2、通过Canal实现实时将数据同步到ES搜索引擎
3、用户可以在前台使用不同条件进行搜索,关键词、分类、价格区间、动态属性

1.2 ES搭建流程

本次是在centos7上,基于docker,进行搭建ES

1.2.1 安装es

1)创建网络

docker network create es-net

为了让es和kibana容器互联,这里我们需要先创建一个网络。

2)下载es和kibana镜像

docker pull elasticsearch:6.8.12
docker pull kibana:6.8.12

这个我们用的版本是6.8.12,这个算是比较新的了。这块儿安装时间稍微有点儿长,大家耐心等待一会儿。

3)启动es容器

docker run -d  \
    --name es \
    -e "ES_JAVA_OPTS=-Xms256m -Xmx256m" \
    -e "discovery.type=single-node" \
    -v es-data:/usr/share/elasticsearch/data \
    -v es-plugins:/usr/share/elasticsearch/plugins \
    --privileged \
    --network es-net \
    -p 9200:9200 \
    -p 9300:9300 \
elasticsearch:6.8.12

命令解释:

docker run -d \      -d  后台运行\
--name es \         -name  容器名字\
-e "ES_JAVA_OPTS变小点。如果不设置这个参数的话,es默认的栈内存大小是1G。

=-Xms256m -Xmx256m" \   配置栈内存\
-e "discovery.type=single-node" \    单点模式\
-v es-date:/usr/share/elasticsearch/data \     数据保存的目录\
-v es-plugins:/usr/share/elasticsearch/plugins \    插件目录\
--privileged \
--network es-net \
-p 9200:9200 \   暴露http端口
-p 9300:9300 \    es容器互联端口\
elasticsearch:6.8.12

后期启动后,如果出现启动了,然后又自动关闭了的现象,这个现象是因为你配置的栈内存大于了你现在服务器剩余的栈内存,可以通过设置ES_JAVA_OPTS变小点。如果不设置这个参数的话,es默认的栈内存大小是1G。

4)查看启动后的es

docker ps

dockerps后的es.jpg 5)浏览器访问hppt://IP:9200

查询es启动的浏览器.jpg 安装成功

1.2.2 安装kibana

1)启动kibana

docker run -d \

--name kibana \ -e ELASTICSEARCH_HOSTS=http://es:9200 \      es是安装elasticsearch时的name  es对应
--network=es-net \     安装elasticsearch时对应的网络
-p 5601:5601 \ kibana:6.8.12

2)查看已启动的kibana

docker ps

3)查看启动后的日志

docker logs -f kibana

启动后的kibana日志.jpg 4)浏览器访问http://IP:5601

kibana浏览器.jpg

1.2.3 安装ik分词器

分词器下载地址:github.com/medcl/elast…

下载后,将压缩包解压,将解压后的文件包命名为ik,上传到linux服务器上,并拷贝到elasticsearch的plugins目录下即可,用如下命令拷贝:

docker cp ik es:/usr/share/elasticsearch/plugins/

重启es:

docker restart es

ik分词器测试: 访问:http://IP:9200/_analyze?analyzer=ik_smart&pretty=true&text=我是谁

总结:本篇主要介绍了一下如何做搜索分析,还有ES的具体搭建流程。