专栏首页Hadoop数据仓库触类旁通Elasticsearch:安装

触类旁通Elasticsearch:安装

一、安装并启动ES

# 解压
tar -zxvf elasticsearch-6.4.3.tar.gz

# 启动
cd elasticsearch-6.4.3
bin/elasticsearch -d

# 查看
jps
more logs/elasticsearch.log

# 验证
curl localhost:9200

输出如下,缺省的集群名称为elasticsearch,已经启动一个名为“yO9AEg-”的节点。

{
  "name" : "yO9AEg-",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "zMWKHBhsS92T0Xh0adr2hw",
  "version" : {
    "number" : "6.4.3",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "fe40335",
    "build_date" : "2018-10-30T23:17:19.084789Z",
    "build_snapshot" : false,
    "lucene_version" : "7.4.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

二、安装head

head是ES最早的插件之一,它通过浏览器访问ES集群,让集群状态和索引的管理更为轻松,而且让我们可以通过更具吸引力的用户界面来执行查询。

1. 安装 nodejs

# 下载                               
wget https://nodejs.org/dist/v8.11.1/node-v8.11.1-linux-x64.tar.xz   
    
# 解压
tar -xvf  node-v8.11.1-linux-x64.tar.xz 
                                                                         
# 创建软链接,执行以下命令设置全局有效,需要root用户操作
ln -s /home/elasticsearch/node-v8.11.1-linux-x64/bin/npm /usr/local/bin/ 
ln -s /home/elasticsearch/node-v8.11.1-linux-x64/bin/node /usr/local/bin/

2. 安装head插件

# 下载 
wget https://github.com/mobz/elasticsearch-head/archive/master.zip

# 解压 
unzip master.zip

# 建立软连接                                                
ln -s elasticsearch-head-master head 

# 安装head
cd head
npm install
                                                                         
# 启动head插件
nohup npm run start &

3. 为head配置ES

vi /home/elasticsearch/elasticsearch-6.4.3/config/elasticsearch.yml

添加如下内容并保存:

network.host: 172.16.1.127
http.cors.enabled: true
http.cors.allow-origin: "*"
# 重启ES
jps | grep Elasticsearch | awk '{print $1}' | xargs kill
~/elasticsearch-6.4.3/bin/elasticsearch -d

4. 使用head

在浏览器输入:http://172.16.1.127:9100/

在head中的地址栏输入如下地址并点击“连接”按钮:http://172.16.1.127:9200/

显示具有一个节点,没有任何数据的ES集群,如图1所示:

图1

三、装载数据

1. 装载elasticsearch-in-action示例

# 下载
git clone https://github.com/dakrone/elasticsearch-in-action.git -b 6.x

# 装载数据
elasticsearch-in-action/populate.sh 172.16.1.127:9200

从head查看结果如图2所示:

图2

可以看到已经创建了4个索引,共有17个主分片。其中get-together有两个分片,包含20个文档,其它三个索引每个有5个分片,但都没有数据。当前集群健康值为yellow,因为当前只有一个节点,存储17个主分片,但无法分配副本分片。

2. 装载elasticsearch官方文档提供的示例数据

# 批量装载数据 
curl -H "Content-Type: application/json" -XPOST "172.16.1.127:9200/bank/_doc/_bulk?pretty&refresh" --data-binary "@accounts.json"

从head查看结果如图3所示:

图3

可以看到创建了一个名为bank的索引,它有5个主分片,1份副本,包含1000个文档。

3. 使用Kettle装载数据

注意要向ES6装载数据,需要使用Kettle 8.2或以上版本。这里使用Kettle 8.2将一个本地MySQL数据表迁移到ES6中。转换配置如图4-图7所示:

图4

图5

图6

图7

从head查看结果如图8所示:

图8

可以看到创建了一个名为dbinfo的索引,它有5个主分片,1份副本,包含146个文档。

三、增加节点

现在向ES集群中增加172.16.1.125、172.16.1.124两个节点。

  1. 在两个节点上安装ES,方法见前面“一、安装并启动ES”
  2. 修改ES配置文件,采用单播方式发现节点,127的elasticsearch.yml内容如下,126、125的类似,仅node.name和network.host不同。
cluster.name: ES_cluster
node.name: node127
http.port: 9200
network.host: 172.16.1.127
http.cors.enabled: true
http.cors.allow-origin: "*"
discovery.zen.ping.unicast.hosts: ["172.16.1.125","172.16.1.126","172.16.1.127"]

network.bind_host: 0.0.0.0
discovery.zen.minimum_master_nodes: 2
discovery.zen.fd.ping_retries: 6
discovery.zen.fd.ping_interval: 30s
xpack.security.enabled: false

启动三个节点后,从head查看结果如图9所示:

图9

可以看到集群名称改为ES_cluster,集群健康值变为green,所有主分片和副本分片自动重新分布到三个节点上,并选举126为主节点。

五、安装kibana

kibana可以用来监控ES集群状态,安装非常简单,只要注意kibana要和ES的版本一致即可。从官网下载kibana-6.4.3-linux-x86_64.tar.gz文件。

# 解压
tar -zxvf kibana-6.4.3-linux-x86_64.tar.gz

# 修改配置
cd kibana-6.4.3-linux-x86_64
vi config/kibana.yml

修改以下两个地方:

server.host: "172.16.1.127"
elasticsearch.url: "http://172.16.1.127:9200"
# 启动
nohup bin/kibana &

使用kibana,在浏览器输入:http://172.16.1.127:5601/

通过kibana监控ES集群,如图10所示:

图10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • springboot整合elasticsearch 5.x 6.x 索引配置analyzer

    跟随elasticsearch和ik的安装和function score query 权重分查询教程,发现权重分查询结果与预期不符,判断原因是:在查询中,ik没...

    平凡的学生族
  • es6-开篇

    相应的,后边推出的ES7、8、9、10等都依次是上一版本发出后一年的新迭代版本。不过很多仍是提案,并不被浏览器支持。

    xing.org1^
  • 这本 JavaScript 教程的作者,拥有 20 多年 Web 开发经验!

    这主要得益于近几年 Native React、Weex 等跨平台移动端开发框架,以及 Electron、NW.js 等跨平台桌面端开发框架的兴起,间接推动了 J...

    GitHubDaily
  • JS 调用栈机制与 ES6 尾调用优化介绍

    调用栈的英文名叫做Call Stack,大家或多或少是有听过的,但是对于js调用栈的工作方式以及如何在工作中利用这一特性,大部分人可能没有进行过更深入的研究,这...

    OBKoro1
  • ES6中的迭代器、Generator函数以及Generator函数的异步操作

    最近在写RN相关的东西,其中涉及到了redux-saga ,saga的实现原理就是ES6中的Generator函数,而Generator函数又和迭代器有着密不可...

    lizelu
  • ES10新特性(二)

    此更新修复了字符 U+D800 到 U+DFFF 的处理,有时可以进入 JSON 字符串。 这可能是一个问题,因为 JSON.stringify 可能会将这些数...

    ConardLi
  • Webpack 4教程 - 第七部分 减少打包体积与Tree Shaking

    在本次Webpack 4教程中,我们会更进一步讲述项目优化。我们会学习什么是tree shaking以及如何使用它。你会找到让Webpack 4中tree sh...

    葡萄城控件
  • 迭代器与 for of的使用和原理

    看着很简单,但是再回顾这段代码,实际上我们仅仅是需要数组中元素的值,但是却需要提前获取数组长度,声明索引变量等,尤其当多个循环嵌套的时候,更需要使用多个索引变量...

    ConardLi
  • 【ES6基础】Set 与 WeakSet

    在开发过程中,我们会经常使用到数组Array这种引用类型的数据结构,并十分清楚数组是种有序的集合,并且每个元素都可以使用数字下标的形式获取。但是在一些业务场景中...

    前端达人
  • ES6-Babel编译环境搭建

    里边的一个核心功能就是transform,把js代码编程抽象语法树AST。只要变成抽象语法树后,后期的插件才能根据这个抽象语法树进行降级,转成es5。

    xing.org1^

扫码关注云+社区

领取腾讯云代金券