《玩玩儿Elasticsearch》中简介了一下elasticsearch。这篇文章。我们还是做些基础的学习。在Elasticsearch怎样进行CRUD?

如果我们正在创建的一个类似微博的应用。我们就姑且先叫它“kiwi”吧。kiwi这个应用就是一条条消息组成的。

在kiwi中,消息称为ksay。有两个部分组成。一是作者(author),而是消息本身(message)。

Create

curl -X POST http://localhost:9200/kiwi/ksay/ -d '{ "author": "rococojie", "message": "I am beautiful"}'

返回:{"_index":"kiwi","_type":"ksay","_id":"aaX3P2LJSP-dDYVy0USv7Q","_version":1,"created":true}

我们注意到elasticsearch默认不是依照自增的方式帮我们生成id的。而是自己主动生成22位的URL安全的_id。如刚才的样例中,返回的_id就是aaX3P2LJSP-dDYVy0USv7Q。假设要使用自己定义的_id,则操作例如以下:

curl -X POST http://localhost:9200/kiwi/ksay/ -d '{"author": "jerry", "message": "I hate Tom"}'

返回:{"_index":"kiwi","_type":"ksay","_id":"1","_version":1,"created":true}

Read

我们这里就仅仅说用id取值

curl -X GET http://localhost:9200/kiwi/ksay/1

返回:{"_index":"kiwi","_type":"ksay","_id":"1","_version":1,"found":true, "_source" : { "author": "jerry", "message": "I hate Tom"}}

假设我们希望返回的知识原来我们存的数据,那么

curl -X GET http://localhost:9200/kiwi/ksay/1/_source

返回:{ "author": "jerry", "message": "I hate Tom"}

curl -X GET http://localhost:9200/kiwi/ksay/10000

返回{"_index":"kiwi","_type":"ksay","_id":"10000","found":false},没有找到我们刚才存的ksay。


Update

curl -X PUT http://localhost:9200/kiwi/ksay/1 -d '{"author": "jerry", "message": "I love Tom"}'

返回:{"_index":"kiwi","_type":"ksay","_id":"1","_version":2,"created":false}

我们注意到这里的_version变为了2。知识由于ksay发生了改变。created返回false,表示没有创建新的文档,仅仅是更新。

尽管Elasticsearch支持进行文档更新。我们须要知道Elasticsearch中存储的文档是不可变的(immutable)。

这样的所谓的更新实际上是一种假象。在Elasticsearch内部,首先将比較旧的那条数据标明为“已经删除”。然后再把较新的那条数据进行index。

(retrieve-change-reindex)

部分更新

curl -X POST http://localhost:9200/kiwi/ksay/1/_update -d '{ "doc": {"message": "I hate Tom, again"} }'

返回:{"_index":"kiwi","_type":"ksay","_id":"1","_version":3}

"doc"中即是我们须要更新的field。Elasticsearch会把最新的field“merge”到原来旧的文档中。这是我们再去查看这条ksay的信息。

curl -X GET http://localhost:9200/kiwi/ksay/1

返回:{"_index":"kiwi","_type":"ksay","_id":"1","_version":3,"found":true, "_source" : {"author":"jerry","message":"I hate Tom, again"}}

Delete

curl -X DELETE http://localhost:9200/kiwi/ksay/1

返回:{"found":true,"_index":"kiwi","_type":"ksay","_id":"1","_version":4}

再尝试去取ksay:

curl -X GET http://localhost:9200/kiwi/ksay/1

返回:{"_index":"kiwi","_type":"ksay","_id":"1","found":false}

就不能在訪问到,found的值是false

学会了Elasticsearch最主要的CRUD。我们能够再找些其它好玩儿的来玩儿了

最新文章

  1. Autowired注解的妙用---在Controller里的构造函数里获取需要注入的对象
  2. hdu 4883 思维题
  3. Nginx+uWSGI或fastcgi部署Django项目
  4. demo_01 css3中的radius
  5. Modules you should know in Python Libray
  6. matlab学习
  7. UIImage图片转NSData
  8. Qt学习之路(60): 创建shared library
  9. ABP框架 - 规约
  10. python学习日记:day11-----装饰器
  11. windows10系统终极净化方法
  12. 创建Git 仓库及 克隆、拉取、和推送操作
  13. 2018年冬季寒假作业4--PTA 打印沙漏
  14. Vue.js 父子组件之间通信的方式
  15. python 绘图pylab
  16. Html5与Css3知识点拾遗(六)
  17. java根据模板导出PDF详细教程
  18. [leetcode]Merge Sorted Array @ Python
  19. Android 获取包名,版本信息
  20. objective-c block 详解 转

热门文章

  1. Git学习总结(10)——git 常用命令汇总
  2. NYIST 677 碟战
  3. COGS——T 1175. [顾研NOIP] 旅游电车
  4. 洛谷 P1746 离开中山路
  5. BestCoder Round #52 (div.2) HDU 5418 Victor and World (DP+状态压缩)
  6. easyui编辑器(kindeditor-4.1.10)
  7. c# 获取一年中的周/根据一年中的第几周获取该周的开始日期与结束日期
  8. 51nod-1359: 循环探求
  9. bzoj4590: [Shoi2015]自动刷题机(二分答案)
  10. Binary operations #1