ElasticSearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用ElasticSearch的水平伸缩性,能使数据在生产环境变得更有价值。
一、核心概念
- 节点(node):单个Elasticsearch实例,通常一个节点运行在一个隔离的容器或虚拟机中。
- 集群(Cluster):ES集群是一个或多个节点的集合,它们共同存储了整个数据集,并提供了联合索引以及可跨所有节点的搜索能力。
- 主节点:主节点的主要职责是和集群操作相关的内容,如创建或删除索引,跟踪哪些节点是群集的一部分,并决定哪些分片分配给相关的节点。
- 数据节点:存储数据。
- Mapping: 相当于数据库中的schema,用来约束字段的类型。
- 其它概念:
- 分片(shard): 分布在不同节点的数据就是分片. ES自动管理和组织分片, 并在必要的时候对分片数据进行再平衡分配, 所以用户基本上不用担心分片的处理细节. (同一个索引在物理上可以切多个分片,分布到不同的节点上。)
- 副本(replica): ES默认为一个索引创建5个主分片, 并分别为其创建一个副本分片. 也就是说每个索引都由5个主分片成本, 而每个主分片都相应的有一个copy.
- Mapping字段类型: text、keyword、数字类型(integer、float)、array(数组类型,不需要定义)、boolean、date、binary
二、Restful Api
- 核心概念:
Restfull API:通俗的理解就是用URL定位资源,用HTTP动词来表达对资源的操作。
- 实例:
资源描述(用名词):http://api.example.com/v1/user //表示用户信息
资源操作(用动词):
GET:读取(Read)
POST:新建(Create)
PUT:更新(Update)
DELETE:删除(Delete)
例如:
用GET请求http://api.example.com/v1/user 表示获取用户信息
用POST请求http://api.example.com/v1/user表示新增用户
用PUT请求http://api.example.com/v1/user表示更新用户信息
用DELETE请求http://api.example.com/v1/user表示删除用户信息
三、请求
curl与ElasticSearch交互请求格式:curl -X<VERB> '<PROTOCOL>://<HOST>/<PORT>?<QUERY_STRING>' -d '<BODY>'
- VERB:HTTP协议的请求方法,常用的有GET、POST、PUT、HEAD以及DELETE;
- PROTOCOL:协议类型,http或https;
- HOST:ES集群中的任一主机的主机名;
- PORT:ES服务监听的端口,默认为9200;
- QUERY_STRING:查询参数,例如?pretty表示使用易读的JSON格式输出;
- BODY:JSON格式的请求主体;
实例:
四、PHP使用Elasticsearch
- 加载包:composer require elasticsearch/elasticsearch