Решение, которое вы ищете, на самом деле SELF JOIN
операция.
Вы можете сослаться на эту ссылку как на то, как вы можете смоделировать ваши данные через нескольких уровней родителей, но имейте в видучто это происходит по очень высокой цене.И снова, документы в elasticsearch
не должны моделироваться так, как мы моделируем данные в RDBMS
.
Что вы можете сделать, это смоделировать ваши документы denormalized
способом и сохранить эту информацию в отдельном поле.
Например, вы можете иметь поле с именем hierarchy
, как указано в приведенном ниже документе, которое должно быть создано во время операции indexing
, и использовать простые запросы для получения результатов, которые вы ищете.
POST tempindex/1
{
"id": 7,
"name": "Car",
"parentid": 6,
"hierarchy": "7/6/5/2/1/null"
}
И тогда вы можете просто выполнить приведенный ниже запрос, который вернет вам список документов, который заканчивается на null
GET tempindex/_search
{
"query": {
"match": {
"hierarchy": "null"
}
}
}