Elasticsearch安装(kibana、ik分词器、pinyin分词器、ingest-attachment)

关于Elasticsearch的传说

有一个程序猿失业了,陪着自己的老婆去英国学习厨师课程,他想给自己的老婆写一个菜谱搜索引擎,觉得Lucene太复杂了,就开发了一个Lucene的开源项目compass,后来在工作中觉得不够好用,接写了Elasticsearch,让Luncene变成分布式系统。

不论这个传说的真假,事实上Elasticsearch就是基于luncene之上封装开发的,隐藏复杂性,提供简单易用的RestFul APi接口,提供了全文检索、结构性检索、数据分析等等很多高级特性,是一个分布式、高扩展、高实时的搜索与数据分析引擎。

核心概念

(1) Near Realtime (NRT),近实时,写入数据到可以被搜索到和执行搜索和分析都可以达到秒级
(2) Cluster,集群,包含多个节点,每个节点属于那个集群通过配置文件配置
(3) Node,节点,集群中的一个几点
(4) Document 和 Field,es中的最小数据单元,一个document可以是一条数据通常用json格式表示,一个document包含多个fileld。field相当于数据库的字段,document相当于一条数据
(5) Index,索引,包含一堆有相似结构的文档数据,一个index可以包含很多的document,一个index代表一类类似的或者相同的document,相当于数据库中的Database。
(6) Type,l类型,每个索引里都可以有一个或多个type,type是index中的一个逻辑数据分类,相当于数据库中的Table。(6.0以前的版本,6.0以后不建议使用,7.0以后已经完全删除掉)
(7) shard,分片,单台机器无法存储大量数据,es可以将一个索引中的数据切分为多个shrard,分布在多台服务器上存储
(8) replica,复制,任何一个服务器随时可能故障或者宕机,此时shard会丢失,因此可以为每个shard创建多个replica副本。Elasticsearch允许你创建分片的一份或多份拷贝,这些拷贝叫做复制分片,或者直接叫复制。复制之所以重要,主要有两方面的原因:
在分片/节点失败的情况下,提供了高可用性。因为这个原因,注意到复制分片从不与原/主要(original/primary)分片置于同一节点上是非常重要的。
扩展你的搜索量/吞吐量,因为搜索可以在所有的复制上并行运行

默认情况下,Elasticsearch中的每个索引被分片5个主分片和1个复制,这意味着,如果你的集群中至少有两个节点,你的索引将会有5个主分片和另外5个复制分片(1个完全拷贝),这样的话每个索引总共就有10个分片。一个索引的多个分片可以存放在集群中的一台主机上,也可以存放在多台主机上,这取决于你的集群机器数量。主分片和复制分片的具体位置是由ES内在的策略所决定的。

下载安装

https://www.elastic.co/cn/downloads/past-releases

linux安装启动

下载tar包,解压, cd到解压目录下的bin目录,./elasticsearch 启动
启动命令:./elasticsearch
后台启动:./elasticsearch -d
然后再打开个连接 ,测试 curl 127.0.0.1:9200
//如果有防火墙记得开启9200端口
远程访问:
需要对config/elasticsearch.yml进行配置 netword.host:
0.0.0.0,任何ip都可以连接
//es后台启动
./elasticsearch -d

启动过程中常见问题

StartupException: java.lang.RuntimeException: can not run elasticsearch as root

解决方式:
1.启动命令添加参数
	bin/elasticsearch -Des.insecure.allow.root=true
2.修改配置文件
	修改bin/elasticsearch,添加ES_java_OPTS属性:
	ES_JAVA_OPTS="-DEs.insecure.allow.root=true"		 

ERROR: D is not a recognized option

//建议创建一个单独的用户用来运行elasticsearch:
groupadd esgroup -- 创建用户组
useradd esuser -g esgroup -p espassword --创建用户

//更改elasticsearchwe用户及用户组
cd到elasticsearch的解压目录
chown -R esuser.esgroup elasticsearch-6.2.4
//然后切换用户运行elasticsearch

