谷粒商城--整合Elasticsearch和商品的上架-1-少年郎网站优化团队

谷粒商城--整合Elasticsearch和商品的上架-1

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 谷粒商城--整合Elasticsearch和商品的上架

一、整合ES


ES常用概念

索引,类型,文档是什么?


  • 索引就像是Mysql中的库
  • 类型就像是Mysql中的表
  • 文档就像是数据
  • 属性就是列名
  • 所有的数据都是Json格式

1ac30885496a48a104f120cfb1505e60_2c68d3a8cfc0392d9deb5bd8d9b6cbe2.png


倒排索引

简约理解版本2.0


正向索引,数据库创建索引,增加搜索速度。

倒排索引是根据关键字去找文档,然后记录一下出现的位置和次数。


根据关键字去找文档,然后记录一下出现的位置和次数


38194b7c45d3d9dc962ee971cb28f22e_4f091f45260d266fefbc11107b8ba29a.png


4c00c7e19a0755d76e614b129c062cbc_a6795b4613ff765f7954a5e33def6438.png


什么是倒排索引?


ElasticSearch中一个重要的概念 : 倒排索引(Inverted Index)也叫反向索引,有反向索引必有正向索引。通俗地来讲,正向索引是通过key找value,反向索引则是通过value找key。


62a5073c48b495d113de60b49740246c_8edfe5cc80382339f76d70fe6383ad8f.png


首先弄懂几个概念,如果类比现代汉语词典的话,那么Term就相当于词语,Term Dictionary相当于汉语词典本身,Term Index相当于词典的目录索引,Posting List相当于词语在字典的页数集合:


  • Term(单词):一段文本经过分析器分析以后就会输出一串单词,这一个一个的就叫做Term(直译为:单词)
  • Term Dictionary(单词字典):顾名思义,它里面维护的是Term,可以理解为Term的集合
  • Term Index(单词索引):为了更快的找到某个单词,我们为单词建立索引。B-Tree通过减少磁盘寻道次数来提高查询性能,
  • Elasticsearch也是采用同样的思路,直接通过内存查找term,不读磁盘,但是如果term太多,term dictionary也会很大,放内存不现实,于是有了Term Index,就像字典里的索引页一样,A开头的有哪些term,分别在哪页,可以理解term index是一颗树:
  • Posting List(倒排列表):倒排列表记录了出现过某个单词的所有文档的文档列表及单词在该文档中出现的位置信息,每条记录称为一个倒排项(Posting)。根据倒排列表,即可获知哪些文档包含某个单词。(PS:实际的倒排列表中并不只是存了文档ID这么简单,还有一些其它的信息,比如:词频(Term出现的次数)、偏移量(offset)等,可以想象成是Python中的元组,或者Java中的对象)


相关度分数score的计算

df55bb391fa574d8affef69a3b1a2a27_6fc57c02c161e4e6f8848aa025212d54.png


ES工作原理还是很复杂的,现阶段我们学会使用即可,到后期准备面试了,在继续深入学习!


安装ES和Kibana

快速安装

(1)下载ealastic search(存储和检索)和kibana(可视化检索)
docker pull elasticsearch:7.4.2
docker pull kibana:7.4.2
(2)配置
# 将docker里的目录挂载到linux的/mydata目录中
# 修改/mydata就可以改掉docker里的
mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
# es可以被远程任何机器访问
echo "http.host: 0.0.0.0" >/mydata/elasticsearch/config/elasticsearch.yml
# 递归更改权限,es需要访问
chmod -R 777 /mydata/elasticsearch/
(3)启动Elastic search
# 9200是用户交互端口 9300是集群心跳端口
# -e指定是单阶段运行
# -e指定占用的内存大小,生产时可以设置32G
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e  "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v  /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2 
# 设置开机启动elasticsearch
docker update elasticsearch --restart=always
(4)启动kibana:
# kibana指定了了ES交互端口9200  # 5600位kibana主页端口
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.1.8:9200 -p 5601:5601 -d kibana:7.4.2
# 设置开机启动kibana
docker update kibana  --restart=always
http://192.168.1.8:9200


