How to run Compound Queries with Weighted Fields¶
This tutorial describes how to create an index with dynamic mapping on
the sample_mflix.movies
collection. It shows how to run compound
queries against the released
field and alter the score using
constant
, function
, and
boost
. It takes you through the following steps:
- Set up an Atlas Search index with dynamic mapping for the
sample_mflix.movies
collection. - Run Atlas Search queries against the
released
field in thesample_mflix.movies
collection and alter the score using specific a word in thetitle
field.
Before you begin, ensure that your Atlas cluster meets the requirements described in the Prerequisites.
Create the Atlas Search Index With Dynamic Mapping¶
In this section, you will create an Atlas Search index that uses uses dynamic
mapping to index the fields in the sample_mflix.movies
collection.
Navigate to the Atlas Search page for your project.¶
- If it is not already displayed, select the organization that contains your desired project from the Organizations menu in the navigation bar.
- If it is not already displayed, select your desired project from the Projects menu in the navigation bar.
- Click your cluster's name.
- Click the Search tab.
Click Create Index.¶
Select a Configuration Method and click Next.¶
- For a guided experience, select Visual Editor.
- To edit the raw index definition, select JSON Editor.
Enter the Index Name, and set the Database and Collection.¶
In the Index Name field, enter
default
.The index name defaults to default. You can leave the default name in place or choose one of your own.
NoteIf you name your index
default
, you don't need to specify anindex
parameter when using the $search pipeline stage. Otherwise, you must specify the index name using theindex
parameter.Index names must be unique within their namespace.
- In the Database and Collection section, find the
sample_mflix
database, and select themovies
collection.
Specify an index definition.¶
You can create an Atlas Search index that uses dynamic mappings through the Visual Editor or
JSON Editor in the Atlas User Interface. The
following index definition dynamically indexes the fields of
supported types in the movies
collection.
Visual Editor¶
- Click Next.
- Review the
"default"
index definition for themovies
collection.
JSON Editor¶
- Click Next.
Review the index definition.
Your index definition should look similar to the following:
{ "mappings": { "dynamic": true } } The above index definition dynamically indexes the fields of supported types in each document in the
movies
collection.- Click Next.
Click Create Search Index.¶
Close the You're All Set! Modal Window.¶
A modal window appears to let you know your index is building. Click the Close button.
Wait for the index to finish building.¶
The index should take about one minute to build. While it is
building, the Status column reads Build in
Progress
. When it is finished building, the
Status column reads Active
.
Run a Compound Query¶
➤ Use the Select your language drop-down menu to set the language of the examples in this section.
You can use the compound operator to combine two or more
operators into a single query. Every document that Atlas Search returns for
your query is assigned a score based on relevance, in order from
highest score to lowest. In this section, you will connect to your
Atlas cluster and run the sample queries using the
compound operator against the title
and released
fields in the sample_mflix.movies
collection. The sample queries
use custom scoring to alter the relevance score returned by Atlas Search.