According to the documentation for the search filter operator (see https://tiddlywiki.com/#search%20Operator) , you can precede it with an exclamation point (!) to find tiddlers that do not have the specified search term(s), like this:
This will first parse the key field contents as a list and then look for items that are an exact match for the specified value, so that “pearl” and “appearance” won’t be considered as a match for “pear”.
Also, note that if the key field is expected to have just a single literal text value (i.e., NOT a list of values), then you can skip the search or contains filter operators and use the field filter operator (see https://tiddlywiki.com/#field%20Operator) instead, like this:
and, because “…the syntax of a filter step treats any unrecognised filter operator as if it was the suffix to the field operator…”, you can simplify this further to just
<<list-links "[search:text[apple]] +[has:feild[key]!contains:key[pear]]">>
This will search tiddler with apple in the text field and those only have key field but not pear in the key field.
So, it won’t return tiddler have not key field which can be many tiddlers.