Я загружаю данные из 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.
Итак, у меня есть два вопроса
- Чтобы избежать дублирования отношения, могу ли я узнать, как установить ограничение для отношения на основе его свойства, у меня есть свойства в отношение, в котором UniqueId уникален
Я пытался CREATE CONSTRAINT ON () - [r: Передано] - () ASSERT r.UniqueId IS UNIQUE; но не работает
если возможно, могу ли я узнать, как сохранить идентификатор прокрутки для последующего использования, чтобы я мог запустить 2-й сегмент только для извлечения 2-ых 10000 данных?
Заранее спасибо