elasticsearch入门学习之二:知识点总结

elasticsearc内容中为什么要有version,为什么要进行版本控制

为了保证在多线程操作下的准确性

2.什么是乐观锁和悲观锁

悲观锁:假设会有冲突发生,屏蔽一切可能违反数据准确性的操作

什么是乐观锁:假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性

3内部版本控制和外部版本控制

内部版本控制:_version自增长,修改数据后,_version会自动的加1

外部版本控制:为了保证_version与外部版本控制的数值一致

使用version_type=external检查数据当前的version值是否小于请求的version值

oracle如何控制版本的:是根据时间戳

4.erlasticsearch 底层采用的是倒排索引进行分词,这样查询的比较快。

5.除了用kibana进行查询外,我们可以用elasticsearch提供的restful接口进行查询,我们在浏览其中输入相应的url就可以查看到对应的文档

ip+端口+索引+类型+id

6.倒排索引

倒排索引,首先对文档进行分词,然后使用分词,来对文档进行定位

常用的分词器插件有ik,我们中文用ik_smart效果更加,因为ik将每一个中文都进行了分词

 

 

7. es的一些常用命令

 

PUT 和POST 的区别,用PUT    /索引/类型    会报错,因为没有id,用POST/索引/类型   正常,es 会帮我们自动生成id

GET /索引/类型/_search  会查询该类型 下的所有文档

我们的文档有 这几个字段name,age,sex ,car

查询指定几个id的文档

查询某个字段满足一定条件的文档

查询30岁到60之间的

查询30岁到60岁之间并排序,TO要大写

es中查询有两种方式:一种是简易的查询,一种使用json完整的请求体叫做结构化查询(dsl),dsl更直观,大家都使用这种方式,dsl查询时post过去一个json,由于post请求时json格式的,所以存在很多灵活性

term是精确查询

term和match的区别,term是精确查询,match会进行分词查询,例如奥迪a6l,会将奥迪和a61进行分词

查询数据,from 和size,类似于limit

使用过滤器filter对数据进行过滤

GET /mymayikt/user/_search
{
	"query": {
		"bool": {
			"must": [{
				"match_all": {}  #match_all表示查询所有的
			}],
			"filter": {       #查询21 至51的
				"range": {
					"age": {
						"gt": 21,
						"lte": 51
					}
				}

			}

		}

	},
	"from": 0,
	"size": 10,
	"_source": ["name", "age"]  #_source 表示的查询出来的数据展示什么字段

}

8,es中文分词器:es默认的分词器是英文的,对中文不友好,使用中文分词器一定要和对应的版本对应

要放到es的plugin下面即可,安装好分词器,我们需要重启es

查询时我们将标准的分词器改为ik_smart即可

下面这个是用的默认分词器

9,我们可以自定义一些热词(假设es中已经按转了ik选择器)

我们进入到es的plugin文件夹下,然后进入到ik的config下面

#创建一个热词文档
vim custom/new_word.dic

#在文档中数据
老铁
王者荣耀
洪荒之力
一带一路
马云粑粑
吃屎吧你

然后我们需要将我们需要的编辑

加到我们的目录中后重启es,就可以搜索到我们的热词

10.文档映射

我们怎么去查映射,我们首先要到对应的索引下去查看映射关系

String类型里面:string类型分为text和keyword,其中text类型的会进行分词,keyword不会进行分词

 

es高可用集群环境搭建

es为什么要集群:在单个es服务器节点上,随着业务量的发展,索引文档的文件慢慢增多,影响查询效率和磁盘存储问题,

我们可以利用es的集群,将单个索引分片到多个不同的物理机器上存储,从而实现高可用,容错性。

如何实现高并发的:

es中分片分为主分片和副分片

在副分片表示:每一个主分片对应的分片数量 ,如果已经定义好了主分片数量,索引建好是不能随便修改主分片数量,底层用的是区域算法,副分片数量是可以修改的,而且主动分片对应的副的分片 不能再同一台服务器上存储。

为了高可用:每一个主分片都会有一个副分片(即备份分片),注意的是对应的分片不放在同一台节点上。故单台服务器是没有副分片的。

es在查询时,会在主分片和备份分片中查找,es分片机制保证了,每一个节点都可以包含所有的数据(即备份分片+主分片),但是核心只有主分片。 

es水平扩展节点增加分片:

利用取余算法,下面的routing就是document的id

es集群搭建 :首先要将集群名称一致,然后改每一个节的node-name,然后修改network.host:ip

我们在浏览器中查看有多少台节点

删除es中的数据,我们需要进入到data目录下,然后删除nodes下面的数据

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值