2016-06-30 3 views
0


Я пытаюсь выполнить рекурсивный поиск в эластичном состоянии. я знаю, что есть поиск-шаблоны, но я не найти примеры как ниже сценарияхранимые процедуры поиск эластичный поиск

`ex:-father= neo 
    1.search in person-index documents for father attribute 
    2.if father=neo return direct,else(here father=ted) 
    3.search for ted now and check if father=neo return indirect 
    or repeat step 3 till script find's ancestor if not found return not related when reached father = some constant like (pre-genator or ancient) 
    ` 

Это исключает для меня, чтобы пойти на базе графа, если у меня есть только одно отношение. другой сценарий, как найти все декады «neo»

ответ

2

Невозможно выполнить то, что вы описываете внутри elasticsearch в настоящий момент.

Если количество наследственных поколений ограничено и они могут быть выражены как отношения «один ко многим», вы можете использовать несколько запросов has_parent.

В качестве альтернативы, если это возможно, вы можете денормализовать данные и сохранить имена всех предков для данной записи в одном поле. Таким образом, запись будет выглядеть так:

{ 
    "father": "neo", 
    "ancestors": ["neo", "ted", ... ] 
} 

В противном случае вам необходимо выполнить эти поиски за пределами поиска elastics.

+0

ya, я думал об этом сценарии, проблема заключается в сохранении данных. – Fryder

Смежные вопросы