基本介绍
ElasticSearch是一个分布式的、高扩展、高实时的一个搜索引擎,它是基于Lucene的一个搜索服务器。
Lucene是什么?它是apache软件基金会 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但不是一个完整的全文搜索引擎,它只是全文搜索引擎的架构,提供完整的查询引擎以及索引引擎,lucene是一个全文检索和搜寻的开源程序库,也可以称之为信息检索程序库,我们应该要注意的是程序库和搜索引擎之间的区别。
ElasticSearch的实现原理主要分为一下几个步骤,首先用户将数据提交到Elastic Search数据库中,再通过分词控制器去将对应的语句 分词,将其权重和分词结果一并存入数据,当用户搜索数据的时候,在根据权重将结果排名,打分,再将返回结果呈现给用户。
Elasticsearch是与名为Logstash的数据收集和日志解析引擎以及名为Kibana的分析和可视化平台一起开发的。这三个产品被设计成一个集成解决方案,称为“Elastic Stack”(以前称为“ELK stack”)。
核心概念
ElasticSearch的一些核心概念与传统认知有一些出入。
分布式相关
- 集群
一个集群cluster由一个或者多个节点组成,具有相同的cluster.name,协同工作,分项数据和负载。当有新的节点加入或者删除了一个节点时,集群回感知到并能够平衡数据。
集群健康状态:有三种状态,green(所有主要分片和复制分片都可用),yellow(所有主要分片可用,但不是所有复制分片都可用),red(不是所有的主要分片都可用)。 - 节点
一个节点node就是一个ElasticSearch的实例。
集群中的一个节点会被选举为主节点master,它将临时管理集群级别的一些变更,譬如新建或者删除索引、增加或者移除节点等等。主节点不参与文档级别的变更或者搜索,所以不会成为集群的瓶颈。任何节点都可以成为主节点。
用户能够与集群中的任何节点通信,包括主节点。每一个节点都知道文档存在于哪个节点上,可以转发请求到相应的节点上。 - 分片
一个分片shard是一个最小级别的工作单元,仅保存了索引中所有数据的一部分。
分片就是一个Lucene实例,并且它本身就是一个完整的搜索引擎。
文档存储在分片中,并且在分片中被索引,但是程序不会直接与分片通信,而是与索引通信。
主分片:
索引中的每个文档属于一个单独的主分片,所以主分片的数量决定了索引最多能存储多少数据。
索引创建完成时,主分片的数量就固定了,但是复制分片的数量可以随时调整。
复制分片:
复制分片仅仅是主分片的一个副本,它可以防止硬件故障导致的数据丢失,同时可以提供读请求,比如搜索或者从别的shard取回文档。
Elastic Search的安装
下载 ElasticSearch
需要的java环境的安装部署就不多介绍了。
下载并解压elasticsearch,然后进入bin 目录,双击执行 elasticsearch.bat,在浏览器中输入:http://localhost:9200,出现以下页面,说明安装成功:
kibana下载
Kibana是一个Web应用程序,你可以通过5601来访问它, 解压后进入Kibana的bin 目录,双击启动 kibana.bat(或者利用终端启动)即可,
然后访问localhost:5601,
kibana需要先启动es服务器,才能进行连接。不然会一直警告未连接
kibana启动成功后;
访问5601端口会出现以下画面:
因为我下载的是最新版本,所以可能与网上的一些图片有一些差异。
在kibana上可以查看es中的各种数据源的数据,索引等信息。