Elasticsearch初使用


下载安装

通过Elasticsearch搜索数据库,需要下载Elasticsearch、Kibana、Logstash。(当前使用版本5.0.0)
Elasticsearch下载:https://www.elastic.co/cn/products/elasticsearch
Kibana下载:https://www.elastic.co/cn/products/kibana
Logstash下载:https://www.elastic.co/cn/products/logstash

启动服务

启动elasticsearch

1
2
cd elasticsearch
./bin/./elasticsearch

如果需要其他机器访问需要修改配置文件./config/elasticearch.yml中network.host

** 启动kibana **

1
2
cd kibana
./bin/./kibana

如果需要其他机器访问kibana,需要修改配置文件./config/kibana.yml中server.host
在第一启动kibana时要配置日志

elasticsearch默认访问http://ip:9200
kibana默认访问http://ip:5601

配置Logstash同步数据库

同步mysql到elasticsearch,使用Logstash中的插件jdbc input plugin。参考https://www.elastic.co/guide/en/logstash/current/plugins-inputs-jdbc.html

创建导入配置文件 simple_imput.conf

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
input {
jdbc {
# Postgres jdbc connection string to our database, mydb
jdbc_connection_string => "jdbc:mysql://localhost:3306/comment?characterEncoding=utf-8&useUnicode=true&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true"
# The user we wish to execute our statement as
jdbc_user => "user"
jdbc_password => "password"
jdbc_validate_connection => true
# The path to our downloaded jdbc driver
jdbc_driver_library => "./mysql-connector-java-5.1.31.jar"
# The name of the driver class for Postgresql
jdbc_driver_class => "com.mysql.jdbc.Driver"
# our query
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
type => "comment_bad_cause_type"
# statement_filepath => "/usr/local/logstash/bin/logstash_jdbc_test/jdbc.sql"
# 表示每分钟同步更新一次
schedule => "* * * * *"
statement => "SELECT * FROM test_table where update_time >= :sql_last_value"
jdbc_default_timezone => "Asia/Shanghai"
}
}
output {
stdout { codec => json_lines }
elasticsearch {
index => "demo_index"
document_id => "%{id}"
}
}

启动Logstash开始导入数据库
./bin/logstash -f simple_input.conf

需要注意的是,sql中为增量导入。在第一次的时候应该是全量导入,这个可能需要先去掉查询条件全量导入(注释schedule),后重新运行增量导入。可能使用两个input一个全量,一个增量(未尝试),后期尝试下。

打开kibana可以尝试搜索数据

参考

  • 买好车搜索的Elasticsearch实践:初体验