elasticsearch创建索引命令_elasticsearch重建索引

elasticsearch创建索引命令_elasticsearch重建索引,第1张

elasticsearch创建索引命令_elasticsearch重建索引 学习计划安排如下:Elasticsearch作为一门全文检索技术,那它是如何使用的呢?先学习Elasticsearch的一些语法,后续再在项目中实战应用。



一、IK分词器这个IK分词器有什么用?为什么要用它?要知道计算机是老美搞出来的,它的很多东西对于中文来说其实是很不友好的。


关于分词,即把一段中文或者别的划分成一个个的关键字。


比如”我是中国人”,可以分为多少个词?按照中国汉字语言,其分为“我”,“是”,“中国人”,“中国”,“国人”这5个。


也就是说用户输入上述5个词语,都可以搜索到“我是中国人”这条数据。


而默认的中文分词是将每个字看成一个词,会被分为“我”,“是”,”中”,”国”,”人”。


这显然是不符合要求的,所以用中文分词器ik来解决这个问题。


①analyze:翻译过来就是分析的意思,这里就可以理解成分词。


②analyzer:这里也就是指分词器,我们使用ik_max_word。


ik_max_word为最细粒度划分。


ik_smart为最少切分。


这是ik分词器提供的两个分词算法,至于具体是如何实现的,就要去研究它的算法了。


可以把上述代码修改做一个对比,会发现使用ik_smart只能分三个词:“我”,“是”,“中国人”这里显然使用ik_max_word更加的合适。



二、基本概念Elasticsearch本质上也就是在存储数据,其有很多概念可以和MySQL类似的。


为了方便学习将其和MySQL结合起来。


当然严格来说将这些概念对应起来不太准确,但目前就这样理解也没问题。


①索引库indicesMySQL中通过数据库存储数据。


Elasticsearch中通过索引库存储索引。


indices本身也就是索引indexs的复数写法。


②类型type一个数据库中可以创建多张表,比如说商品表,订单表。


一个索引集也可以有不同类型的索引,比如说商品索引,订单索引。


不过这有一个缺陷是会导致索引库混乱,未来版本中会移除这个概念,emm…也不知道现在移除这个概念没有,目前还没来得及查。


③文档document数据库中一条数据就是一行。


索引集中一条信息就是一个文档④字段field数据库中列就是每一行中的数据。


索引集中字段就是文档中的属性。


弄清楚了这些概念,接下来创建索引库。



三、 *** 作索引库昨天我们也说明过了,Elasticsearch是一个基于RESTful风格的搜索引擎。


Elasticsearch采用的是REST风格API,其API本质上也就是一次http请求:1索引库的创建既然是请求,那自然就会有:请求方式:PUT,其对应的就是创建。


请求路径:/索引库名请求参数:这里是settings这里settings是指索引库的设置:number_of_shards:分片数量。


number_of_rplicas:副本数量。


这个呢就涉及到了一些集群相关的概念,后续具体使用到的时候再做说明。


2索引库的查询与删除REST风格的方便之处就在于通过请求方式的不同就能实现不同的 *** 作:①查询索引库请求方式GET对应的就是查询 *** 作。


请求路径依旧是上述创建的索引库,可以查询出liuxiaoai01索引库的信息。


②删除索引库请求方式DELETE对应的就是删除 *** 作。


请求路径依旧是上述创建的索引库,可以删除liuxiaoai01索引库。


删除后再次使用GET查询对应的索引库,会发现其会报错了,证明删除成功。



四、 *** 作字段映射创建了索引库也就相当于有了database数据库,接下来就是数据表并添加数据了。


1类型的创建在索引库中添加数据叫映射,这也是上述格式中_mapping的由来。


goods就是索引类型,也就是相当于数据库中的goods数据表。


properties也就是属性,其下添加对应的字段,上述中就有title,images,price三个字段,可以设置许多属性:type:int、long、short、date、integer、text、string……等多个。


index:根据语义理解就是是否被作为索引?analyzer:也就是分词器。


这个type是字段数据类型:int、long这些是数字类型,text、string是字符串类型。


若是text类型,默认会分词。


若是String类型,默认不会分词,上述中写的keyword和String一回事,翻译过来是关键字的意思,关键字肯定不能再分了,更好理解。


2类型的查询PUT对应着新增 *** 作,GET也就对应着查询 *** 作了,关于类型没有删除和修改 *** 作。


就相当于不能删除和修改数据表的名称,这点倒是和MySQL数据库不一样。


其查询到的索引之间的映射关系也很清楚:索引库叫liuxiaoai01,通过mappings映射有goods这个索引类型,该类型下properties中有3个字段。


基本上知道了其单词意思也就知道其作用了。


注意关于这个type不要弄混了:goods对应的是索引类型,相当于数据表。


上述多个类型对应的是字段的数据类型。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/645212.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-17
下一篇 2022-04-17

发表评论

登录后才能评论

评论列表(0条)

保存