ES(二):使用KIbana对ES做基本增删改查操作

本文详细介绍如何使用Kibana对Elasticsearch进行操作,包括创建索引、查询索引设置、添加数据、查询数据、修改数据、删除数据、批量查询数据及多索引多类型查询等核心功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们首先进入Kibana的开发工具界面:

这里的get语句是查询所有,也是刚进入kibana开发工具界面时默认出现的查询语句。可以看到这时我们的es中没有任何数据和索引信息。那么下面我们就开始使用kibana对es进行操作。

1、创建索引:put  index_name

PUT index_1        //创建默认配置的索引

PUT index_2        //创建索引,并指定配置
{
  "settings":{
    "index":{
      "number_of_shards":3,    //分片数
      "number_of_replicas":0   //备份数
    }
  }
}

2、查询索引设置

下面我们来看一下索引的默认配置时什么:get _all/_settings

GET _all/_settings       //查看素有索引的设置

GET /index_1/_settings   //单独查询某个索引的设置

注意这里read_only_allow_delete属性值为true,表示该索引下的数据只可以进行读操作和删除操作,不能添加和修改,一般是因为磁盘空间不足造成的。可以手动修改该配置:

PUT _settings
{
  "index": {
  "blocks": {
    "read_only_allow_delete": "false"
    }
  }
}

3、添加数据:POST

POST /index_1/user1/      //不指定ID
{
  "name":"water",
  "age":26,
  "birthday":"1999-11-11"
}

POST /index_1/user1/1      //指定ID
{
  "name":"wate2r",
  "age":25,
  "birthday":"1999-12-12"
}

查看添加的数据:

GET _search
{
  "query": {
    "match_all": {}
  }
}

4、查询数据

上面我们是查看ES中的所有数据,那么我们如果只想查看其中的部分数据呢。

根据ID查询数据:

GET /index_1/user1/k8Ga7G4BCdzt83GIM6Rk

GET /index_1/user1/1

查询结果如上图,我们可以看到,查询的数据字段都放在 _source中,那么我们是否可以查看其中的一部分字段

只查询name 和 age字段的值:

GET  /index_1/user1/1?_source=name,age

5、修改数据----PUT(覆盖数据)/POST(修改数据)

PUT /index_1/user1/1
{
    "name": "water11",
    "age": 24,
    "birthday": "1999-12-12",
    "work":"programmer"
}

使用put修改对象字段,不仅可以修改字段的值,还可以添加或删除一些字段。如上面user1中_id=1的对象原来没有work属性,我们可以使用新的带有work属性的对象将它替换。

POST /index_1/user1/1/_update
{
  "doc": {"age":23}
}

使用POST修改,需要使用_update函数,且将要修改字段包裹在 “doc”中 。注意,这里也可以为对象添加新的字段,如果“doc”中的字段,在目标对象中不存在,则会在目标对象中添加新的字段。

POST /index_1/user1/1/_update
{
  "doc": {"height":65}
}

重新查询_id=1的user1:  GET  /index_1/user1/1

6、删除数据----DELETE

DELETE /index_1/user1/1

7、批量查询数据multiGet

GET /_mget
{
  "docs":[
    {
      "_index":"index_1",   //查询的索引
      "_type":"user1",      //索引中的类型
      "_id":"1",            //数据ID
      "_source":"name"      //查询的字段
    },
    {
      "_index":"index_1",
      "_type":"user1",
      "_id":"2",
      "_source":["name","age"]
    },
    {
      "_index":"index_1",
      "_type":"user1",
      "_id":"3"
    }
  ]
}

可以看到上面的批量查询中,要查询的索引和类型都是一样的,那么我们可不可以将他们的公共部分提取呢,答案是肯定的:

GET /index_1/user1/_mget   //将要查询的索引和类型提取
{
    "docs":[
    { 
      "_id":"1",
      "_source":"name"
    },
    { 
      "_id":"2",
      "_source":["name","age"]
    },
    { 
      "_id":"3"
    }
  ]
}

执行之后的查询结果:

还可以使用 ids 代替 docs:

GET /index_1/user1/_mget
{
  "ids":["1","2","3"]
}

这样查询,不能选在要查询的字段,会把对象中的所有字段都查询出来。

 

8、多index多type查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值