Перезагрузить данные из elasti c, используя scrollid в cypher Neo4j? - PullRequest
1 голос
/ 12 февраля 2020

Я загружаю данные из Elasticsearch, используя scrollid,

CREATE CONSTRAINT ON (cus:Customer) ASSERT cus.CIN IS UNIQUE
CREATE CONSTRAINT ON (mer:Merchant) ASSERT mer.MerchantDetailsLocation IS UNIQUE​

CALL apoc.es.query("http://localhost:9200",'index','doc','size=100&scroll=5m',null) yield value with value._scroll_id as scrollId, value.hits.hits as hits​
UNWIND hits as hit​
UNWIND hit._source AS trans​
MERGE (C1:Customer {CIN: trans.CIN})​
MERGE (M1:Merchant {MerchantName: dctrans.MerchantDetailsLocation})​
MERGE (C1)-[:Transfered {CardNo: trans.CardNo, TxnAmount: trans.TxnAmount, UniqueId: trans.UniqueId} ]->(M1)​
​
WITH range(101,10000,100) as list, scrollId​
UNWIND list as count​
CALL apoc.es.get("http://localhost:9200","_search","scroll",null,{scroll:"5m",scroll_id:scrollId},null) yield value with value._scoll_id as scrollId, value.hits.hits as nextHits​
UNWIND nextHits as hit​
UNWIND hit._source AS trans​
MERGE (C1:Customer {CIN: trans.CIN})​
MERGE (M1:Merchant {MerchantName: dctrans.MerchantDetailsLocation})​
MERGE (C1)-[:Transfered {CardNo: trans.CardNo, TxnAmount: trans.TxnAmount, UniqueId: trans.UniqueId} ]->(M1)​
​return C1, M1​

Я установил ограничение на два узла, Клиент и Продавец, Клиент передал как отношение

В Elasti c У меня есть 1 миллион данных,

Первоначально я загрузил 10000, используя вышеуказанный код, загружающий 100 за раз, затем, если я снова запускаю тот же код, чтобы получить еще 10000, он снова дублирует отношение для первых 10000 и переходит к следующему 10 000.

Итак, у меня есть два вопроса

  1. Чтобы избежать дублирования отношения, могу ли я узнать, как установить ограничение для отношения на основе его свойства, у меня есть свойства в отношение, в котором UniqueId уникален

Я пытался CREATE CONSTRAINT ON () - [r: Передано] - () ASSERT r.UniqueId IS UNIQUE; но не работает

если возможно, могу ли я узнать, как сохранить идентификатор прокрутки для последующего использования, чтобы я мог запустить 2-й сегмент только для извлечения 2-ых 10000 данных?

Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...