背景

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 

ElasticSearch5和6版本简述和安装(windows和linux)_linux安装elasticsearch

Elasticsearch的所有版本都有四种打包格式:ZIP、TAR、DEB、RPM,我们使用ZIP就可以了。

目录结构

ElasticSearch5和6版本简述和安装(windows和linux)_elasticsearch_02

  • 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进行启动:稍等一两分钟

ElasticSearch5和6版本简述和安装(windows和linux)_安装elasticsearch_03

启动成功

运行测试

在浏览器里测试一下:访问:http://127.0.0.1:9200/

ElasticSearch5和6版本简述和安装(windows和linux)_es_04

让我们看看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一致!