Apache Solr 7.4:嵌套“ _childDocuments_”不起作用,文档仍然平坦

时间:2018-08-03 00:28:55

标签: apache solr

我的用例是:我有一个父级->子级-> GrandChildren层次结构。

我想以嵌套方式获取文档,并希望进行BlockJoin查询以检索特定父母的所有孙子女,特定父母的所有子女等等。

我已经在架构中定义了适当的字段(使用curl),并根据我的应用程序的要求复制了字段和字段类型。我还定义了“文本”作为所有内容的复制字段,因为我必须支持随机搜索。

我已定义要提取的文档,如下所示:

{

"id": "3443",

"path": "1.employee",

"employeeId": 3443,

"employeeName": "Tom",

"employeeCounty": "Maricopa",

"_childDocuments_": [{

    "id": "3443.54545454",

    "path": "2.employee.assets",

    "assetId": 54545454,

    "assetName": "Lenovo",

    "assetType": "Laptop",

    "_childDocuments_": [{

        "id": "3443.54545454.5764646",

        "path": "3.employee.assets.assetType",

        "processorId": 5764646,

        "processorType": "Intel core i7"
    }]
}]

}

现在,当我使用管理界面进行查询时,我得到了以下扁平化的对象,并且块联接查询也不起作用:

        {
  "responseHeader":{
    "status":0,
    "QTime":0,
    "params":{
      "q":"*:*",
      "_":"1533252181415"}},
  "response":{"numFound":1,"start":0,"docs":[
      {
        "id":"3443",
        "employeeId":3443,
        "text":["3443",
          "Tom",
          "Maricopa"],
        "employeeName":"Tom",
        "employeeCounty":"Maricopa",
        "_childDocuments_.id":[3443.54545454,
          3443.643534544],
        "_childDocuments_.path":["2.employee.assets],
        "_childDocuments_.assetId":[54545454,
          643534544],
        "_childDocuments_.assetName":["Lenovo"],

我想念什么?我该如何使Solr像对待嵌套文档那样处理嵌套文档,而不是将其展平?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

找到了解决方案。我使用了错误的URL发布。 我正在使用http://localhost:8983/solr/my-core/update/json/docs

相反,我应该只使用http://localhost:8983/solr/my-core/update 因为我已经将文档格式化为Solr格式,所以Solr无需进行任何特殊处理即可将其编入索引。