Ubuntu——ElasticSearch安装与配置(logstash)

ElasticSearch的安装与基本配置


安装ElasticSearch

  • 下载ElasticSearch deb安装包
  • 安装ElasticSearch
    • Ubuntu中默认安装路径为/usr/share/elasticsearch/
  • 配置ES为一个服务
    1
    2
    sudo /bin/systemctl daemon-reload
    sudo /bin/systemctl enable elasticsearch.service

启动ElasticSearch

1
sudo systemctl start elasticsearch.service

启动相关问题

  • 设置远程访问:
    • 修改config/elasticsearch.ymlnetwork.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
2
# 创建一个名字为customer的Index
PUT /customer?pretty

添加数据

给Index添加Document数据

1
2
3
4
5
6
# 向customer Index中添加id为1的Document
# 内容为{"name": "John Doe"}
PUT /customer/_doc/1?pretty
{
"name": "John Doe"
}

如果是使用Postman,这里选择json类型即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"_index" : "customer",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 0,
"_primary_term" : 1
}

查询数据

1
2
# 从customer中查询id为1的数据
GET /customer/_doc/1?pretty
1
2
3
4
5
6
7
8
{
"_index" : "customer",
"_type" : "_doc",
"_id" : "1",
"_version" : 1,
"found" : true,
"_source" : { "name": "John Doe" }
}

删除索引

1
2
# 删除名为customer的索引
DELETE /customer?pretty

修改数据

1
2
3
4
5
6
7
# 向customer Index中添加id为1的Document
# 如果目标Document已经存在,则修改目标Document为指定的数据
# 内容为{"name": "John Doe"}
PUT /customer/_doc/1?pretty
{
"name": "Joe Doe"
}

使用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包

配置文件及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中的数据库)

利用logstash同步mysql数据库数据到ES

  • 启动同步操作
    1
    2
    3
    4
    # 进入之前创建用于解压logstash源文件的目录下
    cd ElasticSearch
    # 启动同步
    ./logstash-6.2.4/bin/logstash -f mysql.config

一旦同步开始,如果不关闭进程,那么将一直自动同步,建议同步完成(当输出不再变化)后关闭进程

  • 查看ES中相应的Index是否已经被更新