Lucene query syntax and query_string


I have issues to understand the Query_string operator.

I am building a few search providers for my CMS and I already implemented Elastic Search and Azure Cognitive Search. Because my main database is MongoDB, Atlas Search could be a good fit for the users, who actually use Atlas.

There are a few differences to azure and elastic and I don’t understand whether I am doing something wrong or not.

What all three service have in common is that they are built on top of lucene, therefore I though that the query_string operator uses the lucene query syntax as it seems to be done by elastic and azure: Apache Lucene - Query Parser Syntax.

Documentation about the elastic query string query can be found under: Query string query | Elasticsearch Guide [8.6] | Elastic

There are a few thing that work differently:

  1. The Atlas query_string does not support fuzzy operator like helo~.
  2. The Atlas query_string cannot search in multiple fields, because “*” is not supported as a default_path.
  3. The Atlas query_string does not seem to support the lucene syntax at all.

Because Atlas search is also based on lucene I do not understand the reason for that. Is there something I do wrong? Is there a converter from lucene query syntax to the json structure from Mongo Atlas?

I have played around the lucene a little bit and I can probably make the parsing myself:

Have not tested it yet.