使用Kibana进行简单的CURD和版本控制

一、简单的CURD操作

先创建一个文档

### 创建索引
PUT /xwhy

在这里插入图片描述
查看索引信息

GET /xwhy

在这里插入图片描述
创建文档

### 创建文档 /索引/类型/id  (id属于主键唯一标识,不能重复)
PUT /xwhy/user/1
{
  "username":"mark",
  "age":21,
  "sex":"男"
}

在这里插入图片描述
可以对字段的值进行修改然后在执行上述命令,值就会修改,修改一次,版本号会增加一次
在这里插入图片描述
也可以不指定id,使用post方式会随机生成一个不会重复的id
在这里插入图片描述

删除索引

DELETE /xwhy
高级查询:

1、根据id进行查询:

GET /xwhy/user/4

2、查询当前所有类型的文档

GET /xwhy/user/_search

3、根据多个ID批量查询

### 查询多个id分别为1、2
GET /xwhy/user/_mget
{
  "ids":["1","2"]
}
复杂查询条件

1、查询年龄为年龄25岁

GET /xwhy/user/_search?q=age:25

2、查询年龄30岁-60岁之间

### 注意TO一定要大写
GET /xwhy/user/_search?q=age[30 TO 60]

3、查询年龄30岁-60岁之间 并且年龄降序、从0条数据到第1条数据

GET /xwhy/user/_search?q=age[30 TO 60]&sort=age:desc&from=0&size=1

4、查询年龄30岁-60岁之间 并且年龄降序、从0条数据到第1条数据,展示name和age字段

GET /xwhy/user/_search?q=age[30 TO 60]&sort=age:desc&from=0&size=1&_source=name,age
DSL语言

es中的查询请求有两种方式,一种是简易版的查询,另外一种是使用JSON完整的请求体,叫做结构化查询(DSL)。
由于DSL查询更为直观也更为简易,所以大都使用这种方式。
DSL查询是POST过去一个json,由于post的请求是json格式的,所以存在很多灵活性,也有很多形式。

根据名称精确查询姓名

GET /xwhy/user/_search
{
  "query": {
    "term": {
      "name": "xiaoming"
    }
  }
}

##term是代表完全匹配,即不进行分词器分析,文档中必须包含整个搜索的词汇

根据汽车名称模糊查询

GET /xwhy/user/_search
{
  "from": 0,
  "size": 2, 
  "query": {
    "match": {
        "car": "奥迪"
      }
  }
}

##match查询相当于模糊匹配,只包含其中一部分关键词就行

Term与Match区别

Term查询不会对字段进行分词查询,会采用精确匹配。
Match会根据该字段的分词器,进行分词查询。

使用filter过滤年龄

GET /xwhy/user/_search
{
	"query": {
		"bool": {
			"must": [{
				"match_all": {}
			}],
			"filter": {
				"range": {
					"age": {
						"gt": 21,
						"lte": 51
					}
				}
			}
		}
	},
	"from": 0,
	"size": 10,
	"_source": ["name", "age"]

}

二、版本控制

1.为什么要进行版本控制

为了保证数据再多线程操作下的准确性,es使用version字段乐观锁来进行版本控制。

2.悲观锁和乐观锁(CAS无所机制)

悲观锁:假设会发生并发冲突,屏蔽一切可能违反数据准确性的操作
乐观锁:假设不会发生并发冲突,只在提交操作是检查是否违反数据完整性。

如果在修改时候传入的version是7 但是 查看当前版本是6 不一致! 修改时候 哪个线程执行的块 哪个就改了

悲观锁需要等待 效率低一些

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

内部版本控制:_version自增长,修改数据后,_version会自动的加1 解决并发情况下的一致性问题

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值