elasticsearch特点:基于restful API的分布式、高扩展性、高可用性、实时数据分析的全文搜索引擎。
用作全文检索、结构化搜索、分析以及这三个功能的组合
- 一个分布式的实时文档存储,每个字段 可以被索引与搜索
- 一个分布式实时分析搜索引擎
- 能胜任上百个服务节点的扩展,并支持 PB级别的结构化或者非结构化数据
elasticsearch与关系型数据库的对照
- index:数据库
- type:表
- document:行
- field:列
所有语言可以使用 RESTful API 通过端口 9200 和 Elasticsearch 进行通信
一个 Elasticsearch 请求和任何 HTTP 请求一样由若干相同的部件组成:
<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 格式的请求体 (如果请求需要的话)
例如:
GET 'localhost:9200/_count?pretty' -d '
{
"query": {
"match_all": {}
}
}'
Elasticsearch 是 面向文档 的,它对文档进行索引、检索、排序和过滤–而不是对行列数据。这是一种完全不同的思考数据的方式,也是 Elasticsearch 能支持复杂全文检索的原因。
Elasticsearch 使用JSON 作为文档的序列化格式