ElasticSearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用ElasticSearch的水平伸缩性,能使数据在生产环境变得更有价值。

一、核心概念

  • 节点(node)单个Elasticsearch实例,通常一个节点运行在一个隔离的容器或虚拟机中。
  • 集群ClusterES集群是一个或多个节点的集合,它们共同存储了整个数据集,并提供了联合索引以及可跨所有节点的搜索能力。
  • 主节点:主节点的主要职责是和集群操作相关的内容,如创建或删除索引,跟踪哪些节点是群集的一部分,并决定哪些分片分配给相关的节点。
  • 数据节点:存储数据。
  • Mapping: 相当于数据库中的schema,用来约束字段的类型。
  • 其它概念:

es主节点和数据节点分离 es主节点作用_数据

 

  • 分片(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格式的请求主体;

      实例:

es主节点和数据节点分离 es主节点作用_数据_02

 

四、PHP使用Elasticsearch


  • 加载包:composer require elasticsearch/elasticsearch

es主节点和数据节点分离 es主节点作用_搜索_03