Within the context of an environment that actually needs to distinguish between "find if there" and "find if there; create and find if not" there is likely a specific term used already. I would double check to see if there is a preference in your field or from your colleagues.
If that fails, here is how I see the options (full opinion disclaimer applies):
"Get" mildly assumes something will be found; if not, the scope should be broadened until the object is found. It also suggests obtaining or returning with the object:
Get me a coke.
Get me a sweater.
A response of "I couldn't find one" could plausibly be countered with "Then go get me one!" This implies going to the store or looking harder.
Strongly assumes that something exists and you need to locate it.
Find the keys.
We will find the criminal.
A punster could justify responding to "find me a coke" by coming back without the coke and letting the requester know that one was found but the general implication in the request is to bring the object back.
"Retrieve" is generally used for looking up information or fetching something that is already known and located:
Go retrieve the files on the Anderson case.
This dog retrieves ducks like the best of them.
It seems to have also caught on with regards to databases, drives, email and other computer related terms.
Searching for something again implies that it does exist and you need to locate it. I personally consider "search" more applicable for potentially not existing; "find" seems more appropriate for something you know exists. "Searches" also seem to take longer (or at least can.)
The search for extraterrestrial life continues.
We searched for a place to make camp.
"Obtain" implies possession more than existence but it would be a little difficult to obtain something that doesn't exist. I don't generally relate "obtain" to looking for anything at all; the object is already known or located and now you want to own it.
He obtained greatness.
We obtained a rare collection of antiques.
We must obtain the jewel!
The implications of "locate" are much more physical. It seems to apply best for objects you know exist but have lost or can no longer find. Locating carries little to no implication of returning with the object.
Please locate my child!
Red 5, what is your location?
We need to relocate the project.
The idea of actually creating an object if one isn't found seems most applicable to these terms:
These are have a stronger implication of actually returning with an object and a weaker implication of finding an object. I would personally use "get" as it seems to fit this pattern the best:
Get me a coke.
I couldn't find one.
Get me a coke.
The idea of simply reporting if an object exists and, if it does, returning with it matches these options well:
I would use "find" as it more strongly implies that you actually need the object for some reason. "Retrieve" is close but I think it is a little too close to "get" and may be a little confusing.
And such is my reasoning. The summary: Use "get" for finding an object if it exists and creating it if it does not; use "find" for finding an object and doing nothing if it does not exist.