elasticsearch2.3.5升级到5.1.2

elasticsearch在2.3.5版本中,在写入数据量比较大的时候经常遇到load超高的情况。决定升级到5.1.2看看效果。目前来看升级后机器load有显著降低。
以下记录升级过程中需要注意的一些事情,以及java api和spark api的变化。

升级过程

下载解压

省略

修改jvm参数

修改config/jvm.options

修改机器配置

  1. 修改vm.max_map_count262144以上

    1
    sudo sysctl -w vm.max_map_count=270000

    参考elastic: Maximum map count check

  2. 修改文件描述符大小,将启动es用户的文件描述符大小设置为65536以上

    修改/etc/security/limits.conf

升级

从2.3.x升级到5.x.x,不能采用以前的滚动重启方式,必须将整个集群全部停掉,然后升级后重启。
升级过程主要参考Elastic: Full cluster restart upgrade

插件安装

5.0.0以前版本安装插件使用bin/plugin install,新版本的使用bin/elasticsearch-plugin install

kopf

kopf不再支持es 5.0.0及以上版本。可以使用cerebro代替。

elasticsearch sql

github地址: https://github.com/NLPchina/elasticsearch-sql/

1
./bin/elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-sql/releases/download/5.1.2.0/elasticsearch-sql-5.1.2.0.zip

安装elasticsearch-sql UI界面
5.0.0以后,需要单独安装UI界面。

  1. 安装node js,参考http://www.cnblogs.com/kevin19900306/p/5701281.html
  2. 下载https://github.com/NLPchina/elasticsearch-sql/releases/download/5.1.2/es-sql-site-standalone.zip,解压
  3. 启动

    1
    2
    3
    $ cd site-server
    $ npm install express --save
    $ node node-server.js

kibana

新版本的kibana中自带dev tools,有兴趣可以研究一下xpack

代码方面

java

maven依赖:

1
2
3
4
5
6
7
8
9
10
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>${elasticsearch.version}</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>rest</artifactId>
<version>${elasticsearch.version}</version>
</dependency>

升级maven依赖后,会发现之前代码中有一些api已经改变,根据提示进行修改即可。
另外,新版本中添加了rest方式与elasticsearch进行交互。

spark

maven依赖:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch-spark-13_2.10</artifactId>
<version>5.1.2</version>
<exclusions>
<exclusion>
<artifactId>spark-core_2.10</artifactId>
<groupId>org.apache.spark</groupId>
</exclusion>
<exclusion>
<artifactId>spark-sql_2.10</artifactId>
<groupId>org.apache.spark</groupId>
</exclusion>
</exclusions>
</dependency>

api没有变化。

参考

  1. 大数据杂谈微课堂|Elasticsearch 5.0新版本的特性与改进