elasticSearch使用Kibana对数据进行增删改查
没想到我竟然开始分享elasticSearch专题,感慨万分。该博文是在kibana5.1.1版本上都试运行过,其他版本的语法和兼容性可能会有点差异。
由于之前已经分享过elasticSearch的java实现主要方法(如下链接),该文章主要分享使用Kibana对数据的操作。不用通过跑代码的方式,使得某些简单操作更快捷。
elasticSearch的java实现主要方法https://blog.csdn.net/weixin_42311968/article/details/123856299
在开始之前,首先给出我的数据结构mapping,为了简单起见,构建了一个索引名为student1,且type为studentAlias的数据结构,包含两个字段:address和name。同时,有个名称为studentAlias的别名。type和别名可以不一样。(note:以上提到的内容都会在下面有详细的使用说明)
-
{
-
"mappings": {
-
"student": {
-
"properties": {
-
"address": {
-
"type": "keyword"
-
},
-
"name": {
-
"type": "text",
-
"fields": {
-
"quanpin": {
-
"type": "text",
-
"analyzer": "quanpin_analyzer",
-
"search_analyzer": "word_analyzer"
-
},
-
"substring": {
-
"type": "text",
-
"analyzer": "back_edge_ngram_analyzer",
-
"search_analyzer": "word_analyzer"
-
}
-
}
-
}
-
}
-
}
-
}
-
}
1.新增
0.新增es索引库
PUT /索引名
PUT /student1
1. 新增一条数据 指定id
PUT 索引名/type/id
-
PUT student1/studentAlias/1
-
{
-
"address":"北京",
-
"name":"百度"
-
}
响应: 查询:
2.新增一条数据 不指定id,(随机id类似:AYE4TrsaVlOI6NDwDDvR)
POST 索引名/type
-
POST student1/studentAlias
-
{
-
"name":"微软",
-
"address":"上海"
-
}
响应: 查询:
3.批量新增数据
PUT 索引名/别名/_bulk
-
PUT student1/studentAlias/_bulk
-
{"index":{"_id":1}}
-
{"name":"百度","address":"北京"}
-
{"index":{"_id":2}}
-
{"name":"优酷","address":"上海"}
-
{"index":{"_id":3}}
-
{"name":"美团","address":"武汉"}
2.删除
0.删除索引库
DELETE /索引名
DELETE student1
1.指定id
DELETE index名/type名/id
DELETE student1/studentAlias/1
(如果别名唯一的话可以直接通过别名进行删除,不建议,很容易误删数据)
响应:
2.使用_delete_by_query语句,可以进行批量删除
POST 索引名/type/_delete_by_query
1)批量指定数据
大括号内是条件,满足该条件的项目全部删除
-
POST student1/studentAlias/_delete_by_query
-
{
-
"query":{
-
"term":{
-
"_id":"1"
-
}
-
}
-
}
响应:
_delete_by_query的默认最大重试次数是10次。超过10次后,会造成_delete_by_query请求中止,并且在failures字段中响应所有的故障。已经删除的仍会执行。即,该过程能像数据库那样回滚,只有中断。
产生失败后打印:
_delete_by_query_delete_by_query_delete_by_queryfailuresfailures
2)删除所有数据,不删表结构。效果同mysql中的truncate
POST 索引名/type/_delete_by_query
-
POST /student1/studentAlias/_delete_by_query
-
{
-
"query": {
-
"match_all": {
-
}
-
}
-
}
3)同时删除多个索引和多个类型的文档
(此处的文档是对应type中存储的数据。类比:索引 ➡ 数据库某个库,类型 ➡ 某张表,文档 ➡ 数据内容)
POST 索引名1,索引名2/type2,type2-2/_delete_by_query
-
POST indexName,indexName2/type2,post/_delete_by_query
-
{
-
"query": {
-
"match_all": {}
-
}
-
}
4)滚动删除(即指定一次删除的size)
这种删除方式仍然会删除全部数据,只是做了批量删除
POST 索引名/type名/_delete_by_query?scroll_size=N N为指定的一次删除数量
-
POST student4/student4/_delete_by_query?scroll_size=2
-
{
-
"query":{
-
"term":{
-
"address":"武汉"
-
}
-
}
-
}
两种删除方式的区别:
post在请求发送后刷新查询涉及的所有分片 。(主分片 副本分片)
delete仅刷新接收删除请求的分片。(主分片)
3.修改
1.全量字段修改指定字段值
同新增逻辑,把全量字段复制过来,然后将需要修改的字段值更改。
eg:将name=“微软”修改为name=“腾讯”
2.修改指定字段值
eg:将name=“微软”修改为name=“腾讯”
POST 索引名/type名/id/_update
-
POST student1/studentAlias/1/_update
-
{
-
"doc":{
-
"name":"腾讯"
-
}
-
}
4.查询
1.查询数据结构
1)查询索引名下所有type中mapping类型的数据结构
GET /别名
GET /studentAlias
2)查询指定type的数据结构
GET /索引名/_mapping/别名
GET /student1/_mapping/studentAlias
2.查询项目数据
1)查询索引名下所有type的所有数据
GET /别名/_search
GET /studentAlias/_search
2)查询指定type下符合条件的数据
GET /索引名/别名/_search
-
GET /student1/studentAlias/_search
-
{
-
"query": {
-
"match": {
-
"name": "百度"
-
}
-
}
-
}
还有更多复杂查询,后续补充。。。
?routing=1:指定某个分片路由。目前仅尝试了删除和查询可以使用
?refresh:删除/新增/更新后立即可以查询
?refresh同?refresh=true立即刷新,?refresh=false不做任何操作,?refresh=wait_for等到可以查询后返回。
关于?refresh=wait_for,以下给了测试用例。加?refresh=wait_for的耗时875ms,不加的仅9ms。
2022.06.14
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgaahfc
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13