【Elasticsearch】- elasticsearch文档数据的增删改查
【摘要】 【Elasticsearch】- elasticsearch文档数据的增删改查
@[TOC]
创建文档并添加数据
Elasticsearch中的文档就相当于MySQL数据库中的表,文档中的数据格式为JSON格式。
首先创建一个索引(数据库),然后在索引中创建文档(表),并添加数据。
创建一个名为user的索引:
PUT : localhost:9200/user
向user索引中创建文档并添加数据:
POST : localhost:9200/user/_doc
请求体:
{
"name":"张三",
"age":18,
"sex":"男",
"email":"111222333@qq.com"
}
如果在添加数据的时候没有指定id,Elasticsearch会自动生成一个随机id。 但是使用随机生成的id进行查询的时候会比较复杂,因此,我们也可以手动给数据添加id,
手动给数据添加id只需要在请求路径后面加上指定id即可,如下:
POST : localhost:9200/user/_doc/10001
或
PUT:localhost:9200/user/_doc/10001 (在指定id的条件下,可以使用PUT请求方式)
修改文档数据
全量修改
PUT :localhost:9200/user/_doc/10001
局部数据修改
POST:localhost:9200/user/_update/10001
删除文档数据
DELETE : localhost:9200/user/_doc/10001
查询文档数据
在进行查询之前先向user索引中添加几条数据
{
"name":"李四",
"age":16,
"sex":"男",
"email":"23434353@qq.com"
}
{
"name":"1+1=王",
"age":22,
"sex":"男",
"email":"123123123@qq.com"
}
{
"name":"王五",
"age":25,
"sex":"女",
"email":"wangwu@Outlook.com"
}
{
"name":"curry",
"age":30,
"sex":"男",
"email":"curry30@nba.com"
}
主键查询和全查询
根据id查询
GET : localhost:9200/user/_doc/10001
查询所有数据
GET : localhost:9200/user/_search
条件查询
方式一:请求路径中添加查询
GET : localhost:9200/user/_search?q=name:王
方式二:请求中添加查询
GET : localhost:9200/user/_search
{
"query":{
"match":{
"name":"王"
}
}
}
分页查询
GET : localhost:9200/user/_search
{
"query":{
"match_all":{ //查询所有
}
},
"from":0, //页码(从第0页开始)
"size":2 //每页显示条数
}
查询部分属性
GET : localhost:9200/user/_search
{
"query":{
"match_all":{ //查询所有
}
},
"from":0, //页码(从第0页开始)
"size":2, //每页显示条数
"_source":["name","age"] //需要查询的属性
}
查询排序
GET : localhost:9200/user/_search
{
"sort":{
"age":{
"order":"asc" //按年龄升序查询
}
}
}
多条件查询
1. 多个条件同时满足(and)
GET : localhost:9200/user/_search
{
"query":{
"bool":{
"must":[
{
"match":{
"name":"王"
}
},
{
"match":{
"sex":"男"
}
}
]
}
}
}
2. 满足多个条件中的一个(or)
GET : localhost:9200/user/_search
{
"query":{
"bool":{
"should":[
{
"match":{
"name":"王"
}
},
{
"match":{
"name":"张"
}
}
]
}
}
}
范围查询
GET : localhost:9200/user/_search
{
"query":{
"bool":{
"filter":{
"range":{
"age":{
"gt":22
// gt: > 大于(greater than)
// lt: < 小于(less than)
// gte: >= 大于或等于(greater than or equal to)
// lte: <= 小于或等于(less than or equal to)
}
}
}
}
}
}
完全匹配查询
GET : localhost:9200/user/_search
{
"query":{
"match_phrase":{
"name":"1+1=王"
}
}
}
聚合查询
分组
GET : localhost:9200/user/_search
{
"aggs":{ //聚合操作
"age_group":{ //名称,随意起名
"terms":{ //分组
"field":"age" //分组字段
}
}
}
}
求平均值
GET : localhost:9200/user/_search
{
"aggs":{ //聚合操作
"age_avg":{ //名称,随意起名
"avg":{ //求平均值
"field":"age" //求平均值的字段
}
}
}
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)