Упругий поиск - попытка вызвать поиск API рекурсивным способом - PullRequest
0 голосов
/ 28 сентября 2018

В упругом поиске я хочу сделать рекурсивный вид поиска.Как и в случае с первым результатом запроса, мне нужно запустить следующий запрос (первый результат запроса является вводом второго запроса).Он должен продолжать выполнение запроса до тех пор, пока результат не будет равен null.

Например:

Из приведенных ниже данных таблицы.

, если я ищу значение car, оно должно дать id и value и должно проверять parent_id.Затем parent_id является входом, и он должен проверить на id и value снова.

Аналогично, он должен идти до тех пор, пока parent_id не станет null.

id      Parent_id       Value
1       null            null
2       45              Hundai
3       89              Volvo
4       1               Benz
5       3               Audi
6       4               BMW
7       6               car

Если я ищу значение car, я должен получить следующую информацию.

id      Value
7       car
6       BMW
4       Benz
1       null

1 Ответ

0 голосов
/ 28 сентября 2018

Решение, которое вы ищете, на самом деле 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"
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...