max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
//elasticsearch用户拥有的可创建文件描述的权限太低,至少需要65536;

//切换到root用户修改
vim /etc/security/limits.conf
//在最后面追加下面内容
*** hard nofile 65536
*** soft nofile 65536
 
***  是启动ES的用户
source该文件会报错,重新打开一个链接即可

max number of threads [3818] for user [es] is too low, increase to at least [4096]
//最大线程数过低

//同上文件  
***    soft    nproc           4096
***    hard    nproc           4096



vi /etc/security/limits.d/90-nproc.conf
修改
*         soft   nproc    1024
为
*         soft   nproc    4096

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
//最大虚拟内存区域vm.max_map_count[65530]太低,请至少增加到[262144]


 max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
 //最大虚拟内存区域vm.max_map_count[65530]太低,请至少增加到[262144]
//切换到root用户修改
vi /etc/sysctl.conf 
//在最后面追加下面内容
vm.max_map_count=655360
source该文件或者重新打开一个链接

ERROR: [2] bootstrap checks failed
[1]: system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
[2]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured

在 elasticsearch.yml中添加配置项:bootstrap.system_call_filter为false:
 
bootstrap.memory_lock: false
bootstrap.system_call_filter: false

安装Head插件

Head是elasticsearch的集群管理工具,可以用于数据的浏览和查询

elasticsearch-head被托管在githun上,所以需要先安装git,通过git获取elasticsearch-head

运行elasticsearch-head需要grunt,而grunt需要npm包管理器,所以也需要安装node.js

//安装git
yum -y install git
//安装node
//下载
wget https://nodejs.org/dist/v10.16.3/node-v10.16.3-linux-x64.tar.xz
//解压
xz -d node-v10.16.3-linux-x64.tar.xz
tar -xf node-v10.16.3-linux-x64.tar
//确认下载路径,创建软连接
ln -s /usr/local/nodejs/node-v10.16.3-linux-x64/bin/node /usr/bin/node
ln -s /usr/local/nodejs/node-v10.16.3-linux-x64/bin/npm /usr/bin/npm
ln -s /usr/local/nodejs/node-v10.16.3-linux-x64/bin/npm /usr/bin/npx
//测试
node -v

下载head插件,安装依赖包

//下载head插件
git clone git://github.com/mobz/elasticsearch-head.git
//安装依赖包
npm install -g grunt-cli
//然后进安装淘宝镜像,否则下载会非常慢
$ npm install -g cnpm --registry=https://registry.npm.taobao.org  
//进入到elasticsearch-head目录,安装所有依赖
cnpm install   
//如果提示command not found 需要创建软cnpm连接则可以全局使用cnm
ln -s /usr/local/nodejs/node-v10.16.3-linux-x64/bin/cnpm /usr/local/bin/
//修改grunt.js
//进入head目录下的
vim Gruntfile.js
搜索connect,在起下面的server-->options中添加hostname:'*',允许所有IP可以访问
//修改elasticsearch-head默认连接地址
进入head下的_site目录 vi app.js,搜索localhost,将其替换为es服务器的IP
//配置es允许跨域访问
进入es目录下的config vim elasticsearch.yml
在结尾添加 
http.cors.enabled: true
http.cors.allow-origin: '*'
//如果有防火墙,记得开启9100端口

启动elasticseearch-head

进入head目录下的node_modulesm目录,
./grunt/bin/grunt server
浏览器可以通过IP:9100进行访问

安装Kibana

Kibana是一个针对elasticsearch的开源分析及可视化平台,使用kibana可以查询、查看并与存储在es的索引数据进行交互操作,相对于head插件,它可以执行更高级的数据分析,并能以图标、表格和地图的形式查看数据

下载地址还是
https://www.elastic.co/cn/downloads/past-releases
版本号同elasticsearch保持一致即可
解压后,mv kibana-6.2.4-linux-x86_64 kibana-6.2.4
进入kibana下的config,vim kibana.yml
将server.host的值localhost改为当前服务器地址
将elasticsearch.url的localhost改为es服务器地址
//如果有防火墙,开启5601端口

