【问题标题】:SearchKick(Elastic Search) freshly reindex specific recordSearchKick(Elastic Search) 重新索引特定记录
【发布时间】:2023-03-09 16:35:04
【问题描述】:

您好,我有一个关于重新索引记录的问题,该记录之前使用具有不同数据类型的属性重新索引。

例如:用户 1 在重新索引时将 date_of_birth 作为字符串,现在我想用 datetime 列重新索引该用户,它因错误而崩溃

"MapperParsingException[failed to parse [dob]]; nested: NumberFormatException"

尝试使用以下和重新索引删除记录的索引,但没有成功。

User.searchkick_index.remove(user)

【问题讨论】:

    标签: ruby-on-rails ruby elasticsearch searchkick


    【解决方案1】:

    一旦创建了允许的there are only a few changes,您就无法更改现有字段的类型。最可靠的方法是擦除您的索引并使用正确的映射从头开始重新创建它。

    一种临时的替代解决方案是重命名您的字段,以便创建一个具有新 date 类型的新字段。

    【讨论】:

    • 问题是我的字段创建不在我们的控制之下。这些是用于重新索引的动态字段,可由用户添加。
    • 那么您唯一的选择就是清除您的索引,使用适当的映射重新创建它并重新索引您现有的数据。
    • 这太糟糕了,只有一条记录整个reindex。
    • Elasticsearch 不是魔杖 :-) 它可能只有一条记录,但您需要控制所创建的字段类型。如果你不这样做,你就会陷入这种情况。一旦使用给定类型创建了一个字段there are very few options to change its type
    • 我喜欢为数据类型设置单独字段的概念,例如:“rating.int”。会尝试这个,但需要对代码进行大量更改。感谢您的链接和建议。
    猜你喜欢
    • 2015-04-26
    • 1970-01-01
    • 2021-05-21
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多