检索文档(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. [Ruby on Rails系列]6、一个简单的暗语生成器与解释器(上)

    [0]Ruby on Rails 系列回顾 [Ruby on Rails系列]1.开发环境准备:Vmware和Linux的安装 [Ruby on Rails系列]2.开发环境准备:Ruby on Ra ...

  2. 解决maven-dependency-plugin (goals "copy-dependencies", "unpack") is not supported by m2e.错误

    POM文件报错maven-dependency-plugin (goals "copy-dependencies", "unpack") is not supp ...

  3. 套题T6

    过节(festival.cpp/c/pas) Dxy帮老师们过教师节的时候需要购买礼物.货架上有n 种礼物,每种礼物有不同的个数.每种礼物有价值和花费两种属性,帮他算出最大可以得到的价值.M是带的钱数 ...

  4. uCos的多任务实现

    uCos的多任务实现 作为操作系统(OS),最基本的一项服务就是提供多线程,在实时操作系统uCos里,多线程被称为多任务(Task).多任务并不是CPU能真正同时运行多个程序,实际是靠CPU在多个任务 ...

  5. ios开发跳转

    如果我的是A->B->C后,我想直接从 C->A 应该怎么做???这是我的问题    看了这个帖子不太明白      这是10楼的解决办法 , 虽然 写的很清楚 ,但是还是没懂啊  ...

  6. 是什么让 Ubuntu 选用 Qt 而不是 GTK?

    是什么让 Ubuntu 选用 Qt 而不是 GTK? 一个正在发生的事实,Ubuntu正在不断Qt化!我曾一直在抱怨的Software Center,今日一看源码,竟然有softwarecenter/ ...

  7. WCF入门(八)---WCF服务绑定

    WCF服务绑定是一个集合,每个元素定义了服务与客户端进行通信方式的几个元素.传输元素和一个消息编码元素各自结合两个最重要的组成部分.这里是WCF服务绑定常用的列表. 基础绑定 基础约束是由basicH ...

  8. javascript grunt安装和使用

    grunt是javascript世界的构建工具. 为何要用构建工具? 一句话:自动化.对于需要反复重复的任务,例如压缩(minification).编译.单元测试.linting等.自动化工具可以减轻 ...

  9. (3)TXT转为XML

    <?xml version="1.0" encoding="utf-8"?> <bocb2e> <head /> <t ...

  10. IOS把文件保存进沙盒目录

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); NSS ...