【Elasticsearch】- elasticsearch文档数据的增删改查

举报
1+1=王 发表于 2022/12/20 20:30:55 2022/12/20
【摘要】 【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/10001PUT: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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。