Как вложить документы в Solr?
В solr 6.6.0 я хочу использовать вложенные объекты для определенного ключа.
Итак, предположим, у меня есть один документ следующим образом:
{
"ID": "16_nl",
"countryIso": "AUS",
"regionId": 30,
"name": "test",
"placeId": 50,
"eventID": 100,
"facilities": [12],
"created": "2017-11-30T11:00:36.717Z",
"modified": "2017-11-30T11:00:36.717Z"
}
Но теперь я хочу добавить дочерний документ в вышеуказанный документ с ключевым "предложением" следующим образом
{
"ID": "16_nl",
"countryIso": "AUS",
"regionId": 30,
"name": "test",
"placeId": 50,
"eventID": 100,
"facilities": [12],
"proposal": [{
"duration": 55,
"price" : 300,
"status":"VISIBLE"
}],
"created": "2017-11-30T11:00:36.717Z",
"modified": "2017-11-30T11:00:36.717Z"
}
Как я могу сделать это в Solr?
Я прошел http://yonik.com/solr-nested-objects/ и другие документы, и у меня есть следующие проблемы
- Я не понял, как мы должны сопоставить дочерний документ с ключом "предложение"?
- Я думаю, что такие поля, как "ID", "countryIso", "regionId" определены как обязательные в родительском документе, поэтому необходимо ли использовать эти поля также в дочерних документах?
1 ответ
Вы должны перечислить дочерние документы под специальным ключом "_childDocuments_". В Справочном руководстве Apache Solr вы найдете этот пример и подсказку "обратите внимание на специальный ключ _childDocuments_, необходимый для обозначения вложенных документов в JSON":
{
"id": "1",
"title": "Solr adds block join support",
"content_type": "parentDocument",
"_childDocuments_": [{
"id": "2",
"comments": "SolrCloud supports it too!"
}]
}
Обратите внимание, что поле id должно иметь дочерний документ.
Затем используйте Блок Соединения Детей Query Parser, чтобы найти дочерние элементы по родительским атрибутам, и Блок Присоединения Родителя Query Parser, чтобы найти родителей по дочерним атрибутам. См. https://lucene.apache.org/solr/guide/6_6/other-parsers.html.