3952f183efd8be543afcf9310edbd11f_440ade8c6a8ecc3e1a042cbe174f7a31.png


kibana

访问Kibana: http://192.168.1.8:5601/app/kibana


44c51c8e5172ce93bc75e65125091b55_9fd82aeda766140c920881197a60e321.png


初步检索_cat

7f22d7a4ce434efe660e01cedfe899ab_2cdfa7dad23638a87b044b2e0203f6db.png

GET /_cat/nodes 
查看所有节点。集群中会用到
GET /_cat/health
查看es健康状况
GET /_cat/master
查看主节点
GET /_cat/indices
查看所有索引 ,等价于mysql数据库的show databases;
http://192.168.1.8:9200/customer/external/1


6e95f9fdd7a488846c5f207fce4eb438_6f11f3b0b6fa604bb6f58aa3146bd9e5.png


post新增

不带id


ff0b6b7863b8fca485cb1207a9e2ecd9_3fc08285834eb5b2c196b444fcd94471.png


带上id,也是新增修改二合一


53a3d6959b8526caec3d8b78177285cc_9a8399a39deb91c6b7d5bfe30d92ff55.png


区别

PUT必须指定id;由于PUT需要指定id,我们一般用来做修改操作


POST新增。如果不指定id,会自动生成id,指定存在的id为更新


查询文档

691ab4542e42adaa4906056980fb1c12_2ea0a1b5b8463c4400c02a209c1fb6bd.png


GET /customer/external/1


乐观锁的使用

通过“if_seq_no=1&if_primary_term=1”,当序列号匹配的时候,才进行修改,否则不修改。


开启事务锁后,两个事务并行修改数据的时候,只要有一个事务修改完数据,记录中记录的版本号就会加1,另一个事务修改的时候会带上版本号判断,如果版本号发生了变化了那就不会进行修改


更新文档_update

POST customer/externel/1/_update
{
    "doc":{
        "name":"111"
    }
}
或者
POST customer/externel/1
{
    "doc":{
        "name":"222"
    }
}
https://gitee.com/xlh_blog/common_content/blob/master/es%E6%B5%8B%E8%AF%95%E6%95%B0%E6%8D%AE.json#


d8b0549ecf4088575c9ad1ba8548f08f_c839b57d4699022ac638695c5426474a.png


0e9955567e6fd2bf012c14086e80c8a4_e2e508dd2b60ed8eee6e03661a3638f5.png


ES进阶

https://www.elastic.co/guide/en/elasticsearch/reference/7.6/docs-reindex.html


官方文档如下:


如下示例看着文档就可以写出来。


两种查询方式

ES支持两种基本方式检索;


  • 通过REST request uri 发送搜索参数 (uri +检索参数);
  • 通过REST request body 来发送它们(uri+请求体);

测试如下:


