When using MERGE on full patterns, the behavior is that either the whole pattern matches, or the whole pattern is created. MERGE will not partially use existing patterns — it’s all or nothing. If partial matches are needed, this can be accomplished by splitting a pattern up into multiple MERGE clauses. http://docs.neo4j.org/chunked/stable/query-merge.html
MERGE (n)-[:know {r:'123'}]->(test2 {name:'2'})
will try to match the entire pattern and since it does not exist, it creates it. What you can do is:
MERGE (n {name: '3'}) //Create if a node with name="3" does not exist else match it
MERGE (test2 {name:'2'}) //Create if a node with name="2" does not exist else match it
MERGE (n)-[:know {r:'123'}]->(test2) //Create the relation between these nodes if it does not already exist