ElasticSearch的安装与基本配置
安装ElasticSearch
- 下载ElasticSearch deb安装包
- 安装ElasticSearch
- Ubuntu中默认安装路径为
/usr/share/elasticsearch/
- Ubuntu中默认安装路径为
- 配置ES为一个服务
1
2sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service
启动ElasticSearch
1 | sudo systemctl start elasticsearch.service |
启动相关问题
- 设置远程访问:
- 修改
config/elasticsearch.yml
中network.host : 0.0.0.0
- 修改
- 可能遇到的问题1:
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
- 可能遇到的问题2:
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
- 可能遇到的问题3:
[1]: 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
1 | sudo systemctl stop elasticsearch.service |
ElasticSearch的使用
ES的使用可从官网上查看,点击下一步接着可看完整个流程
*操作ES接口时,建议使用postman *
查看索引
1 | GET /_cat/indices?v |
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
创建索引
1 | # 创建一个名字为customer的Index |
添加数据
给Index添加Document数据
1 | # 向customer Index中添加id为1的Document |
如果是使用Postman,这里选择json类型即可
1 | { |
查询数据
1 | # 从customer中查询id为1的数据 |
1 | { |
删除索引
1 | # 删除名为customer的索引 |
修改数据
1 | # 向customer Index中添加id为1的Document |
使用logstash同步数据
6.2.4同步mysql数据到ES
安装logstash
- 下载logstash 6.2.4
- 为了方便配置管理,建议下载zip或者tar.gz版本
- 解压到指定文件夹,建议在相关项目下创建
ElasticSearch
文件夹,并存储以下数据- logstash 解压文件夹
logstash-6-2-4
- 新建文件: logstash更新 mysql 数据库索引到 ES 时的配置文件,一般命名为mysql.config [后面会给出详细内容]
- 下载jdbc库: mysql-connector-java.jar [用于连接数据库]
- 这里下载Platform Independent的压缩包版本解压即可找到需要的jar包
- logstash 解压文件夹
配置文件及jdbc连接库
新建一个名为mysql.config的文件,内容为
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31# logstash-6.2.2\bin\logstash.bat -f mysql.config
# logstash-6.2.4/bin/logstash -f mysql.config
input {
jdbc {
# mysql jdbc connection string to our backup databse
jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/docker_manager?serverTimezone=UTC"
# the user we wish to excute our statement as
jdbc_user => "docker"
jdbc_password => "123456"
# the path to our downloaded jdbc driver
jdbc_driver_library => "/home/jiahong/Workspace/IdeaProjects/DockerManagerSystem/elastic-search/mysql-connector-java-8.0.11.jar"
# the name of the driver class for mysql
jdbc_driver_class => "Java::com.mysql.jdbc.Driver"
# jdbc_paging_enabled => "true"
# jdbc_page_size => "50000"
# statement_filepath => "jdbc.sql"
schedule => "* * * * *"
# type => "jdbc"
statement => "SELECT * FROM docker_manager.DockerManager_docker WHERE id > :sql_last_value"
use_column_value => true
tracking_column => "id"
}
}
output {
elasticsearch {
hosts => "127.0.0.1:9200"
index => "docker"
document_id => "%{id}"
}
}- 关于mysql.config,一般需要配置的地方为:
- jdbc_connection_string: 注意docker_manager为数据库名,后面的时区参数有时也需要修改,关于时区的问题可我的博客
Linux——Logstash时区问题 - jdbc_driver_library: 这里需指定到对应的jdbc连接库
- statement: 数据库查询语句
- jdbc_user: 数据库用户名l
- jdbc_password: MySQL用户名对应的密码
- hosts: 输出到ES地址
- index: ES服务器的Index(相当于MySQL中的数据库)
- jdbc_connection_string: 注意docker_manager为数据库名,后面的时区参数有时也需要修改,关于时区的问题可我的博客
- 关于mysql.config,一般需要配置的地方为:
利用logstash同步mysql数据库数据到ES
- 启动同步操作
1
2
3
4# 进入之前创建用于解压logstash源文件的目录下
cd ElasticSearch
# 启动同步
./logstash-6.2.4/bin/logstash -f mysql.config
一旦同步开始,如果不关闭进程,那么将一直自动同步,建议同步完成(当输出不再变化)后关闭进程
- 查看ES中相应的Index是否已经被更新