irpas技术客

【Elasticsearch】- elasticsearch文档数据的增删改查_1 + 1=王

网络 1251

文章目录 创建文档并添加数据修改文档数据全量修改局部数据修改 删除文档数据查询文档数据主键查询和全查询条件查询分页查询查询部分属性查询排序多条件查询范围查询完全匹配查询聚合查询分组求平均值

创建文档并添加数据

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" //求平均值的字段 } } } }


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #ElasticSearch