一丶ElasticSearch简介
1.1 什么是ElasticSearch
ElasticSearch简称es, 是一个开源的高扩展的分布式全文检索引擎, 它可以近乎实时的存储, 检索数据; 本身扩展性很好, 可以扩展到上百台服务器, 处理PB级别的数据. es也使用java开发并使用lucene作为其核心来实现所有索引和搜索的功能, 但是它的目的是通过简单RESTful API来隐藏Luncene的复杂性, 从而让全文搜索边的简单
1.2 ElasticSearch和Solr对比
- solr利用zookeeper进行分布式管理, 而Elasticsearch自身带有分布式协调管理功能;
- solr支持更多格式的数据, 而Elasticsearch仅支持文件格式
- solr官方提供的功能更多, 而es本身更注重核心功能, 高级功能多有第三方插件提供;
- solr在传统的搜索应用中表现好于es, 但是在处理应用时效率明显低于es
二丶ElasticSearch安装与启动
2.1 安装
ElasticSearch点击下载, 解压以后即使安装
2.2 启动
ES启动, 在bin目录下启动以后, 访问
http://localhost:9200/
即可访问.
三丶 ElasticSearch相关概念
3.1 索引 index
一个索引就是拥有几分相似特征的文档的集合. 比如说. 你可以有一个客户数据的索引, 另一个产品目录的索引, 还有一个订单数据的索引. 一个索引由一个名字来标识(必须全部是小写字母), 并且当我们要对对应于这个索引中的文档进行索引, 搜索, 更新, 删除的时候, 都要使用到这个名字, 在一个集群中, 可以定义任意多的索引.
3.2 类型 type
在一个索引中, 你可以定义一种或者多种类型, 一个索引是你的索引的一个逻辑上的分类/分区, 其语义完全由你来定, 通常会具有一组共同字段的文档定义一个类型. 比如说: 我们假设你运营一个博客平台, 并且将你所有的数据存储到一个索引中. 在这个索引中, 你可以为用户数据定义一个类型, 为博客数据定义另一个类型, 当然, 也可以为评论数据定义另外一个类型.
3.3 字段 filed
相当于数据表的字段, 对文档数据根据不同属性进行的分类标识
3.4 映射mapping
mapping是处理数据的方式和规则方面做的一些限制, 比如某个字段的数据类型, 默认值, 分析器, 是否被索引等等, 这些都是映射里面可以设置的, 其他就是处理es里面数据的一些使用规则设置也叫作映射, 按照最优规则处理数据对性能提高很大, 因此才需要建立映射, 并且需要思考如何建立映射才能对性能更好.
3.5 文档 document
一个文档是一个可被索引的基础信息单元, 比如, 你可以拥有某个客户的文档, 某一个产品的文档, 当然, 也可以有用某个订单的一个文档, 文档以json格式来标识, 而json是一个到处存在的互联网数据交互格式
四丶ElasticSearch集群
4.1 集群cluster
一个集群就是由一个或多个节点组织在一起, 它们共同持有整个的数据, 并一起提供索引和搜索功能, 一个集群由一个唯一的名字标识, 整个名字默认就是elasticsearch, 整个名字是重要的, 因为一个节点只能通过制定某个集群的名字来加入这个集群
4.2 es集群架构
es集群架构4.3 集群的搭建
4.3.1 准备3台elasticsearch服务器
创建elasticsearch-cluster文件夹, 在内部复制三个elasticsearch服务(且每个服务内部的data文件夹必须是干净的)
4.3.2 修改每台服务器的配置
修改elasticsearch-cluster\node*\config\elasticsearch.yml配置文件
- node1节点
#节点1的配置信息:
# 集群名称, 保证唯一
cluster.name: my-elasticsearch
# 节点名称: 必须不一样
node.name: node-1
# 必须为本机的ip地址
network.host: 127.0.0.1
# 服务端口号, 在同一台机器下必须不一样
http.port: 9201
# 集群间通信端口号, 在同一机器下必须不一样
transtport.tcp.port: 9301
#设置集群自动发现机器ip集合
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9301", "127.0.0.1:9302", "127.0.0.1:9303"]
- node2节点
#节点1的配置信息:
# 集群名称, 保证唯一
cluster.name: my-elasticsearch
# 节点名称: 必须不一样
node.name: node-2
# 必须为本机的ip地址
network.host: 127.0.0.1
# 服务端口号, 在同一台机器下必须不一样
http.port: 9202
# 集群间通信端口号, 在同一机器下必须不一样
transtport.tcp.port: 9302
#设置集群自动发现机器ip集合
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9301", "127.0.0.1:9302", "127.0.0.1:9303"]
- node3节点
#节点1的配置信息:
# 集群名称, 保证唯一
cluster.name: my-elasticsearch
# 节点名称: 必须不一样
node.name: node-3
# 必须为本机的ip地址
network.host: 127.0.0.1
# 服务端口号, 在同一台机器下必须不一样
http.port: 9203
# 集群间通信端口号, 在同一机器下必须不一样
transtport.tcp.port: 9303
#设置集群自动发现机器ip集合
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9301", "127.0.0.1:9302", "127.0.0.1:9303"]
网友评论