Solr -为嵌套子文档编制索引

6ojccjat  于 2023-04-06  发布在  Solr
关注(0)|答案(1)|浏览(223)

我正在尝试一个简单的例子,为带有嵌套子文档的文档创建模式。

{
    "id" : "467eead3-7562-41fb-a406-3b4e62bdff9f",
    "title": "my test ticket",
    "participants": [ 
        {
            "id" : "487b5309-8f1e-4608-8e91-35cb10d27cac",
            "name" : "jakub"
        },
        {
            "id" : "6ddf6b8b-476a-4b7c-b1d6-75324fed3a55",
            "name" : "kiran"
        }
    ]
}

当我在Solr管理中将其输入到Solr模式设计器时,它会以许多不同的方式抱怨“missing root field”,然后是无效的字段“name”。
当我查阅关于索引嵌套子文档https://solr.apache.org/guide/8_0/indexing-nested-documents.html的官方文档并以它们为例时:

{
      "id": "1",
      "title": "Solr adds block join support",
      "content_type": "parentDocument",
      "_childDocuments_": [{
              "id": "2",
              "comments": "SolrCloud supports it too!"
          }
      ]
}, {
      "id": "3",
      "title": "New Lucene and Solr release is out",
      "content_type": "parentDocument",
      "_childDocuments_": [{
              "id": "4",
              "comments": "Lots of new features"
          }
      ]
}

模式设计者甚至不想处理这样的例子:

我不知道如何处理这个问题。我有一种感觉,我对整个概念的理解是错误的。我的问题是-当索引子文档时,方法是:
1.是否分别为父文档和子文档定义架构?
1.当索引这样的JSON文档时,子集合应该是什么样子?我是否传递子文档的ID?字段类型是否为“字符串”并标记为“多值”?
1.是否可以通过模式设计器工具定义嵌套的子文档?

roqulrg3

roqulrg31#

在最后解决了这个问题。你需要做的是扁平化你的模式。所以你的根文档需要包含子文档的字段,这样设计者才能正确地解析文档。
工作的JSON看起来像这样:

{
    "_root_": "467eead3-7562-41fb-a406-3b4e62bdff9f",
    "id": "467eead3-7562-41fb-a406-3b4e62bdff9f",
    "content_type": "ticket"
    "title": "my test ticket",
    "name": null,
    "participants": [{
            "id": "487b5309-8f1e-4608-8e91-35cb10d27cac",
            "content_type": "participant",
            "name": "jakub"
        }, {
            "id": "6ddf6b8b-476a-4b7c-b1d6-75324fed3a55",
            "content_type": "participant",
            "name": "kiran"
        }
    ]
}

相关问题