Elasticsearch中的文档就相当于MySQL数据库中的表,文档中的数据格式为JSON格式。
首先创建一个索引(数据库),然后在索引中创建文档(表),并添加数据。
创建一个名为user的索引:
PUT : localhost:9200/user
POST : localhost:9200/user/_doc
请求体:
{
"name":"张三",
"age":18,
"sex":"男",
"email":"111222333@qq.com"
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/c4f893a1dde14cb1936832d3bf5a3009.png)
如果在添加数据的时候没有指定id,Elasticsearch会自动生成一个随机id。 但是使用随机生成的id进行查询的时候会比较复杂,因此,我们也可以**手动给数据添加id**,
手动给数据添加id只需要在请求路径后面加上指定id即可,如下:
POST : localhost:9200/user/_doc/10001
或
PUT:localhost:9200/user/_doc/10001 (在指定id的条件下,可以使用PUT请求方式)
![在这里插入图片描述](https://img-blog.csdnimg.cn/cf5ddc4adca34fc691c241f12f79df73.png)
# 修改文档数据
## 全量修改
```PUT :localhost:9200/user/_doc/10001```
POST:localhost:9200/user/_update/10001
ETE : 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
: localhost:9200/user/_search
方式一:请求路径中添加查询
GET : localhost:9200/user/_search?q=name:王
GET : localhost:9200/user/_search
{
"query":{
"match":{
"name":"王"
}
}
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/0fe0f5aed3074423b2348dff2662f69c.png)
## 分页查询
GET : localhost:9200/user/_search
{
"query":{
"match_all":{ //查询所有
}
},
"from":0, //页码(从第0页开始)
"size":2 //每页显示条数
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/37cc517792d344a3b74d5904112f37e3.png)
## 查询部分属性
GET : localhost:9200/user/_search
{
"query":{
"match_all":{ //查询所有
}
},
"from":0, //页码(从第0页开始)
"size":2, //每页显示条数
"_source":["name","age"] //需要查询的属性
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/7e8258700deb4cc9a5fbc6b11fe46e03.png)
## 查询排序
GET : localhost:9200/user/_search
{
"sort":{
"age":{
"order":"asc" //按年龄升序查询
}
}
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/b139cddd8dc24bf5b7d441984985544e.png)
## 多条件查询
**1. 多个条件同时满足(and)**
GET : localhost:9200/user/_search
{
"query":{
"bool":{
"must":[
{
"match":{
"name":"王"
}
},
{
"match":{
"sex":"男"
}
}
]
}
}
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/b6c5ee19def046c5a091b071032f378f.png)
**2. 满足多个条件中的一个(or)**
GET : localhost:9200/user/_search
{
"query":{
"bool":{
"should":[
{
"match":{
"name":"王"
}
},
{
"match":{
"name":"张"
}
}
]
}
}
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/aeb50bd15ef04f299c3243ee7a139251.png)
## 范围查询
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)
}
}
}
}
}
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/506c3212ce5f4cdaae7eb4933869f2f4.png)
## 完全匹配查询
GET : localhost:9200/user/_search
{
"query":{
"match_phrase":{
"name":"1+1=王"
}
}
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/96dbd88330374ede8328e26f84e9efcc.png)
## 聚合查询
### 分组
GET : localhost:9200/user/_search
{
"aggs":{ //聚合操作
"age_group":{ //名称,随意起名
"terms":{ //分组
"field":"age" //分组字段
}
}
}
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/9b661ed0a9b74d3f8d3f317f46852a6f.png)
### 求平均值
GET : localhost:9200/user/_search
{
"aggs":{ //聚合操作
"age_avg":{ //名称,随意起名
"avg":{ //求平均值
"field":"age" //求平均值的字段
}
}
}
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。