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

x33g5p2x  于2022-06-10 转载在 ElasticSearch  
字(3.1k)|赞(0)|评价(0)|浏览(559)

创建文档并添加数据

Elasticsearch中的文档就相当于MySQL数据库中的表,文档中的数据格式为JSON格式。

首先创建一个索引(数据库),然后在索引中创建文档(表),并添加数据。

创建一个名为user的索引:

PUT : localhost:9200/user

向user索引中创建文档并添加数据:

  1. POST : localhost:9200/user/_doc
  2. 请求体:
  3. {
  4. "name":"张三",
  5. "age":18,
  6. "sex":"男",
  7. "email":"111222333@qq.com"
  8. }

如果在添加数据的时候没有指定id,Elasticsearch会自动生成一个随机id。 但是使用随机生成的id进行查询的时候会比较复杂,因此,我们也可以手动给数据添加id

手动给数据添加id只需要在请求路径后面加上指定id即可,如下:

  1. POST : localhost:9200/user/_doc/10001
  2. PUTlocalhost: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索引中添加几条数据

  1. {
  2. "name":"李四",
  3. "age":16,
  4. "sex":"男",
  5. "email":"23434353@qq.com"
  6. }
  7. {
  8. "name":"1+1=王",
  9. "age":22,
  10. "sex":"男",
  11. "email":"123123123@qq.com"
  12. }
  13. {
  14. "name":"王五",
  15. "age":25,
  16. "sex":"女",
  17. "email":"wangwu@Outlook.com"
  18. }
  19. {
  20. "name":"curry",
  21. "age":30,
  22. "sex":"男",
  23. "email":"curry30@nba.com"
  24. }

主键查询和全查询

根据id查询
GET : localhost:9200/user/_doc/10001

查询所有数据

GET : localhost:9200/user/_search

条件查询

方式一:请求路径中添加查询

GET : localhost:9200/user/_search?q=name:王

方式二:请求中添加查询

  1. GET : localhost:9200/user/_search
  2. {
  3. "query":{
  4. "match":{
  5. "name":"王"
  6. }
  7. }
  8. }

分页查询

  1. GET : localhost:9200/user/_search
  2. {
  3. "query":{
  4. "match_all":{ //查询所有
  5. }
  6. },
  7. "from":0, //页码(从第0页开始)
  8. "size":2 //每页显示条数
  9. }

查询部分属性

  1. GET : localhost:9200/user/_search
  2. {
  3. "query":{
  4. "match_all":{ //查询所有
  5. }
  6. },
  7. "from":0, //页码(从第0页开始)
  8. "size":2, //每页显示条数
  9. "_source":["name","age"] //需要查询的属性
  10. }

查询排序

  1. GET : localhost:9200/user/_search
  2. {
  3. "sort":{
  4. "age":{
  5. "order":"asc" //按年龄升序查询
  6. }
  7. }
  8. }

多条件查询

1. 多个条件同时满足(and)

  1. GET : localhost:9200/user/_search
  2. {
  3. "query":{
  4. "bool":{
  5. "must":[
  6. {
  7. "match":{
  8. "name":"王"
  9. }
  10. },
  11. {
  12. "match":{
  13. "sex":"男"
  14. }
  15. }
  16. ]
  17. }
  18. }
  19. }

2. 满足多个条件中的一个(or)

  1. GET : localhost:9200/user/_search
  2. {
  3. "query":{
  4. "bool":{
  5. "should":[
  6. {
  7. "match":{
  8. "name":"王"
  9. }
  10. },
  11. {
  12. "match":{
  13. "name":"张"
  14. }
  15. }
  16. ]
  17. }
  18. }
  19. }

范围查询

  1. GET : localhost:9200/user/_search
  2. {
  3. "query":{
  4. "bool":{
  5. "filter":{
  6. "range":{
  7. "age":{
  8. "gt":22
  9. // gt: > 大于(greater than)
  10. // lt: < 小于(less than)
  11. // gte: >= 大于或等于(greater than or equal to)
  12. // lte: <= 小于或等于(less than or equal to)
  13. }
  14. }
  15. }
  16. }
  17. }
  18. }

完全匹配查询

  1. GET : localhost:9200/user/_search
  2. {
  3. "query":{
  4. "match_phrase":{
  5. "name":"1+1=王"
  6. }
  7. }
  8. }

聚合查询

分组

  1. GET : localhost:9200/user/_search
  2. {
  3. "aggs":{ //聚合操作
  4. "age_group":{ //名称,随意起名
  5. "terms":{ //分组
  6. "field":"age" //分组字段
  7. }
  8. }
  9. }
  10. }

求平均值

  1. GET : localhost:9200/user/_search
  2. {
  3. "aggs":{ //聚合操作
  4. "age_avg":{ //名称,随意起名
  5. "avg":{ //求平均值
  6. "field":"age" //求平均值的字段
  7. }
  8. }
  9. }
  10. }

相关文章