启动Kibana

./bin/kibana
测试访问 http://IP:5601

中文分词器和拼音分词器安装

拼音分词器下载地址:
https://github.com/medcl/elasticsearch-analysis-pinyin
中文分词器下载地址
https://github.com/medcl/elasticsearch-analysis-ik

//版本号要和es版本号对应
下载elasticsearch-analysis-ik-6.2.4.zip 
//然后再本地通过mvn命令进行打包
mvn clean install -Dmaven.test.skip=true
elastisearch/plugins/下创建ik文件夹
//然后将target下的zip包复制到elastisearch目录下的plugins下,解压
//然后将解压目录下的所有文件移动到elastisearch/plugins/ik下,删除压缩包

//拼音分词器和上述操作步骤相同,只是文件目录不同,在elastisearch/plugins目录下创建pinyin文件夹

验证

验证中文分词器:重启es服务器,启动日志会打印[o.e.p.PluginsService ] [apYgDEl] loaded plugin [analysis-ik]
验证拼音分词器:重启es服务器,启动日志会打印[o.e.p.PluginsService ] [apYgDEl] loaded plugin [analysis-pinyin]

ES的使用,kibana的使用,es架构思路、复杂查询实现,请移步ElasticSearchsh的使用

ingest-attachment插件的安装

下载地址:https://www.elastic.co/guide/en/elasticsearch/plugins/6.2/intro.html
其他版本更改响应的版本号即可

下载好后上传到服务器,进入elasticsearch安装目下的bin目录下。
执行sudo ./elasticsearch-plugin install file:///home/ingest-attachment-6.2.4.zip
即可
重启 打印 [apYgDEl] loaded plugin [ingest-attachment] 表示安装成功

安装报错

could not find java; set JAVA_HOME or ensure java is in PATH

解决方法:
		1.执行echo $PATH 命令,查看环境变量是否存在java环境变量
		
		2.如果不存在重新检查java环境变量配置,如果存在则执行 set |grep JAVA_HOME 查看系统变量是否存在java环境变量,没有则配置
		3.配置好后,再次执行安装命令还是报错,则需要创建环境变量的软连接
		 ln -s /usr/local/jdk/bin/java   /usr/bin/java
		 再次执行安装命令即可

elasticsearch directory is missing in the plugin zip

解决方法:
		 版本不匹配,下载对应版本重新安装
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当涉及到Elasticsearch (ELK) 集群恢复时,通常需要根据具体情况执行一些操作,因为可能涉及数据损坏、节点故障或其他问题。不过,我可以提供一些基本的步骤和可能使用的命令,但请注意,实际操作时可能需要根据您的集群配置和环境进行调整。 1. **停止集群**: 如果集群仍在运行并需要恢复,首先应停止所有节点以防止进一步的数据冲突。 2. **检查错误日志**: 使用 `grep` 或 `cat /path/to/elasticsearch/logs/*` 命令查看错误日志,找出问题的具体原因。 3. **备份数据**: 在进行任何修改前,最好先备份重要数据,如使用 `curl` 或 `aws s3 cp` (如果在Amazon S3上)命令。 4. **修复或替换损坏文件**: 如果有数据文件损坏,可以尝试修复(比如使用 `fsck` 或者 `elasticsearch-transport-tool`)或替换损坏的文件。 5. **使用`snapshot/restore`**: 如果是基于快照恢复,使用 `curl -XPOST '/_snapshot/<snapshot_name>/_restore'` 命令,替换 `<snapshot_name>` 为实际的快照名称。 6. **恢复单个节点**: 使用 `elasticsearch-ingest-attachment-plugin` 或其他插件的恢复命令,例如 `bin/plugin -i elasticsearch-ingest-geoip`。 7. **验证恢复**: 恢复后,启动一个节点,并通过 `GET _cluster/health?pretty` 检查集群健康状况。 8. **手动加入节点**: 使用 `bin/elasticsearch-join <node_address>` 来添加恢复的节点到集群。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值