需求:
导入所有政策文件,能过通过检索关键字找到对应的文件。
工具:
postgres(基本数据库,存放表数据)、eleasticsearch(全文搜索引擎)、logstash(数据收集引擎)
简要步骤:
1.导入所有政策文件,存放文件信息到postgres数据库中,文件信息包括文件名,上传时间,文件名,文件路径,文件内容等信息。
2.安装es和logstash,logstash主要是将postgres中数据同步到es库中,es主要是将关键信息(文件内容)进行分词,便于检索。
3.写一个接口,从es库中根据关键字进行检索。
重点部分:
1.postgres如何同步到ES库中?
logstash文件夹中conf.d中有一个配置文件:logstash-pg-es.conf,该文件中定义了数据来源与数据输出。值得关注的地方有3处
input {
jdbc { 1.数据来源是jdbc连接的数据库
# Postgres jdbc connection string to our database, mydb
jdbc_connection_string => "jdbc:postgresql://192.168.56.33:5432/test"
# The user we wish to execute our statement as
jdbc_user => "test"
jdbc_password =>"test"
# The path to our downloaded jdbc driver
jdbc_driver_library => "/some/config-dir/postgresql-42.2.5.jar"
#处理中文乱码问题
codec => plain { charset => "UTF-8"}
#使用其它字段追踪,而不是用时间
#use_column_value => true
#追踪的字段
# tracking_column => last_modified_date
# record_last_run => true
#上一个sql_last_value值的存放文件路径, 必须要在文件中指定字段的初始值
#last_run_metadata_path => "/some/config-dir/station_parameter.txt"
#
jdbc_paging_enabled => "true"
jdbc_page_size => "50000"
# The name of the driver class for Postgresql
jdbc_driver_class => "org.postgresql.Driver"
# our query
statement => "select id,name as title,d