elasticsearch 数据 添加,更新,删除,查询

首先给大家推荐一下我老师大神的人工智能教学网站。教学不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵黄段子!点这里可以跳转到网站

elasticsearch 数据 添加,更新,删除,查询

上篇文章说了,elasticsearch mapping字段的增,删,更新。如果把mapping的修改理解成对数据结构的修改,那这篇文章就可以理解成对数据的修改。

1,添加数据

  1. $ curl -XPOST “http://127.0.0.1:9200/ik_v2/chinese/3?pretty”  -H “Content-Type: application/json” -d ‘ 
  2.     “id” : 3, 
  3.     “username” :  “测试测试”, 
  4.     “description” :  “测试测试” 
  5. }’  

2,更新数据

2.1,部分数据更新

  1. $ curl -XPOST ‘localhost:9200/ik_v2/chinese/3/_update?pretty’ -H “Content-Type: application/json” -d ‘{ 
  2.     “doc” : { 
  3.             “username” : “testtest” 
  4.         } 
  5.     } 
  6. }’  
  7. $ curl -XGET “http://127.0.0.1:9200/ik_v2/chinese/3?pretty”  
  8. {  
  9.   “_index” : “ik_v2”,  
  10.   “_type” : “chinese”,  
  11.   “_id” : “3”,  
  12.   “_version” : 1,  
  13.   “found” : true,  
  14.   “_source” : {  
  15.     “id” : 3,  
  16.     “username” : “testtest”,  //部分更新了  
  17.     “description” : “测试测试”  
  18.   }  
  19. }  

2.2,全部更新

  1. curl -XPOST “http://127.0.0.1:9200/ik_v2/chinese/3?pretty”  -H “Content-Type: application/json” -d ‘ 
  2.     “id” : 4, 
  3.     “username” :  “111111111”, 
  4.     “description” :  “222222222” 
  5. }’  
  6. //id为3的数据全部更新了  
  7. $ curl -XGET “http://127.0.0.1:9200/ik_v2/chinese/3?pretty”  
  8. {  
  9.   “_index” : “ik_v2”,  
  10.   “_type” : “chinese”,  
  11.   “_id” : “3”,  
  12.   “_version” : 1,  
  13.   “found” : true,  
  14.   “_source” : {  
  15.     “id” : 4,  
  16.     “username” : “111111111”,  
  17.     “description” : “222222222”  
  18.   }  
  19. }  

2.3,拼接更新

  1. $ curl -XPOST ‘localhost:9200/ik_v2/chinese/3/_update?pretty’ -H “Content-Type: application/json” -d ‘{ 
  2.     “script” : { 
  3.         “inline” : “ctx._source.description += params.content”, //因为description是string型,所以是拼 
  4.         “params” : { 
  5.             “content” : 333 
  6.         } 
  7.     } 
  8. }’  
  9. $ curl -XPOST ‘localhost:9200/ik_v2/chinese/3/_update?pretty’ -H “Content-Type: application/json” -d ‘{ 
  10.     “script” : { 
  11.         “inline” : “ctx._source.id += params.num”,   //因为id是int型,所以是加 
  12.         “params” : { 
  13.             “num” : 2 
  14.         } 
  15.     } 
  16. }’  
  17. $ curl -XGET “http://127.0.0.1:9200/ik_v2/chinese/3?pretty”  
  18. {  
  19.   “_index” : “ik_v2”,  
  20.   “_type” : “chinese”,  
  21.   “_id” : “3”,  
  22.   “_version” : 3,  
  23.   “found” : true,  
  24.   “_source” : {  
  25.     “id” : 6,   //加了2  
  26.     “username” : “111111111”,  
  27.     “description” : “222222222333”   //拼了333  
  28.   }  
  29. }  

2.4,添加字段,并更新数据

  1. //添加一个字段为sex值为1  
  2. $ curl -XPOST ‘localhost:9200/ik_v2/chinese/3/_update?pretty’ -H “Content-Type: application/json” -d ‘{ 
  3.  “script” : “ctx._source.sex = 1” 
  4. }’  
  5. //删除sex这个字段  
  6. $ curl -XPOST ‘localhost:9200/ik_v2/chinese/3/_update?pretty’ -H “Content-Type: application/json” -d ‘{ 
  7.  “script” : “ctx._source.remove(\”sex\”)” 
  8. }’  

在这里要注意,用这个方法,mapping结构会改变。

注:以上的更新操作都是单条数据更新

2.5,多条数据更新

  1. $ curl -XPOST ‘localhost:9200/ik_v2/test/_update_by_query?pretty’ -H “Content-Type: application/json” -d ‘{ 
  2. >  “query”: { 
  3. >         “bool”: { 
  4. >             “should”: { 
  5. >                 “match”: { 
  6. >                     “username”: “高铁” 
  7. >                 } 
  8. >             } 
  9. >         } 
  10. >     }, 
  11. >     “script” : { 
  12. >         “inline” : “ctx._source.username = \”666666\”” 
  13. >     } 
  14. > }’  
  15. {  
  16.   “took” : 6,  
  17.   “timed_out” : false,  
  18.   “total” : 3,  
  19.   “updated” : 2,  //更新了二条  
  20.   “deleted” : 0,  
  21.   “batches” : 1,  
  22.   “version_conflicts” : 0,  
  23.   “noops” : 0,  
  24.   “retries” : {  
  25.     “bulk” : 0,  
  26.     “search” : 0  
  27.   },  
  28.   “throttled_millis” : 0,  
  29.   “requests_per_second” : -1.0,  
  30.   “throttled_until_millis” : 0,  
  31.   “failures” : [ ]  
  32. }  

注意,这个条件字段,最好不要用分词字段,因为不可控。上面我只是为了测试用。

3,删除数据

3.1,单条删除

  1. $ curl -XDELETE “http://127.0.0.1:9200/ik_v2/chinese/3?pretty”  

3.2,多条数据删除

  1. $ curl -XPOST ‘http://127.0.0.1:9200/ik_v2/_delete_by_query?pretty’ -H “Content-Type: application/json” -d ‘{ 
  2. > “query”: { 
  3. >         “term”: { 
  4. >             “username”: “666666” 
  5. >         } 
  6. >     } 
  7. > }’  
  8. {  
  9.   “took” : 6,  
  10.   “timed_out” : false,  
  11.   “total” : 3,  
  12.   “deleted” : 2,  //删除了二条  
  13.   “batches” : 1,  
  14.   “version_conflicts” : 0,  
  15.   “noops” : 0,  
  16.   “retries” : {  
  17.     “bulk” : 0,  
  18.     “search” : 0  
  19.   },  
  20.   “throttled_millis” : 0,  
  21.   “requests_per_second” : -1.0,  
  22.   “throttled_until_millis” : 0,  
  23.   “failures” : [ ]  
  24. }  

注意,这个条件字段,最好不要用分词字段,因为不可控。

4,查询

  1. $ curl -XPOST “http://127.0.0.1:9200/ik,ik_v2/chinese/_search?pretty”  -H “Content-Type: application/json”  -d ‘ 
  2.     “query”: { 
  3.         “multi_match”: { 
  4.             “query”: “中国高铁”, 
  5.             “fields”: [ “username”, “description”] 
  6.         } 
  7.     } 
  8. ‘  

查询的操作,非常多,后面会单独的详细说。查询总的来说,支持多索引多字段查询。新版es不支持一个索引多个mapping,老版还支持多mapping查询。

点这里可以跳转到人工智能网站

发表评论