В настоящее время я анализирую и пытаюсь использовать janusgraph для графа ACL. Я настроил elasticsearch как серверную часть индекса. В моей компании мы уже активно используем elasticsearch для поиска и аналитики. Теперь, используя структуру обработки janusgraph, могу ли я выполнять поиск определенных данных или всех данных, соблюдая данные ACL в одном запросе.
Пример графика ниже.
g.addV('user').property('userId','u1').property('email','[email protected]').as('u1').
addV('user').property('userId','u2').property('email','[email protected]').as('u2').
addV('user').property('userId','u3').property('email','[email protected]').as('u3').
addV('group').property('groupId','g1').as('g1').
addV('group').property('groupId','g2').as('g2').
addV('group').property('groupId','g3').as('g3').
addV('folder').property('folderId','f1').property('name','folder 1test').property('inheritance',false).as('f1').
addV('folder').property('folderId','f2').property('name','folder 2test').property('inheritance',true).as('f2').
addV('folder').property('folderId','f3').property('name','folder 3test').property('inheritance',true).as('f3').
addV('file').property('fileId','f1').property('title','file title1')
addE('in_folder').to('f1').
addE('in_folder').from('f2').to('f1').
addE('in_folder').from('f3').to('f2').
addE('member_of').from('u1').to('g1').
addE('member_of').from('u2').to('g2').
addE('member_of').from('u3').to('g3').
addE('member_of').from('g3').to('g1').
addE('has_permission').from('g1').to('f1').
addE('has_permission').from('u2').to('f1').iterate()
пример использования, получить все узлы папок, к которым у пользователя user1 есть доступ? будут намного более сложные запросы, агрегаты, частичный текстовый поиск, регулярные выражения, прогнозы и т. д. эластичных функций.
Я хочу знать, могут ли janusgraph и gremlin заменить прямые вызовы эластичного индекса. как я могу попытаться решить варианты использования поиска, соблюдая ACL с тем же запросом?