检索文档(Retrieving documents)

我们已经有文档存储在我们的实例。现在,让我们尝试检索它们:

 curl -XGET http://localhost:9200/blog/article/1

然后服务器返回以下响应:

 {
"_index" : "blog", "_type" : "article",
"_id" : "1",
"_version" : 1,
"exists" : true,
"_source" : {
"title": "New version of Elastic Search released!",
"content": "...",
"tags": ["announce", "elasticsearch", "release"]
}

在响应中,除了索引、类型、标识和版本,我们还看到文档被找到的信息以及文档源。如果文档没有找到,我们得到的响应如下:

 {
"_index" : "blog",
"_type" : "article",
"_id" : "9999",
"exists" : false
}

当然,没有关于版本和文档源的信息。

更新文档(Updating documents)

更 新文档的索引是一个更加复杂的任务。在内部,ElasticSearch心须获取文档,从_source字段移除旧的文档,应用变更并且索引它作为一个新 文档。ElasticSearch通过给定一个script参数来实现。这允许我们做比简单的字段改变更复杂的文档转换。让我们看看在一个简单的案例中它 是如何工作的:

然后执行下面的命令:

 curl -XPOST http://localhost:9200/blog/article/1/_update

 -d '{
"script": "ctx._source.content = \"new content\""
}'

服务器响应如下:

 {

 "ok":true,

 "_index":"blog",

 "_type":"article",

 "_id":"1",

 "_version":2

 }

凑效了!的确,让我们检索当前文档:

 curl -XGET http://localhost:9200/blog/article/1

 {
"_index" : "blog", "_type" : "article",
"_id" : "1",
"_version" : 2,
"exists" : true,
"_source" : {
"title":"New version of Elastic Search released!",
"content":"new content",
"tags":["announce","elasticsearch","release"]}
}

服务器改变了我们的文章内容和文档的版本号。请注意,我们没有发送整个文档,仅仅改变了部分。但是请记住使用更新的功能,我们需要使用_source字段-我们在第三章将描述如何使用_source字段扩展你的索引结构的附加内部信息部分、扩展你的结构和搜索。

还有一件事是关于文档更新-如果你的脚本从文档使用一个字段值即被更新。如果文档没有价值,你可以用来设置一个值。例如,如果你想增加文档的计数器字段并且它不存在,您可以在您的请求中使用upsert提供默认值。例如:

 curl -XPOST http://localhost:9200/blog/article/1/_update

 -d '{
"script": "ctx._source.counter += 1",
"upsert": {
"counter" : 0
} }'

在前面的例子中,如果我们更新的文档没有计数器字段,0的值将被使用。

删除文档(Deleting documents)

我们已经看到如何创建(PUT)和检索(GET)文档。可以以类似的方式删除一个文档,但唯一的区别是在动词的使用。让我们执行以下删除命令:

 curl -XDELETE http://localhost:9200/blog/article/1
{ "ok":true, "found":true, "_index":"blog", "_type":"article", "_id":"1", "_version":1 }

现在我们可以使用CRUD操作。这使我们能够使用ElasticSearch作为一个简单的键值存储来创建应用程序。但这只是开始!

