您的位置:首页 > 其它

Elasticsearch笔记——了解Elasticsearch

2017-05-14 00:00 260 查看
摘要: Elasticsearch 基础知识

什么是Elasticsearch?

Elasticsearch是建立在Apache Lucene基础之上的搜索引擎。通过隐藏Lucene的复杂性,取而代之的提供一套简单一致的RESTful API。

Elasticsearch不仅仅只是一个全文搜索引擎,可以被下面这样准确的形容:

1. 一个分布式的实时文档存储,每个字段可以被索引与搜索;

2. 一个分布式实时分析搜索引擎;

3. 能胜任上百个服务节点的扩展,并支持PB级别的结构化或者非结构化数据

安装Elasticsearch

首先需要安装最新的Java版本;之后从elastic官网下载最新版本的Elasticsearch。地址是elastic.co/downloads/elasticsearch

一个Elasticsearch请求组成

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 格式的请求体 (如果请求需要的话)

面向文档

Elasticsearch是面向文档的,意味着她存储整个对象或文档。在Elasticsearch中,对文档进行索引,检索,排序和过滤,而不是对行列数据。Elasticsearch使用JavaScript Object Notation或JSON作为文档的序列化格式。

一个Elasticsearch集群可以包含多个索引,相应的每个索引可以包含多个类型。不同类型存储着多个文档,每个文档又有多个属性。

Elasticsearch与关系数据库对照

一个索引类似于关系数据库中个一个数据库,是一个存储关系型文档的地方;

一个文档类似于关系数据库中的一个表;

关系数据库通过增加索引(比如B-tree)索引到指定列上,以便提升数据检索速度。Elasticsearch和Lucene使用一个叫做倒排索引的结构来达到相同的目的。

索引文档

以雇员为例,对于雇员目录,我们将做如下操作:

1. 每个雇员索引一个文档,包含该雇员所有信息。

2. 每个文档都是employee类型。

3. 该类型位于索引megacorp内。

4. 该索引保存在Elasticsearch集群中。

可以通过一条命令完成所有这些动作:

PUT /megacorp/employee/1
{
"first_name" : "John",
"last_name" :  "Smith",
"age" :        25,
"about" :      "I love to go rock climbing",
"interests": [ "sports", "music" ]
}

注意,路径
/megacorp/employee/1
包含了三部分的信息:

megacorp 索引名称

employee 类型名称

1 特定雇员的ID

检索文档

GET /megacorp/employee/1

将 HTTP 命令由
PUT
改为
GET
可以用来检索文档,同样的,可以使用
DELETE
命令来删除文档,以及使用
HEAD
指令来检查文档是否存在。如果想更新已存在的文档,只需再次
PUT
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: