增删改查elasticsearch中的文档API的使用

  

<>强文档为何物吗?一个对象就相当于mysql的一个记录记录

<强>

<强>

什么是文档?


程序中大多的实体或对象能够被序列化为包含键值对的JSON对象,键(关键)是字段(领域)或属性(财产)的名字,值(值)可以是字符串,数字,布尔类型,另一个对象,值数组或者其他特殊类型,比如表示日期的字符串或者表示地理位置的对象。

{   ,,,“名字”:,,,,,,,,,”史密斯John ”   ,,,“年龄”:,,,,,,,,,,42岁,   ,,,“确认”:,,,,真的,   ,,,“join_date”:,,,,“2014-06-01”,   ,,,“家”:,{   ,,,,,,,“纬度”:,,,,,,51.5,   ,,,,,,,“朗”:,,,,,,0.1   ,,,},   ,,,“账户”:,(   ,,,,,,,{   ,,,,,,,,,,,“类型”:,“脸谱网”,   ,,,,,,,,,,,“id”:,,,“那”   ,,,,,,,},   ,,,,,,,{   ,,,,,,,,,,,“类型”:,“推特”,   ,,,,,,,,,,,“id”:,,,“那”   ,,,,,,,}   ,,,)   }

通常,我们可以认为对象(object)和文档(document)是等价相通的。不过,他们还是有所差别:对象(Object)是一个JSON结构体——类似于哈希、hashmap、字典或者关联数组;对象(Object)中还可能包含其他对象(Object)。 在Elasticsearch中,文档(document)这个术语有着特殊含义。它特指最顶层结构或者根对象(root object)序列化成的JSON数据(以唯一ID标识并存储于Elasticsearch中)。

文档元数据


一个文档不只有数据。——关于文档的信息。三个必须的元数据节点是:

节点说明

文档存储的地方

文档代表的对象的类

文档的唯一标识

_index


索引(index)类似于关系型数据库里的“数据库”——它是我们存储和索引关联数据的地方。

提示:


事实上,我们的数据被存储和索引在分片(shards)中,索引只是一个把一个或多个分片分组在一起的逻辑空间。然而,这只是一些内部细节——我们的程序完全不用关心分片。对于我们的程序而言,文档存储在索引(index)中。剩下的细节由Elasticsearch关心既可。

我们将会在《索引管理》章节中探讨如何创建并管理索引,但现在,我们将让Elasticsearch为我们创建索引。我们唯一需要做的仅仅是选择一个,不能以下划线开头,不能包含逗号。让我们使用website做为索引名。

_type


在应用中,我们使用对象表示一些“事物”,例如一个用户、一篇博客、一个评论,或者一封邮件。每个对象都属于一个类(class),这个类定义了属性或与对象关联的数据。user类的对象可能包含姓名、性别、年龄和Email地址。

在关系型数据库中,我们经常将相同类的对象存储在一个表里,因为它们有着相同的结构。同理,在Elasticsearch中,我们使用相同类型(type)的文档表示相同的“事物”,因为他们的数据结构也是相同的。+


。所有类型下的文档被存储在同一个索引下,但是类型的映射(mapping)会告诉Elasticsearch不同的文档如何被索引。 我们将会在《映射》章节探讨如何定义和管理映射,但是现在我们将依赖Elasticsearch去自动处理数据结构。

_type的名字可以是大写或小写,不能包含下划线或逗号。我们将使用blog做为类型名。

_id


。当创建一个文档,你可以自定义_id,也可以让Elasticsearch帮你自动生成。

其它元数据


还有一些其它的元数据,我们将在《映射》章节探讨。使用上面提到的元素,我们已经可以在Elasticsearch中存储文档并通过ID检索——换言说,把Elasticsearch做为文档存储器使用了。

[索引]

基于HTTP协议,以JSON为数据交互格式的RESTful API

其他所有程序语言都可以使用RESTful API,通过9200端口的与Elasticsearch进行通信,你可以使用你喜欢的WEB客户端,事实上,如你所见,你甚至可以通过curl命令与Elasticsearch通信。

Elasticsearch官方提供了多种程序语言的客户端——Groovy,Javascript, .NET,PHP,Perl,Python,以及 Ruby——还有很多由社区提供的客户端和插件,所有这些可以在文档中找到。

向Elasticsearch发出的请求的组成部分与其它普通的HTTP请求是一样的:

curl -X '://:/?' -d ''