翻译【ElasticSearch Server】第一章:开始使用ElasticSearch集群(7)的更多相关文章

  1. 使用mod_cluster进行apache httpd server和jboss eap 6.1集群配置

    本文简单介绍,使用mod_cluster进行apache httpd server和jboss eap 6.1集群配置.本配置在windows上测试通过,linux下应该是一样的.可能要稍作调整.后面 ...

  2. CentOS6安装各种大数据软件 第四章:Hadoop分布式集群配置

    相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...

  3. CentOS6安装各种大数据软件 第六章:HBase分布式集群的配置

    相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...

  4. 《Entity Framework 6 Recipes》翻译系列 (1) -----第一章 开始使用实体框架之历史和框架简述

    微软的Entity Framework 受到越来越多人的关注和使用,Entity Framework7.0版本也即将发行.虽然已经开源,可遗憾的是,国内没有关于它的书籍,更不用说好书了,可能是因为EF ...

  5. 《Entity Framework 6 Recipes》翻译系列(2) -----第一章 开始使用实体框架之使用介绍

    Visual Studio 我们在Windows平台上开发应用程序使用的工具主要是Visual Studio.这个集成开发环境已经演化了很多年,从一个简单的C++编辑器和编译器到一个高度集成.支持软件 ...

  6. Elasticsearch学习系列七(Es分布式集群)

    核心概念 集群(Cluster) 一个Es集群由多个节点(Node)组成,每个集群都有一个共同的集群名称作为标识 节点(Node) 一个Es实例就是一个Node.Es的配置文件中可以通过node.ma ...

  7. Elasticsearch 6.x版本全文检索学习之集群调优建议

    1.系统设置要到位,遵照官方建议设置所有的系统参数. https://www.elastic.co/guide/en/elasticsearch/reference/6.7/setup.html 部署 ...

  8. 第十四章 二进制部署k8s集群的平滑升级

    1.软件包下载 去github上下载较新的Kubernetes软件包https://github.com/ 2.升级说明 升级包括master节点升级和node节点的升级,本章升级至v1.15.12: ...

  9. Service Broker应用(2):不同server间的数据传输,包含集群

    不同Server之间的数据传输,包含DB使用AlwaysOn 配置脚本: SQL Server Service Broker 跨集群通信 具体的TSQL 脚本语句如下.注意的是TSQL语句是在发送方还 ...

  10. 使用Rancher Server部署本地多节点K8S集群

    当我第一次开始我的Kubernetes之旅时,我一直在寻找一种设置本地部署环境的方式.很多人常常会使用minikube或microk8s,这两者非常适合新手在单节点集群环境下进行操作.但当我已经了解了 ...

随机推荐

  1. SDUT1466双向队列

    http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=1466&cid=1182 题目描述 想想双向链表……双向队列的定义差不多,也就是说一个队列 ...

  2. 《架构探险——从零开始写Java Web框架》这书不错,能看懂的入门书

    这书适合我. 哈哈,结合 以前的知识点,勉强能看懂. 讲得细,还可以参照着弄出来. 希望能坚持 完成啦... 原来,JSTL就类似于DJANGO中的模板. 而servlet类中的res,req,玩了D ...

  3. ElasticSearch小操之Marvel,Sense

    慢慢弄弄,说不好马上就要用呢,,, 嘿嘿 参考网址: http://es.xiaoleilu.com/ Elasticsearch 权威指南(中文版) 阅读地址:Elasticsearch权威指南(中 ...

  4. THUSC 2016游记

    又去北京转了一圈,拿到了很不错的协议,非常的开森 day -1 6.2 上午去pku的同学就走了QAQ 然后波哥说下午要考试,考联考题 我一脸无奈的表示我已经提前要到题目而且看了题了 然后波哥就决定给 ...

  5. 李洪强漫谈iOS开发[C语言-008]- C语言重难点

      C语言学习的重难点 写程序的三个境界: 照抄的境界,翻译的境界,创新的境界 1  伪代码: 描述C语言的编程范式 范式: 规范的一种表示 对于C的范式学会的话,C, C++ Java 都会了 2 ...

  6. tomcat免重启随意更改java代码 提高开发效率

    转载:http://developer.51cto.com/art/201012/241243.htm 做为了一个java开发人员,总是为因为要增加一个类,或是增加删除一个方法,甚至修改一个小处代码而 ...

  7. 什么是HttpOnly

    1.什么是HttpOnly? 如果您在cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击,具体一点的介绍请google进行搜索 2.ja ...

  8. SVN update: 'skipped' message

    在eclipse中用svn插件同步google code老是服务器连接time out!就只有通过检出项目再更新啦,结果遇到个SVN update: 'skipped' message问题,还是sta ...

  9. Linux下拆分大文件

    linux split 命令 功能说明:切割文件. 语 法:split [--help][--version][-<行数>][-b <字节>][-C <字节>][- ...

  10. fedora如何设置上网

    设置方法如下:第一步:激活网卡.Fedora Linux系统装好后默认的网卡是eth0,用下面的命令将这块网卡激活.# ifconfig eth0 up.第二步:设置网卡进入系统时启动 .想要每次开机 ...