GET bank/_search/?q=*&sort=account_number:asc
说明: q=* # 查询所有 sort # 排序字段 asc #升序
GET bank/_search
{
  "query": {
    "match_all": {}
  },
  "sort": [
    {
      "account_number": "asc"
    }
  ]
}
添加新的查询条件
GET bank/_search
{
  "query": {
    "match_all": {}
  },
  "sort": [
    {
      "account_number": "asc"
    },
    {
      "balance": "desc"
    }
  ]
}
相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
存储 SQL 自然语言处理
谷粒商城--整合Elasticsearch和商品的上架-3
谷粒商城--整合Elasticsearch和商品的上架
97 0
|
存储 自然语言处理 应用服务中间件
谷粒商城--整合Elasticsearch和商品的上架-2
谷粒商城--整合Elasticsearch和商品的上架
57 0
|
13天前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
29 5
|
1月前
|
存储 JSON Java
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
这篇文章是关于Elasticsearch的学习指南,包括了解Elasticsearch、版本对应、安装运行Elasticsearch和Kibana、安装head插件和elasticsearch-ik分词器的步骤。
128 0
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
|
2月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
3月前
|
数据可视化 Docker 容器
一文教会你如何通过Docker安装elasticsearch和kibana 【详细过程+图解】
这篇文章提供了通过Docker安装Elasticsearch和Kibana的详细过程和图解,包括下载镜像、创建和启动容器、处理可能遇到的启动失败情况(如权限不足和配置文件错误)、测试Elasticsearch和Kibana的连接,以及解决空间不足的问题。文章还特别指出了配置文件中空格的重要性以及环境变量中字母大小写的问题。
一文教会你如何通过Docker安装elasticsearch和kibana 【详细过程+图解】
|
3月前
|
JSON 自然语言处理 数据库
Elasticsearch从入门到项目部署 安装 分词器 索引库操作
这篇文章详细介绍了Elasticsearch的基本概念、倒排索引原理、安装部署、IK分词器的使用,以及如何在Elasticsearch中进行索引库的CRUD操作,旨在帮助读者从入门到项目部署全面掌握Elasticsearch的使用。
|
3月前
|
Ubuntu Oracle Java
如何在 Ubuntu VPS 上安装 Elasticsearch
如何在 Ubuntu VPS 上安装 Elasticsearch
42 0
|
3月前
|
存储 Ubuntu Oracle
在Ubuntu 14.04上安装和配置Elasticsearch的方法
在Ubuntu 14.04上安装和配置Elasticsearch的方法
44 0
|
3月前
|
存储 安全 Java
在CentOS 7上安装和配置Elasticsearch的方法
在CentOS 7上安装和配置Elasticsearch的方法
266 0

相关内容推荐

人生的八个关键词解说文案用关键词描述价值观的成语印象最深刻的两个关键词是画关键词的好处是什么意思一年级语文教学中的关键词简斯维尔关键词是什么意思重庆市百度关键词哪家好明日方舟桃金娘的关键词8大企业家年度关键词排名搜索引擎怎么选关键词排名关键词看十年变化的句子党委扩大会关键词有哪些第三个历史决议的关键词恰当的关键词应该是什么任正非的四大关键词是哪个关键词关键词我的七年级关键词烦恼作文三明治包装袋关键词有哪些四年级环境关键词的使用亚马逊关键词广告关键词百度关键词排名霸屏推广与欧洲中世纪有关的关键词网购大码女马甲关键词是啥公司科技创新的四个关键词新年关键词一直爱你的英文互联网四大关键词是指什么添加高质量关键词的方式优点和缺点的三个关键词聊城关键词百度推广公司百家号关键词优化排名推广整合营销关键词总结怎么写六大关键词读懂冬奥防疫河北医科大学关键词英语中国消费十大关键词是什么买手机型号避开关键词看冬奥会观后感的关键词如何通过百度查询关键词世界文明史的关键词是什么面对时光流逝的三个关键词球球大作战花痴关键词图片诺贝尔奖的五个关键词改变思维的八大关键词是抖音里的关键词从哪输入的金融业三大关键词有哪些为牛仔裤写50个关键词小学一年级找关键词四个关键词介绍浙江大学在百度做关键词推广费用两个关键词和成人教育相关源代码中加入关键词的作用信息管理工作关键词有哪些婚礼上写什么关键词好一点浦东十大关键词排名优化设置关键词 长尾关键词电商搜索引擎热门关键词阅读人生四个关键词是什么关键词关键词歌词百度如何做关键词排名管理沟通的三大关键词是交行五个高质量发展关键词电脑关键词检索结果不一样三个关键词的英语自我介绍用三个关键词描述一下潍坊铜山县百度关键词优化策划关键词张家旺百度云下载农业产业十大关键词排名关键词掉一大堆怎么办小学生是学会了什么关键词三个关键词展望工作岗位北京丰台百度关键词seo安全生产的十大关键词是一站式关键词优化工具晶体三极管符号及关键词阿里巴巴云客服四个关键词中国企业十大关键词以告别为关键词写作文题目孝感市关键词优化多少钱公务员十四个关键词是什么在淘宝买推拉门关键词是啥关键词物理化学变化的判断关键词为什么关键词不稳定性高我的寒假关键词漫画图片狮子座的恋爱关键词有哪些什么叫互联网关键词推广一句话的核心关键词天猫怎么看关键词流量多少一句话概括关键词的意义抖音关键词查询器在哪里手机千牛怎么查成交关键词平顶山关键词优化哪家专业陈正之读书的关键词有哪些摘要跟关键词要不要空一行二级建造师的关键词有哪些银川市关键词推广联系方式西游记第二回出现的关键词百度关键词排名优化服务商关键词在电脑上怎么找出来三个关键词介绍王俊凯英文东北旅游资源的特色关键词醉驾登记表关键词填写错误三个关键词解读餐饮新零售论文关键词一定在摘要里吗仓管的职位关键词什么意思承德百度关键词排名哪家好爱国主义有哪些关键词呢95年后的新生代关键词中国经济的五大关键词影响学生一生的关键词有百度推广关键词链接怎么弄晒出我的青春关键词是什么幼儿园的五个关键词是什么高三成功的三个关键词一站式关键词优化排名五大重量级关键词是什么搜索关键词进直播间怎么弄天猫和京东的10个关键词关键词和seo关键词关键词不属于异常处理的关键词是6G到7G关键词决定职业成败的四个关键词平底鞋的关键词一般怎么说活下来的两个关键词是什么关键词监控商品关键词零食搜索关键词辣条排名亚马逊竞品关键词查不出来时间管理四个关键词是什么关于冬奥会关键词作文题目以木凳暖阳为关键词写作文武汉关键词是什么意思啊宝山区百度推广长尾关键词关键词是大梦想家的动漫去养老院的感受关键词是抖音视频剪辑的关键词元氏第三方网站关键词分类摘要关键词用空两格吗sd卡的关键词是什么意思韩媒三大关键词是什么冬奥会十大关键词是什么化学工业的关键词有哪些一年级关键词写一段话我的二零二一年度关键词全国两会八大关键词有哪些内蒙古关键词优化代理商天猫关键词占比怎么看拼多多怎么没办法选关键词关于人生的八个关键词英语秒排上千个关键词套路顺昌县关键词优化外包公司百家号关键词自动回复内容婴幼儿食品行业关键词优化万柏林区无障碍关键词排名基础教育十大关键词是什么百年孤独节选课文关键词百度人工智能小程序关键词浦东十大关键词排名优化兰州新区五大关键词有哪些拼多多关键词可以降价吗怎么查关键词的相关性排名定制家具的五大关键词疫情中的四个关键词有哪些二十四个关键词小说百度云当代中国年轻人的关键词球球大作战关键词鸭武士球球大作战的多分身关键词直通车关键词突然不成交了小蓝鸟关键词二次元星之卡比礼物关键词不联网如何看竞争对手进店关键词陕西关键词排名优化学习新浪的搜索引擎关键词广告优秀教师的四字关键词以背影为关键词写6个句子常德关键词排名哪家强一点草船借箭第一段关键词高质量发展的六大关键词关键词病院第二季樱花动漫我将围绕两个关键词写作文淘宝进店关键词看不到了买大号毛绒玩具关键词是啥红楼梦第一回的关键词是搜索引擎关键词广告的意思怎么看闲鱼进店的关键词运维工程师职位关键词优化白色蝴蝶关键词关键词一对一关键词排名靠谱吗小学四年级关键词题型关键词关键词设置我的初三关键词满分作文百度推广冷藏车关键词优化拼多多刷关键词有没有权重怀柔区银联关键词排名要求男生成熟穿搭关键词有哪些普通话第四题关键词是什么安氏错颌的两个关键词买二手平板如何输入关键词关键词标题关键词四年级写作文的关键词毕业论文关键词两个可以吗

合作伙伴

少年郎网站优化团队

jl.urkeji.com
www.innatjerome.com
www.lyhbj.cn
www.maijichuang.cn
www.zhdaili.cn
www.7272w.cn
www.xtcwl.com
www.xtcwl.com
www.desai360.com
www.lyhbj.cn
dw.urkeji.com
www.28j.com.cn
www.xm5656.cn
www.tjwyj.com
www.pifajia.net.cn
www.tjwyj.com
seo.jsfengchao.com
www.clhczx.cn
www.bjdongwei.cn
www.lpjfm.cn