Neo4j संस्करण: 3.2.2
ऑपरेटिंग सिस्टम: Ubuntu 16.04
मैं उपयोग करता हूं getDegree()
मैपिंग में कार्य करें। जेसन फ़ाइल, लेकिन रिटर्न हमेशा रहेगा null
; मैं डाटासेट neo4j ट्यूटोरियल मूवी / अभिनेता डाटासेट का उपयोग कर रहा हूं।
इलास्टिक्स खोज अनुरोध से आउटपुट
mapping.json
{
"defaults": {
"key_property": "uuid",
"nodes_index": "default-index-node",
"relationships_index": "default-index-relationship",
"include_remaining_properties": true
},
"node_mappings": [
{
"condition": "hasLabel("Person")",
"type": "getLabels()",
"properties": {
"getDegree": "getDegree()",
"getDegree(type)": "getDegree("ACTED_IN")",
"getDegree(direction)": "getGegree("OUTGOING")",
"getDegree("type", "direction")": "getDegree("ACTED_IN", "OUTGOING")",
"getDegree-degree": "degree"
}
}
],
"relationship_mappings": [
{
"condition": "allRelationships()",
"type": "type",
}
]
}
अगर मैं उपयोग भी करूं isOutgoing(), isIncoming(), otherNode
function_mappings गुण भाग में कार्य, elasticsearch कभी भी संबंध डेटा को neo4j से लोड नहीं करेगा। मुझे लगता है कि मुझे शायद इस वाक्य की कुछ गलतफहमी है only when one of the participating nodes "looking" at the relationship is provided
इस पृष्ठ पर
mapping.json
{
"defaults": {
"key_property": "uuid",
"nodes_index": "default-index-node",
"relationships_index": "default-index-relationship",
"include_remaining_properties": true
},
"node_mappings": [
{
"condition": "allNodes()",
"type": "getLabels()"
}
],
"relationship_mappings": [
{
"condition": "allRelationships()",
"type": "type",
"properties": {
"isOutgoing": "isOutgoing()",
"isIncomming": "isIncomming()",
"otherNode": "otherNode"
}
}
]
}
BTW, क्या कोई ऐसा पेज है जो उन सभी कार्यों को सूचीबद्ध करता है जिनका उपयोग हम mapping.json में कर सकते हैं? मैं उनमें से दो को जानता हूं
github.com/graphaware/neo4j-framework/tree/master/common#inclusion-policies
github.com/graphaware/neo4j-to-elasticsearch/blob/master/docs/json-mapper.md
परंतु ऐसा लगता है कि वहाँ अधिक हैं, क्योंकि मैं उपयोग कर सकते हैंgetType()
, जो उपरोक्त पृष्ठों में से किसी में सूचीबद्ध नहीं किया गया है।
कृपया मुझे बताएं कि क्या मैं समस्या को हल करने के लिए कोई और सहायता प्रदान कर सकता हूं
धन्यवाद!
उत्तर:
उत्तर № 1 के लिए 1The getDegree()
फ़ंक्शन का उपयोग करने के लिए उपलब्ध नहीं है, के विपरीत में getType()
. मैं क्यों समझाऊंगा:
जब मैपर (एक नोड या ES दस्तावेज़ के रूप में संबंध प्रतिनिधित्व बनाने के लिए जिंमेदार हिस्सा) अपना काम कर रहा है, यह एक प्राप्त DetachedGraphObject
एक अलग नोड या संबंध होने के नाते ।
इसका मतलब detached
यह है कि यह एक लेनदेन के बाहर हो रहा है और इस प्रकार क्वेरी आपरेशनों डेटाबेस के खिलाफ उपलब्ध नहीं है और अब ।को getType()
उपलब्ध है क्योंकि यह संबंध metadata का हिस्सा है और यह सस्ता है, लेकिन अगर हम के लिए एक ही करना चाहते है होगा getDegree()
इस दौरान गंभीरता से और अधिक महंगा हो सकता है DetachedObject
निर्माण (जो एक tx में होता है) विभिंन प्रकार की संख्या के आधार पर आदि ।
यह लेकिन हम पर काम कर रहे है कुछ है, एक स्वसंपूर्ण जावा kafa, खरगोश की तरह एक दलाल के साथ मिलकर आवेदन में मैपर externalising द्वारा,..नव और इस एप्लिकेशन के बीच । हम नहीं है, लेकिन इस मॉड्यूल के वर्तमान संस्करण में requery के ग्राफ के रूप में यह गंभीर प्रदर्शन प्रभावों अगर उपयोगकर्ता बहुत सावधान नहीं है सकते है possibilty पेशकश करेगा ।
के रूप में पिछले, केवल सुझाव मैं तुंहें दे सकता है डिग्री आप ES को दोहराने की जरूरत के अद्यतन के साथ अपने नोड पर एक संपत्ति रखने के लिए है ।
अद्यतन करें
प्रलेखन के इस भाग के बारे में:
संबंधों के लिए केवल जब एक भाग लेने नोड्स "देख" संबंध में प्रदान की जाती है:
यह केवल जब json परिभाषा का उपयोग नहीं है, तो आप एक या दूसरे का उपयोग कर सकते है प्रयोग किया जाता है ।json परिभाषा के रूप में बाद में जोड़ा गया है और दोनों एक साथ नहीं किया जा सकता है ।
इस भाग का उत्तर देने के लिए, इसका अर्थ है कि नोड के लिए आवक या जावक पक्ष, परिभाषा के आधार पर, नोड्स के लिए समावेश नीति में शामिल किया जाना चाहिए, जैसे hasLabel("Employee") || hasProperty("form") || getProperty("age", 0) > 20
. यदि आपके पास कोई allNodes
नीति तो यह ठीक है ।