我们首先进入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查询

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