背景
elasticsearch可用于海量数据实时搜索,日志分析ELK,数据分析等。
简介
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。它是用Java开发的,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
官网:
https://www.elastic.co/ 或 https://www.elastic.co/webinars/getting-started-elasticsearch
ElasticSearch的特性
对于ES的特性,根据网上的描述总结出以下内容:
- 1、 开源的(不解释)
- 2、 它是分布式和高度可用的搜索引擎。每个索引根据配置分片的数量完成完全分片。
- 每个碎片都可以有一个或多个副本。
- 读/搜索操作可以在任何复制分片上执行。
- 3、 支持多租户与多种类型。支持一个以上的索引。
支持一个以上的每个索引类型。
指数级配置(数量的碎片,索引存储,…)。
4、 各种组apiHTTP RESTful API
本地Java API。
所有api执行自动从路由节点操作。
5、 面向文档的
6、 可靠异步写操作长期持续。
7、 (附近)实时搜索。
8、 基于Lucene每个碎片都是一个功能齐全的Lucene索引
所有Lucene通过简单的配置/插件非常容易的暴露出来。
9、 每个操作的一致性单文档级别操作都是原子的、一致的、孤立的和持久的。
对于ES了解一个大概情况就可以了。下面我们下载和安装ES(我们以windows操作系统和Elasticsearch 5.6.3为例):
下载
通过搜索下载:https://www.elastic.co/cn/downloads/past-releases#elasticsearch
或 下载地址:https://www.elastic.co/cn/downloads
Elasticsearch的所有版本都有四种打包格式:ZIP、TAR、DEB、RPM,我们使用ZIP就可以了。
目录结构
- bin:可以执行文件,Elasticsearch命令
- config:配置文件
- data:es存放数据的文件
- lib:运行所需类库
- logs:日志文件
- modules:加载模块列表(其实是必要插件)
- plugins:插件文件(需要自定义安装)
注:刚解压的ES并没有这么多目录,只有bin、config、lib、modules,其他都是在第一次运行之后自动生成的。
windows安装步骤
注意ES依赖指定版本的JDK环境;
所以前提配置java的jdk,ES-5.6.3需要JDK1.8环境;
启动ES:
直接点击:elasticsearch.bat进行启动:稍等一两分钟
启动成功
运行测试
在浏览器里测试一下:访问:http://127.0.0.1:9200/
让我们看看JSON的每个字段代表的含义:
- Ok:当为true时,意味着请求成功。
- Status:发出请求后的HTTP的错误代码。200表示一切正常。
- Name:我们Elasticsearch实例的名字。在默认情况下,它将从一个巨长的名字列表中随机选择一个。
- Version:这个对象有一个number字段,代表了当前运行的Elasticsearch版本号,和一个Snapshot_build字段,代表了你当前运行的版本是否是从源代码构建而来。
- Tagline:包含了Elasticsearch的第一个tagline: “You Know, for Search.”
linux安装步骤
安装jdk1.8+
es 5.*,需要jdk1.8以上版本支持
参考:linux安装jdk
下载、解压、启动命令
# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.15.tar.gz
# tar -zxvf elasticsearch-5.6.15
# cd elasticsearch-5.6.15
# sh ./bin/elasticsearch
elasticsearch部分配置详解
- 集群名字,可以自定义;es启动后会将同一网段下具有相同集群名字的节点放到一个集群下。
cluster.name: mycluster
- 节点名字,默认的节点名字是一串随机字符串,而且每次启动都会不一样。自定义之后查看日志会方便一点。同一集群中不同节点应该取不一样的名字。
node.name:"node-1"
三个节点名字可以分别是:node-1,node-2,node-3
- 设置数据以及日志的路径。默认情况下,Eleasticsearch会把插件、日志以及最重要的数据放在安装目录下;建议自定义。
path.data: /data/apps/es
path.logs: /data/logs/es
- 设置绑定的ip地址以及与其它节点交互的IP地址,设置为0.0.0.0(允许所有ip访问)即可。
network.host:0.0.0.0
- 设置是否打开多播方式发现节点,默认是true。生产环境中建议把多播关闭,因为某个节点可能会意外加入一个集群。建议使用单播方式。
discovery.zen.ping.multicast.enabled:false
- 指定集群中的节点中有几个有master资格的节点。这个配置就是告诉Elasticsearch当没有足够master候选节点的时候,就不要进行master选举,等master候选节点足够了才进行选举。这个配置有助于防止集群分裂。推荐个数就是(master候选节点个数*2)+1。视具体情况而定。如果有两个节点,那么就遇到难题了,推荐数当然是2,但是这意味着如果有一个节点挂掉,整个集群就不可用了。设置成1可以保证集群的功能,但是就无法保证集群分裂了,那么这样的情况,最好至少保证有3个节点。
covery.zen.minimum_master_nodes:2
- discovery.zen.ping.unicast.hosts:["节点1的 ip","节点2 的ip","节点3的ip"]
指明集群中其它可能为master的节点ip,以防es启动后发现不了集群中的其他节点。第一对引号里是node1。第二个是 node2 。
discovery.zen.ping.unicast.hosts: ["192.168.10.29","192.168.10.30"]
elasticsearch的默认对外服务的http端口号是9200,节点间交互的tcp端口号是9300。
卸载elasticsearch 5.6.15版本
直接删除安装目录!
重新安装elasticsearch 6.5.4版本,步骤和5一致!