У меня есть вопрос узла и ответ узла в Neo4j. И я получаю sh информацию из Neo4j в ElasticSearch с Json -mapper из реализации GraphAware ElasticSearch со следующим отображением:
"node_mappings": [
{
"condition": "hasLabel('Question')",
"index": "questions",
"type": "_doc",
"properties": {
"title": "getProperty('title')",
"has_answer": "query('MATCH (n) WHERE id(n) = {id} MATCH (n)-[:HAS_ANSWER]-(ans:Answer) RETURN count(ans) > 0 as value')",
"date_modified": "getProperty('date_modified')",
"date_created": "getProperty('date_created')"
}
}
]
Как и ожидалось, когда в браузере Neo4j я выполняю команду
match (q:Question)
where id(q) = 2864837
set q.date_modified = 1
Я вижу, что этот конкретный вопрос обновляется в ElasticSearch. В журнале Neo4j я вижу, что выполняется такая массовая операция:
2020-01-24 09:58:30.069+0000 INFO Notifying listeners for event {}
2020-01-24 09:58:30.652+0000 INFO Bulk operation succeeded
Теперь я добавляю следующий триггер APO C:
CALL apoc.trigger.add('setAllConnectedNodes','UNWIND {createdRelationships} as rels WITH startNode(rels) as startnode
WITH startnode
set startnode.date_modified=2', {phase:'before'});
Таким образом, когда я создаю связь из тот же вопрос, скажем, ответ должен обновить date_modified
, и в результате я бы снова ожидал массовую операцию. Тем не менее, действительно, я вижу, что date_modified
теперь установлен в 2, подтверждая, что триггер работает просто отлично, но, к сожалению, из плагинов GraphAware не была запущена массовая операция. Почему, и как я могу решить эту проблему?
В качестве примечания я не смог поэкспериментировать с установкой фазы триггера Apo c на after из-за ошибки в Apo c plugin .
Моя цель - создать индекс ElasticSearch со всеми вопросами, указывающими, существует ли ответ, который определяется только как связь между узлами вопросов и ответов.