【问题标题】:Elasticsearch re-indexElasticsearch 重新索引
【发布时间】:2015-09-10 16:30:45
【问题描述】:

我的内容(来自数据库)最初通过完整索引被读入弹性搜索搜索索引,该索引将数据库记录数据存储到一个类中,然后将每个类实例添加到已创建的索引中。

我的问题是我将如何做一个增量索引...

我想让一个作业在每设定的时间内运行一次,并且它在数据库中找到的任何记录在那个时间已经更新,我希望它们被重新索引...

我不能只使用

client.Index(mycontent)

作为完整索引使用,因为这会将这条记录的另一个副本添加到索引中......

谁能告诉我如何从他们对应的修改后的数据库记录中更新索引中已经选择的记录数?

谢谢

【问题讨论】:

    标签: indexing elasticsearch


    【解决方案1】:

    这里没有什么神奇之处,您需要维护某种时间戳字段,只要行发生插入或更改,该字段就会更新。还要确保将主键设置为文档 ID,这样更新的文档会被覆盖而不是重复创建。

    我会推荐this JDBC importer 写的 约尔格·普兰特。

    在 README 中,他使用以下内容解释了增量使用 -

    {
        "type" : "jdbc",
        "jdbc" : {
            "url" : "jdbc:mysql://localhost:3306/test",
            "user" : "",
            "password" : "",
            "sql" : [
                {
                    "statement" : "select * from \"products\" where \"mytimestamp\" > ?",
                    "parameter" : [ "$metrics.lastexecutionstart" ]
                }
            ],
            "index" : "my_jdbc_index",
            "type" : "my_jdbc_type"
        }
    }
    

    【讨论】:

    • 好的,感谢我使用 C# windows 窗体解决方案...我通过检查存储过程识别更改的行,然后返回在此设定期间更新的记录行。
    • 您是指在我的班级 poco 中使 elasticsearch _id 与我自己指定的 id 相同吗?
    猜你喜欢
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    • 2017-01-25
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多