Триггерная транзакция Apo c не приводит к массовой операции GraphAware-Elasticsearch - PullRequest
0 голосов
/ 24 января 2020

У меня есть вопрос узла и ответ узла в 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 со всеми вопросами, указывающими, существует ли ответ, который определяется только как связь между узлами вопросов и ответов.

...