【问题标题】:What is the best way to implement parent-child in Elastic Search?在 Elastic Search 中实现父子关系的最佳方式是什么?
【发布时间】:2014-06-10 16:23:28
【问题描述】:

我想知道 Stack Overflow 中的问题和答案是如何映射到 Elastic Search 中的。您可以将答案作为问题的子项来实现,但在这种情况下,例如如何呈现列表以概述您给出的所有答案?

这样的列表包含问题标题、答案数量和您最后一次回答的日期。因此,它是问题数据和答案数据的混合体。

在 Elastic Search 中使用父子对象时,我只能从问题或答案中检索数据,但不能同时从两者中检索数据。因此,如果我想创建像 Stack Overflow 那样的视图,我需要将问题标题也存储在答案中。但是,如果更改了问题标题,这又会产生开销。在这种情况下,必须更新问题和所有答案。

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    请查看nested type,您可以在其中将问题和答案存储在索引中并进行查询。

    以下是索引示例:

    {
       "_index": "questions-development",
       "_type": "question",
       "_id": "8",
       "_score": 1,
       "_source": {
          "id": 8,
          "title": "Question title",               
          "answers": [
             {
                "answer_id": 42,                     
                "text": "Answer text"
             },
             {
                "answer_id": 88,                    
                "text": "Answer text"
             },
             {
                "answer_id": 79,                     
                "text": "Answer text"
             },
             {
                "answer_id": 80,                    
                "text": "Answer text"
             },
             {
                "answer_id": 8,                      
                "text": "Answer text"
             }
          ]
       }
    }
    

    【讨论】:

    • 谢谢。我会调查一下。我认为在我们添加新答案、删除答案和修改答案的情况下使用父子更容易。这些操作将在嵌套类型需要更新部分数据的情况下进行。
    • 已对此进行了调查,该结构看起来可以进行搜索。但是,例如,您将如何删除其中一个答案或编辑其中一个答案文本?希望你能帮忙。
    • @cyclomarc 这取决于你是如何实现搜索的,例如在 Rails 中我指定了回调并在更改嵌套属性后 ES 更新索引。
    猜你喜欢
    • 1970-01-01
    • 2020-05-08
    • 2014-07-06
    • 2010-09-15
    • 2018-05-16
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多