1.安装ElasticSearch6.5.1
使用的ElasticSearch版本为6.5.1,如果我们需要使用JDBC来连接的话是需要到白金版以上的,请务必保证版本正确可用。
①官网下载地址:
1 |
|
②下载并解压tar包,修改配置文件elasticsearch.yml
1 |
|
③新建一个用户admin(用户名随意)
出于安全考虑,elasticsearch默认不允许以root账号运行。
1 |
|
④映射关系如下:
Mysql | Elasticsearch |
---|---|
Database | Index |
Table | Type |
Row | Document |
Column | Field |
Schema | Mapping |
Index | Everything is indexed |
SQL | Query DSL |
Select * from table | Get http:// |
Update table set | Put http:// |
2.索引的操作命令
①建表(es的索引):
1 |
|
②增加数据
1 |
|
③删除索引
1 |
|
增加数据的时候报异常:
1 |
|
解决方法1:
运行命令:
1 |
|
解决方法2:
创建索引的时候指定:
1 |
|
还有一种可能是当磁盘的使用率超过95%时,Elasticsearch为了防止节点耗尽磁盘空间,自动将索引设置为只读模式。
1、最简单也是最直接的是清理磁盘空间 2、更改elasticsearch.yml配置文件,在config/elasticsearch.yml中增加下面这句话
1 |
|
这是把控制洪水阶段水印设置为99%,你也可以自己设置其他百分比,默认是95%。 3、更改elasticsearch.yml配置文件,在config/elasticsearch.yml中增加下面这句话
1 |
|
默认为true。设置为false禁用磁盘分配决策程序。 上面无论哪一种方法修改之后,都需要重启elasticsearch,然后再把索引的read_only_allow_delete设置为false,采用一中的方法中的任意一种即可,更改后再查看索引的信息,如图,read_only_allow_delete配置没有了,表示以及设置成功了。
3.相关问题与解决方案:
①启动报内存不足等问题:
1、max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
每个进程最大同时打开文件数太小,可通过下面2个命令查看当前数量
1 |
|
修改/etc/security/limits.conf文件,增加配置,用户退出后重新登录生效
1 |
|
2、max number of threads [3818] for user [es] is too low, increase to at least [4096]
问题同上,最大线程个数太低。修改配置文件/etc/security/limits.conf(和问题1是一个文件),增加配置
1 |
|
可通过命令查看
1 |
|
3、max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
修改/etc/sysctl.conf文件,增加配置vm.max_map_count=262144
1 |
|
执行命令sysctl -p生效
4、Exception in thread “main” java.nio.file.AccessDeniedException: /usr/local/elasticsearch/elasticsearch-6.2.2-1/config/jvm.options
elasticsearch用户没有该文件夹的权限,执行命令
1 |
|
无法用root启动
1 |
|
②启动命令:
ElasticSearch的bin目录下面:
1 |
|
#####
4.使用SpringBoot连接ElasticSearch-sql+mybatis的操作:
①新建SpringBoot项目
POM依赖如下:
1 |
|
YML文件:
1 |
|
loback.xml:
1 |
|
elastic-mybatis.xml:
1 |
|
EsDruidDataSourceConfig:
1 |
|
相关Git项目地址如下:
1 |
|
5.部署Kibana
①下载kibana插件
https://artifacts.elastic.co/downloads/kibana/kibana-6.2.3-linux-x86_64.tar.gz
1 |
|
②解压到相应文件夹
1 |
|
③在这里要注意版本号的问题
1、kibana和elsticserch版本不能差别大,否则无法正常使用 比如 Kibana 6.x 和 Elasticsearch 2.x不能正常使用 2、运行比Kibana更高版本的Elasticsearch通常可以工作 例如Kibana 5.0和Elasticsearch 5.1 3、小版本差异会有一些警告出现,除非两者升级到相同的版本 这是官方给出的说明: https://www.elastic.co/guide/en/kibana/current/setup.html
④启动Kibanan
1 |
|
默认是前台启动的方式,我们在访问如下的网址的时候发现并不能访问,可以看到日志中有这么一句:
1 |
|
外网是无法访问的,如果外网想访问,那需要修改一下server.host,我们放开端口
1 |
|
放开server.host,并修改如下:
1 |
|
⑤kibana后台启动
1 |
|
⑥kibana目录结构
- bin: 二进制脚本,包括 kibana 启动 Kibana 服务和 kibana-plugin 安装插件。
- config: 配置文件,包括 kibana.yml 。
- data: Kibana 和其插件写入磁盘的数据文件位置。
- optimize: 编译过的源码。某些管理操作(如,插件安装)导致运行时重新编译源码。
- plugins: 插件文件位置。每一个插件都有一个单独的二级目录。
⑦windows下安装启用文档
https://www.elastic.co/guide/en/kibana/current/windows.html
⑧Kibana 配置文件 kibana.yml 简单说明
配置 | 说明 |
---|---|
server.port : | 默认值 : 5601 Kibana 由后端服务器提供服务。此设置指定要使用的端口。 |
server.host : | 默认值 : “localhost” 此设置指定后端服务器的主机。 |
server.name : | 默认值 : “your-hostname” 用于标识此 Kibana 实例的可读的显示名称。 |
elasticsearch.url : | 默认值 : “http://localhost:9200” 要用于所有查询的 Elasticsearch 实例的 URL。 |
elasticsearch.pingTimeout | 日常用的ping,默认值 : 值 elasticsearch.tribe.requestTimeout 设置以毫秒为单位的时间等待 Elasticsearch 对 PING 作出响应。 |
elasticsearch.requestTimeout | 默认值 : 30000 等待来自后端或 Elasticsearch 的响应的时间(以毫秒为单位)。此值必须为正整数。 |
elasticsearch.username 和 elasticsearch.password | 如果您的 Elasticsearch 受基本认证保护,这些设置提供 Kibana 服务器用于在启动时对 Kibana 索引执行维护的用户名和密码。您的 Kibana 用户仍需要使用通过 Kibana 服务器代理的 Elasticsearch 进行身份验证。 |
6.集群部署
要配置集群,最简单的情况下,修改elasticsearch.yml,设置下面几个参数就可以了,注意开放9300端口:
1 |
|
如果报已存在的节点id,是因为复制虚拟机时,elsticsearch时,将elsticsearch文件夹下的data文件夹一并复制了。而在前面测试时,data文件夹下已经产生了data数据,于是报上面的错误。
解决办法:删除elsticsearch文件夹下的data文件夹下的节点数据
1 |
|
7.使用logstash导入mysql数据到elasticSearch
Elasticsearch-jdbc工具包(废弃),虽然是官方推荐的,但是已经几年不更新了。所以选择安装logstash-input-jdbc,首选 logstash-input-jdbc,logstash5.X开始,已经至少集成了logstash-input-jdbc插件。所以,你如果使用的是logstash5.X,可以不必再安装,可以直接跳过这一步。
①下载mysql-jdbc-driver.jar
下载地址:
1 |
|
此处我使用的jar的版本为:mysql-connector-java-5.1.46.jar.后面我们会把这个jar包放在logstash的config目录下面
②下载logstash-6.3.0
下载命令:
1 |
|
解压命令:
1 |
|
③elasticSearch与数据库表的对应关系
ES | MYSQL |
---|---|
索引 | 数据库 |
类型 | 数据表 |
文档 | 数据表的一行 |
属性 | 数据表的一列 |
④建立测试数据表
sql语句如下:
1 |
|
在logstatsh的目录下面建立my_logstash文件夹,里面建立myjdbc.conf:(这个仅供参考 实际不使用)
1 |
|
在logstash的config目录下面新建logstash-mysql.conf:
1 |
|
启动命令,开始导入数据:
1 |
|
后台运行:
1 |
|
8.安装IK分词
①git地址,直接运行如下命令:
1 |
|
②在elasticsearch-6.5.0主目录下的plugins目录新建一个ik文件夹
③解压上面的zip包到ik目录,重启es即可
9.设置JDBC连接密码
①设置elasticsearch配置文件,然后重启elasticSearch
1 |
|
②设置密码
1 |
|
1 |
|
③修改kibana
1 |
|
修改密码:
1 |
|