【问题标题】:Which model is better for elasticsearch indexing?哪种模型更适合弹性搜索索引?
【发布时间】:2016-06-10 00:23:39
【问题描述】:

我有 2 个 JSON 模型,可以表示用于弹性搜索索引的模型。第一:

{
"id" : 1,
"nama" : "satu", 
"child" : {
    "id" : 2,
    "nama" : "dua",
    "child" : [
        {
            "id" : 3
            "nama" : "tiga"
        },
        {
            "id" : 4,
            "nama" : "empat"
        }
    }
}

}

第二个:

[{
    "parent1id" : 1,
    "parent1nama" : "satu",
    "parent2id" : 2,
    "parent2nama" : "dua",
    "id" : 3,
    "nama" : "tiga"
},
{
    "parent1id" : 1,
    "parent1nama" : "satu",
    "parent2id" : 2,
    "parent2nama" : "dua",
    "id" : 4,
    "nama" : "empat"
}]

其实 first 和 second 的含义相同,都是为 elasticsearch 索引创建的。我认为第一个模型冗余度较低,而第二个模型冗余度更高。但是第一个表示为 1 个弹性记录,而第二个表示为 2 个弹性记录。当我搜索ID = 3时,这会影响。第一个将返回整个记录,第二个将返回ID = 3的记录。

所以,我想要您的全部建议,哪个模型更适合弹性搜索。谢谢...

【问题讨论】:

    标签: arrays json indexing elasticsearch model


    【解决方案1】:

    elasticsearch 内部没有区别,因为他使用 Apache lucene 将您的字段保存为 key = value。例如你的第一个例子我将保存为 child.id = 3, child.mama = tiga。

    但在您的第一种情况下,子对象将被索引为Nested Object,这有很多可能性作为过滤器、查询和其他类型的东西。 看看嵌套对象,我认为这将阐明您的需求。

    注意:尽可能使用聚合数据,elasticsearch 是面向 NoSql 文档的。

    【讨论】:

      【解决方案2】:

      我强烈推荐您的第二个模型。 noSQL 数据库的一个关键原则是复制数据以使其更易于查询。

      在 ES 中使用嵌套或父/子是可行的,但它会使您的所有查询更加复杂。我们发现,扁平化一切更容易使用,并且让我们能够更有效地使用 Kibana。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-10
        • 2017-01-20
        • 1970-01-01
        • 1970-01-01
        • 2013-02-18
        • 1970-01-01
        • 2016-10-24
        相关资源
        最近更新 更多