elasticsearch 弹性搜索索引,elasticsearch,indexing,elasticsearch,Indexing" /> elasticsearch 弹性搜索索引,elasticsearch,indexing,elasticsearch,Indexing" />

elasticsearch 弹性搜索索引

elasticsearch 弹性搜索索引,elasticsearch,indexing,elasticsearch,Indexing,在当前的项目中,我希望改进搜索功能。在网上读了一些东西后,我决定去Elasticsearch。所以我有几个问题。 我已经用数据填充了生产数据库。为该数据库编制索引的最佳方法是什么? 当我想将新记录添加到数据库中时,我是否需要将其添加到弹性搜索中?或者可能创建某种作业来为数据索引一段时间? 我们如何在两个数据库(生产数据库、Elasticsearch数据库)中保持数据一致性 欢迎提供任何建议、链接、评论等 谢谢我不知道您是否还需要答案,但我目前使用Logstash。我基本上有一个用于输入的JDBC

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

欢迎提供任何建议、链接、评论等
谢谢

我不知道您是否还需要答案,但我目前使用Logstash。我基本上有一个用于输入的JDBCSQL插件和用于输出的elasticsearch插件。基本上,您可以配置一个配置文件,设置连接,执行查询,然后进行数据转换和输出

如果您查看以下位置的文档:

下面可以看到一个配置示例,我已经了解到,您可以计划将数据从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
    }
}