什么是ElasticSearch,根据其中文文档可以简单定义为以下三点,与传统的关系型数据库还是有较大的区别。
l 一个分布式的实施文档存储,每个字段可以被索引与搜索
l 一个分布式实时分析搜索引擎
l 可以胜任上百个服务节点的扩展,并支持PB级别的结构化或者非结构化数据。
数据输入和输出
1. 文档的定义
在大多数应用中,多数实体或对象可以被序列化为包含健值对的JSON对象。一个健可以是一个字段或字段的名称,一个值可以是一个字符串、数字、布尔值和另外一个对象。
通常情况下,对象和文档是可以相互替换的。不过,有一个区别:一个对象仅仅是类似于hash、hashmap、字典或关联数组的JSON对象,对象中也可以嵌套其他的对象。对象可能包含了另外一些对象。文档是指最顶层或者跟对象,这个根对象被序列化成JSON并存储到ES中,指定了唯一的ID。
2. 文档元数据
一个文档不仅包含它的数据,也包含了元数据,元数据包括了有关文档的信息,有三个必须的元数据元素。_index(文档在哪存放) _type(文档表示的对象类别) _id(文档唯一标识)
l _index。
l _type。
l _id。是一个字符串,当它和_index以及_type组合就可以唯一确定ES中的一个文档。创建一个新的文档时,要么自己提供id,要么让ES帮你生成。
3. 索引文档
4. 取回一个文档
5. 检查文档是否存在
6. 更新整个文档
Elasticsearch请求和HTTP请求类似,由以下几个相同的部件构成
curl -X<VERB>'<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>'-d '<BODY>'
VERB | 适当的 HTTP 方法 或 谓词 : GET`、 `POST`、 `PUT`、 `HEAD 或者 `DELETE`。 |
PROTOCOL | http 或者 https`(如果你在 Elasticsearch 前面有一个 `https 代理) |
HOST | Elasticsearch 集群中任意节点的主机名,或者用 localhost 代表本地机器上的节点。 |
PORT | 运行 Elasticsearch HTTP 服务的端口号,默认是 9200 。 |
PATH | API 的终端路径(例如 _count 将返回集群中文档数量)。Path 可能包含多个组件,例如:_cluster/stats 和 _nodes/stats/jvm 。 |
QUERY_STRING | 任意可选的查询字符串参数 (例如 ?pretty 将格式化地输出 JSON 返回值,使其更容易阅读) |
BODY | 一个 JSON 格式的请求体 (如果请求需要的话) |