The flow seems entirely reasonable. You may run into troubles with exact vs partial matches to the search request though.
E.g. if someone searches for
"foo bar baz" in the
description field, that will match any documents saying containing
"baz" since you are using a match query. You may have multiple matches to deal with.
Instead, you may want to use a
term query, since that performs an exact match. But that also means that case sensitivity matters, as well as spacing and special characters. You could also try using phrase searches but it also has edge-cases.
Basically, search is a bit more nuanced than just a database table lookup, since you need to deal with partial matches.
Perhaps show the results to the user and ask if one of the matching docs was their input? If not they can add it to the index. That saves you a lot of trouble of trying to determine how well partial matches match the input.