什么是Elasticsearch?
1、一个分布式的实时文档存储,每个字段可以被索引和搜索
2、一个分布式实时分析搜索引擎
3、能胜任上百个服务节点的扩展,并支持PB级别的结构化或者非结构化数据
如何使用?
1、通过程序与它提供的简单的RESTful API进行通信
2、可以使用自己喜欢的编程语言充当web客户端,也可以使用命令行
Sense
一个与Elasticsearch交互的可视化
和Elasticsearch交互
Java
1、节点客户端(Node client),作为一个非数据节点加入到本地集群中。即它本身不保存任何数据 ,但是它知道数据在集群中的哪个节点中,并且可以把请求转发到正确的节点。
2、传输客户端(Transport client),将请求发送到远程集群。本身不加入集群,可以将请求转发到集群中的一个节点上
3、两个Java客户端都是通过9300端口并使用Elasticsearch的元素传输协议和集群交互
RESTful API with JSON over HTTP
1、所有其他语言可以使用RESTful API通过端口和Elasticsearch通信,还可以使用web客户端以及curl命令
2、Elasticsearch请求
curl -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>'
被<>标记的部件 | 描述 |
---|---|
VERB | HTTP动词。例如GET、POST …… |
HOST | 集群中任意节点的主机名,或者是localhost代表本地 |
PORT | ES HTTP服务的端口号,默认9200 |
PATH | API的终端路径(例如_count将返回集群中Document数量) |
QUERY_STRING | 任意可选的查询字符串参数(例如 ?pretty 易读) |
BODY | 一个JSON格式的请求体 |
面向文档
1、ES存储整个对象或 文档,而且索引每个文档的内容使之可以被检索。同时,可以对文档进行索引、检索、排序和过滤。
2、ES使用JavaScript Object Notation 或者JSON作为文档的序列化格式
分布式特性
ES屏蔽了分布式系统的复杂性。
一些后台自动执行的操作:
1、分配文档到不同的容器或分片中,文档可以存储在一个或多个节点中
2、按集群节点来均衡分配这些分片,从而对索引和搜索过程进行负载均衡
3、复制每个分片以支持数据备份,从而防止硬件故障导致的数据丢失
4、将集群中任一节点的请求 路由(动词)到存有相关数据的节点
5、集群扩容时无缝整合新节点,重新分配分片以便从离群节点回复
网友评论