学习计划安排如下:
Elasticsearch作为一门全文检索技术,那它是如何使用的呢?先学习Elasticsearch的一些语法,后续再在项目中实战应用。
I. IK断字符
这个IK分词器有什么用?为什么要用?
要知道电脑是老美创造的,它的很多东西其实对中国人很不友好。
关于分词,就是把一段中文或者别的什么东西分成关键词。
比如”我来自中国”,可以分成多少字?
按照中国的汉语来分,可以分为我、师、华、中、汉五类。
也就是说,用户只要输入以上五个字,就可以搜索到“我来自中国”的数据。
默认的中文分词是把每个词当作一个词,可以分为“我”、“是”、“是”””,””,”人民”。
这显然是达不到要求的,所以我们用中文分词ik来解决这个问题。
①分析:意思是翻译时进行分析,这样就能理解这里的构成词。
②分析器:这里也指分词器。我们用ik_***x_word。
ik_***x_word为最细粒度划分。ik_***art为最少切分。
这是ik分词机提供的两种分词算法。至于如何实现,要研究它们的算法。
你可以通过修改上面的代码做一个对比,你会发现使用ik_***art只能分为三个字:“我”、“是”、“中国人”
显然,这里用ik_***x_word更合适。
二。基本概念
Elasticsearch本质上是存储数据,有很多类似MySQL的概念。
和MySQL结合起来,方便学习。
当然,严格来说,把这些概念对应起来并不准确,但目前这样理解是没有问题的。
①索引
MySQL中通过数据库存储数据。Elasticsearch中通过索引库存储索引。
指数本身是指数的复数。
②类型类型
一个数据库中可以创建多张表,比如说商品表,订单表。一个索引集也可以有不同类型的索引,比如说商品索引,订单索引。
但是,这样做的缺点是会导致索引库中的混乱,这个概念将在未来的版本中被删除。emm…不知道现在有没有去掉这个概念,还没来得及查。
③文档文档
数据库中一条数据就是一行。索引集中一条信息就是一个文档
④字段
数据库中列就是每一行中的数据。索引集中字段就是文档中的属性。
了解了这些概念,下一步就是创建一个索引库。
三。操作索引库
我们昨天也解释了Elasticsearch是一个基于RESTful风格的搜索引擎。
Elasticsearch采用REST风格的API,其API本质上是一个http请求:
1创建索引库
既然是请求,那么自然就会有:
请求方式:PUT,其对应的就是创建。请求路径:/索引库名请求参数:这里是settings
设置是指索引库的设置:
number_of_shards:分片数量。number_of_rplicas:副本数量。
这涉及到一些集群相关的概念,后面会解释。
2查询和删除索引数据库
REST风格的便利在于不同的操作可以通过不同的请求方式来实现:
①查询索引数据库
请求方法GET对应于查询操作。
请求路径还是上面创建的索引库,可以查到liuxiaoai01索引库的信息。
②删除索引数据库
请求模式删除对应于删除操作。
请求路径还是上面创建的索引库,liuxiaoai01索引库可以删除。
删除后用GET再次查询对应的索引数据库,会发现会报错,证明删除成功。
四。操作字段映射
创建一个索引库相当于有了一个数据库数据库,后面是数据表,添加数据。
创建类型1
向索引库添加数据称为映射,这也是上面格式中_***pping的由来。
商品是索引类型,相当于数据库中的商品数据表。
Properties是属性,在其下添加相应的字段。上面有三个字段:标题、图片和价格,并且可以设置许多属性:
type:int、long、short、date、integer、text、string……等多个。index:根据语义理解就是是否被作为索引?***yzer:也就是分词器。
这种类型是字段数据类型:int,long这些是数值类型,text,string是字符串类型。
若是text类型,默认会分词。若是String类型,默认不会分词,上述中写的keyword和String一回事,翻译过来是关键字的意思,关键字肯定不能再分了,更好理解。
2类型查询
PUT对应一个新操作,GET对应一个查询操作。对类型没有删除和修改操作。
相当于不能删除和修改数据表的名称,和MySQL数据库不同。
被查询的索引之间的映射关系也很清楚:
索引库名为liuxiaoai01,索引类型goods通过映射进行映射。该类型下的属性中有三个字段。
基本上你知道它的字的意思,就知道它的作用了。
请注意,不要混淆这种类型:
goods对应的是索引类型,相当于数据表。上述多个类型对应的是字段的数据类型。
本文来自曼文投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/636192.html