前言
Elasticsearch作为主流的搜索引擎,在分布式系统中占据着不可或缺的地位,文章重点介绍它的安装和使用。
Elasticsearch介绍
Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
官网:https://www.elastic.co/cn/elasticsearch/
Elasticsearch概念
Elasticsearch 可以理解成一种数据库,类似MySQL,也可以对数据进行增删改查,它优势是搜索速度快,如果表中有上亿级别的数据,使用ES检索数据要远远快于传统的关系型数据库。
把ES中的概念和MySQL对比,就比较好理解了。
MySQL | Elasticsearch |
---|---|
数据库database | 索引index |
表table | 类型type |
字段field | 属性property |
记录record/data | 文档document |
Elasticsearch安装
Elasticsearch不允许使用root用户,所以需要新建用户
新建用户
useradd xray
配置密码
passwd xray
切换用户
su xray
上传和解压
tar -zxvf elasticsearch-6.2.4.tar.gz
重命名目录
mv elasticsearch-6.2.4/ elasticsearch
进入目录
cd elasticsearch
新建目录
mkdir data
mkdir logs
修改配置
cd config
vi elasticsearch.yml
添加内容
path.data: /usr/local/elasticsearch/data # 数据目录位置
path.logs: /usr/local/elasticsearch/logs # 日志目录位置
修改绑定的ip
network.host: 0.0.0.0 # 绑定到0.0.0.0,允许任何ip来访问
其他可配置信息:
运行
./bin/elasticsearch
可能的错误:
错误1:内核过低
在elasticsearch.yml下面添加配置:
bootstrap.system_call_filter: false
禁用这个插件,然后重启
错误2:文件权限不足
[1]max file descriptors…是文件权限不足
用root登录,然后修改配置文件:
vim /etc/security/limits.conf
添加下面的内容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 4096
* hard nproc 4096
错误3:线程数不足
[2]: max number of threads … 是线程数不足
修改配置:
vim /etc/security/limits.d/20-nproc.conf
修改下面的内容:
* soft nproc 1024
改为:
* soft nproc 4096
错误4:进程虚拟内存不足
[3]: max virtual memory… 进程虚拟内存不足
修改配置文件:
vim /etc/sysctl.conf
添加下面内容:
vm.max_map_count=655360
然后执行命令:
sysctl -p
再次启动ES
两个端口:
9300:集群节点间通讯接口
9200:客户端访问接口
我们在浏览器中访问
Kibana安装
Kibana是ES的客户端工具
需要先安装nodejs
tar -vxf node-v12.18.2-linux-x64.tar.xz
mv node-v12.18.2-linux-x64 nodejs
ln -s /usr/local/nodejs/bin/node /usr/local/bin
ln -s /usr/local/nodejs/bin/npm /usr/local/bin
node -v
解压kibana
tar -vxf kibana-6.2.4-linux-x86_64.tar.gz
mv kibana-6.2.4-linux-x86_64 kibana
修改 config/kibana.yml 添加
server.host: "0.0.0.0"
elasticsearch.url: "http://机器IP:9200"
启动
./bin/kibana
kibana的端口是5601,在浏览器打开后,可以测试查询
安装分词器
分词器能把一个字符串拆分成多个单词,搜索时再按每个单词分别索引,这样能大大提高搜索效率。
如:“我是中国人"拆分为"我”、“是”、“中国”、“国人”、“中国人”。
安装步骤:
下载分词器文件,版本和ES版本一致
如: elasticsearch-analysis-ik-6.2.4.zip
上传到elasticsearch/plugins目录中
解压
unzip elasticsearch-analysis-ik-6.2.4.zip
使用kibana测试
Elasticsearch基本操作
创建索引
PUT /test
创建类型并进行映射
PUT /test/_mapping/student
{
"properties": {
"name" :{
"type": "text",
"analyzer": "ik_max_word"
},
"gender":{
"type": "keyword"
},
"age":{
"type": "integer"
}
}
}
添加数据
POST /test/student
{
"name":"张三三",
"gender":"男",
"age":"20"
}
修改
PUT /test/student/B6eRR3cBeDxKxs3sWYow
{
"name":"张三",
"age":"33",
"gender":"F"
}
删除
GET /test/student/_search/B6eRR3cBeDxKxs3sWYow-
查询
GET /test/student/_search
结束
大家如果需要学习其他Java知识点,戳这里 超详细的Java知识点汇总