ES(二):使用KIbana对ES做基本增删改查操作
我们首先进入Kibana的开发工具界面:这里的get语句是查询所有,也是刚进入kibana开发工具界面时默认出现的查询语句。可以看到这时我们的es中没有任何数据和索引信息。那么下面我们就开始使用kibana对es进行操作。1、创建索引:put index_namePUT index_1//创建默认配置的索引PUT index_2//创建索引,...
我们首先进入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查询
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)