Get Suggested Indexes
On this page
Retrieves any suggested indexes generated by the Atlas Performance Advisor.
Groups and projects are synonymous terms. Your {GROUP-ID}
is the
same as your project ID. For existing groups, your group/project ID
remains the same. The resource and corresponding endpoints use the
term groups
.
The Atlas Administration API authenticates using HTTP Digest Authentication. Provide a programmatic API public key and corresponding private key as the username and password when constructing the HTTP request. To learn how to configure API access for an Atlas project, see Get Started with the Atlas Administration API.
https://cloud.mongodb.com/api/atlas/v1.0
Resource
GET /groups/{GROUP-ID}/processes/{PROCESS-ID}/performanceAdvisor/suggestedIndexes
Request Path Parameters
Path Element | Description |
---|---|
GROUP-ID | Unique identifier for the project. |
PROCESS-ID | The Atlas hostname and port, e.g.
m10-shard-00-00-17jcm.mongodb.net:27017 . To retrieve all
processes in the project with a given GROUP-ID , use the
/groups/{GROUP-ID}/processes endpoint. |
Request Query Parameters
Name | Type | Necessity | Description | Default | ||||||
---|---|---|---|---|---|---|---|---|---|---|
pretty | boolean | Optional | Flag indicating whether the response body should be in a
prettyprint format. | false | ||||||
envelope | boolean | Optional | Flag indicating if Atlas should wrap the response in a JSON envelope. This option may be needed for some API clients. These clients cannot access the HTTP response headers or status code. To remediate this, set envelope=true in the query. For endpoints that return one result, the response body includes:
| false |
since | number | Optional | Timestamp in the number of seconds that have elapsed since the UNIX epoch from which to retrieve suggested indexes. | |
---|---|---|---|---|
duration | number | Optional | Length of time in milliseconds during which to find
suggested indexes among the managed namespaces in the cluster. | |
namespaces | string | Optional | Namespaces from which to retrieve suggested indexes. A namespace
consists of the database and collection resource separated by a
To specify multiple namespaces, pass the parameter multiple
times using an ampersand ( Example ?namespaces=data.stocks&namespaces=data.zips&pretty=true Omit to return results for all namespaces. | |
nIndexes | number | Optional | Maximum number of indexes to suggest. | Unlimited |
nExamples | number | Optional | Maximum number of examples queries to provide that will be
improved by a suggested index. | 5 |
- If you specify since and omit duration, the response contains results from the since point up to and including the present time.
- If you specify duration and omit since, the response contains results from duration ms ago up to and including the present time.
- If you omit both since and duration, the response contains results from the previous 24 hours up up to and including the present time.
Request Body Parameters
This endpoint does not use HTTP request body parameters.
Response
Name | Type | Description |
---|---|---|
shapes | array of documents | Documents with information about the query shapes that are served by the
suggested indexes. |
shapes[n].avgMs | number | Average duration in milliseconds for the queries examined that
match this shape. |
shapes[n].count | number | Number of queries examined that match this shape. |
shapes[n].id | objectId | Unique id for this shape. Exists only for the duration of the
API request. |
shapes[n].inefficiencyScore | number | Average number of documents read for every document returned
by the query. For more information, see Understanding the
Query Inefficiency Score. |
shapes[n].namespace | string | Namespace searched by the queries in this shape. |
shapes[n].operations | array of documents | Documents with specific information and log lines for individual
queries. |
shapes[n].operations[n].predicates | array of documents | Documents containing the search criteria used by the query.
Values in key-value pairs will be redacted in these predicates
unless the user has Project Data Access Read Only permissions or higher. |
shapes[n].operations[n].raw | string | Raw log line produced by the query. |
shapes[n].operations[n].stats | document | Query statistics. |
shapes[n].operations[n].stats.ms | number | Duration in milliseconds of the query. |
shapes[n].operations[n].stats.nReturned | number | Number of results returned by the query. |
shapes[n].stats.nScanned | number | Number of documents read by the query. |
shapes[n].stats.ts | number | Query timestamp, in seconds since epoch. |
suggestedIndexes | array of documents | Documents with information about the indexes suggested by the
Performance Advisor. |
suggestedIndexes[n].id | objectId | Unique id for this suggested index. |
suggestedIndexes[n].impact | array of objectIds | List of unique identifers which correspond the query shapes in this response which pertain to this suggested index. Note This field does not correspond to Impact in the Performance Advisor user interface. |
suggestedIndexes[n].index | array of documents | Each array element is a document that specifies a key in the index and its sort order, ascending or descending.
Keys in indexes with multiple keys appear in the same order that they appear in the index. |
suggestedIndexes[n].index.<fieldname> | string | Specific field to be indexed. |
suggestedIndexes[n].namespace | string | Namespace of the suggested index. |
suggestedIndexes[n].weight | number | Estimated percentage performance improvement in decimal form
that the suggested index would provide. Corresponds to
Impact in the Performance
Advisor user interface. |
suggestedIndexes[n].dismissedFromAutoCreation | boolean | Indicates whether this index suggestion was manually dismissed
from auto-creation. This field is only present when the value
is true . |
Example Request
curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest -i \ --header "Accept: application/json" \ --request GET "https://cloud.mongodb.com/api/atlas/v1.0/groups/{GROUP-ID}/processes/{PROCESS-ID}/performanceAdvisor/suggestedIndexes?namespaces=test.users&namespaces=test.inventory&pretty=true"
Example Response
{ "shapes" : [ { "avgMs" : 42, "count" : 2, "id" : "5b74689a80eef53f3388897e", "inefficiencyScore" : 50000, "namespace" : "test.users", "operations" : [ { "predicates" : [{ "find" : { "emails" : "la@sa.kp" } }], "raw" : "2018-08-15T17:14:11.115+0000 I COMMAND [conn4576] command test.users appName: \"MongoDB Shell\" command: find { find: \"users\", filter: { emails: \"la@sa.kp\" }, lsid: { id: UUID(\"1a4e71d3-9b67-4e9c-b078-9fdf3fae9091\") }, $clusterTime: { clusterTime: Timestamp(1534353241, 1), signature: { hash: BinData(0, AB91938B7CF7BC87994A2909A98D87F29101EFA0), keyId: 6589681559618453505 } }, $db: \"test\" } planSummary: COLLSCAN keysExamined:0 docsExamined:50000 cursorExhausted:1 numYields:391 nreturned:1 reslen:339 locks:{ Global: { acquireCount: { r: 784 } }, Database: { acquireCount: { r: 392 } }, Collection: { acquireCount: { r: 392 } } } protocol:op_msg 34ms", "stats" : { "ms" : 34, "nReturned" : 1, "nScanned" : 50000, "ts" : 1534353251147 } }, { "predicates" : [{ "find" : { "emails" : "tocde@fijoow.to" } }], "raw" : "2018-08-15T17:14:18.665+0000 I COMMAND [conn4576] command test.users appName: \"MongoDB Shell\" command: find { find: \"users\", filter: { emails: \"tocde@fijoow.to\" }, lsid: { id: UUID(\"1a4e71d3-9b67-4e9c-b078-9fdf3fae9091\") }, $clusterTime: { clusterTime: Timestamp(1534353241, 1), signature: { hash: BinData(0, AB91938B7CF7BC87994A2909A98D87F29101EFA0), keyId: 6589681559618453505 } }, $db: \"test\" } planSummary: COLLSCAN keysExamined:0 docsExamined:50000 cursorExhausted:1 numYields:390 nreturned:1 reslen:342 locks:{ Global: { acquireCount: { r: 782 } }, Database: { acquireCount: { r: 391 } }, Collection: { acquireCount: { r: 391 } } } protocol:op_msg 36ms", "stats" : { "ms" : 36, "nReturned" : 1, "nScanned" : 50000, "ts" : 1534353258697 } } ] } ], "suggestedIndexes" : [ { "id" : "5b74689a80eef53f3388897f", "impact" : [ "5b74689a80eef53f3388897e" ], "index" : [ { "emails" : 1 } ], "namespace" : "test.users", "weight" : 0.372204809018156 }, { "id" : "5b74689a80eef53f33888980", "impact" : [ "5b74689a80eef53f3388897d" ], "index" : [ { "email" : 1 } ], "namespace" : "test.inventory", "weight" : 0.190375783099664 } ] }