Я думаю, типы данных не согласованы.Одним из свойств является string, а другим - double (float).Вы можете использовать функцию toFloat для преобразования строки во float, тогда ваш запрос будет работать.
MATCH (p:Post),(t:Thread)
WHERE EXISTS (p.post_reply_number)
AND EXISTS (t.pos)
AND toFloat(p.post_reply_number)=t.pos
CREATE (p)-[r:FIRST_POST]->(t)
Я попытался создать примеры узлов / свойств, используя типы данных int (post_reply_number) и float (pos), и ваш запрос работает.