2016-08-16 119 views
1

在当前的项目中,我致力于改进搜索功能。在网上阅读了一些东西后,我决定去Elasticsearch。所以我有几个问题。 我已经有生产数据库填充数据。索引该数据库的最佳方式是什么? 当我想向数据库添加新记录时,是否需要添加弹性搜索?或者可能创建某种工作来索引数据一段时间?
我们如何保持2个数据库(生产数据库,Elasticsearch数据库)的数据一致性?Elasticsearch索引

任何建议,链接,评论等,都非常欢迎 感谢

回答

1

我不知道,如果你仍然需要一个答案,但我目前使用Logstash。我基本上有一个用于输入的jdbc sql插件和用于输出的elasticsearch插件。你基本上配置一个配置文件,建立连接,执行查询,然后进行数据变异和输出。

如果你看一看的文档:https://www.elastic.co/guide/en/logstash/current/index.html

的配置的例子可以在下面看到,我读过您可以安排这个将数据从一个SQL数据库传输到索引中,虽然我没有亲自设置。

请记住,您需要确保数据传输的安全,sql插件确实为此提供了支持。

input { 
jdbc { 
jdbc_driver_library => "file directory to sql driver" 
jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver" 
jdbc_connection_string => "" 
jdbc_user => "" 
jdbc_password => "" 
lowercase_column_names => false 
statement => "SELECT IGF_UID AS id, IGF_NAME AS name FROM dbo.IGT_ENTITY" 
} 
} 
filter { 
if ![id] { 
    mutate { 
       replace => {"id" => "00000000-0000-0000-0000-000000000000"} 
      } 
    } 

    } 
mutate { 
    remove_field => [ "@timestamp" ] 
    remove_field => [ "@version" ] 
    } 

} 

output { 
    elasticsearch { 
    hosts => "localhost" 
    index => "entities" 
    document_type => "entity" 
    manage_template => false 
    } 
}