Elasticseach学习笔记(一)

2020-07-11  本文已影响0人  谁没有做过白日梦呢

最近因为项目中需要用到elasticsearch,所以对elasticsearch相关的课程进行了学习,这里对学习中的知识点进行总结以加深印象,暂时不会对每个知识点进行深入的说明。

首先是elasticsearch中的基本概念

索引(index),类型(type)和文档(document)

在elasticsearch中,数据都是以索引和文档的形式进行存储,为了更好理解可以用关系型数据库中的概念进行类比:table->index,row->document。在旧版本中一个索引下还可以有多种类型,而类型已经在es7.x的版本中废除了,统一使用_doc作为类型的值

节点,集群,分片和副本

ealsticsearch是支持集群模式的,一个集群中可以有多个elasticsearch的节点,而es的索引物理上是按分片进行存储的,分片一般分布在不同的节点上,而且可以给每个分片设置副本,副本数根据用户配置的数量来定,比如设置一个分片数为3,副本数为1的索引,其存储结构如图(分片和其对应的副本一般会存储在不同的节点上)

基本的CRUD

es支持restfulAPI的形式进行操作,所以这里对基本的crud操作api进行总结

1.creat

两种方式,一种是“POST /索引名/类型名(_doc)”,这种方式系统会自动生成document id,另一种是“PUT 索引名/_create/{id}”,即指定id进行创建,如果id存在则创建失败。

2.get

通过id查找文档,即“GET 索引名/类型名/{id}”,如果文档不存在则返回404

3.index(此处是动词)文档

“PUT /索引名/类型名/{id}”,也是新建一个文档,但与create不同的是如果文档已经存在,则会将原有文档删除,索引新的文档,版本信息加一

4.update

“POST /索引名/_update/{id}”,update不会删除原来的文档,如果字段在原文档中存在则更新,不存在则新增,其方法的payload需要包含在“doc”里。

倒排索引(之后在详细写)

/to do

ES的分词

ES在对传入的文档进行存储时,需要将文档进行分词处理,一般分为三步,第一步是用Character Filters,这一步对原始文档进行预处理,主要是进行去除html等操作,第二步是用Tokenizer,这一步就是按照指定的规则进行分词,第三步是用Token Filter,主要是对最后切分出的单词进行转小写,去除停顿词,增加同义词等操作。

使用“_analyze” api可以对分词器的效果进行测试

上一篇 下一篇

猜你喜欢

热点阅读