
Elasticsearch中的文档就相当于MySQL数据库中的表,文档中的数据格式为JSON格式。
首先创建一个索引(数据库),然后在索引中创建文档(表),并添加数据。
创建一个名为user的索引:
PUT : localhost:9200/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
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":"王" }}}

## 分页查询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" //求平均值的字段 } }}}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。