【Elasticsearch】- elasticsearch文档数据的增删改查
文章目录
- 创建文档并添加数据
- 修改文档数据
-
- 全量修改
- 局部数据修改
- 删除文档数据
- 查询文档数据
-
- 主键查询和全查询
- 条件查询
- 分页查询
- 查询部分属性
- 查询排序
- 多条件查询
- 范围查询
- 完全匹配查询
- 聚合查询
-
- 分组
- 求平均值
创建文档并添加数据
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: = 大于或等于(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"//求平均值的字段}}}}
开发者涨薪指南 48位大咖的思考法则、工作方式、逻辑体系