description: "createSearchIndex" schemaVersion: "1.4" createEntities: - client: id: &client0 client0 useMultipleMongoses: false observeEvents: - commandStartedEvent - database: id: &database0 database0 client: *client0 databaseName: *database0 - collection: id: &collection0 collection0 database: *database0 collectionName: *collection0 runOnRequirements: # Skip server versions without fix of SERVER-83107 to avoid error message "BSON field 'createSearchIndexes.indexes.type' is an unknown field." # SERVER-83107 was not backported to 7.1. - minServerVersion: "7.0.5" maxServerVersion: "7.0.99" topologies: [ replicaset, load-balanced, sharded ] serverless: forbid - minServerVersion: "7.2.0" topologies: [ replicaset, load-balanced, sharded ] serverless: forbid tests: - description: "no name provided for an index definition" operations: - name: createSearchIndex object: *collection0 arguments: model: { definition: &definition { mappings: { dynamic: true } } , type: 'search' } expectError: # This test always errors in a non-Atlas environment. The test functions as a unit test by asserting # that the driver constructs and sends the correct command. # The expected error message was changed in SERVER-83003. Check for the substring "Atlas" shared by both error messages. isError: true errorContains: Atlas expectEvents: - client: *client0 events: - commandStartedEvent: command: createSearchIndexes: *collection0 indexes: [ { definition: *definition, type: 'search'} ] $db: *database0 - description: "name provided for an index definition" operations: - name: createSearchIndex object: *collection0 arguments: model: { definition: &definition { mappings: { dynamic: true } } , name: 'test index', type: 'search' } expectError: # This test always errors in a non-Atlas environment. The test functions as a unit test by asserting # that the driver constructs and sends the correct command. # The expected error message was changed in SERVER-83003. Check for the substring "Atlas" shared by both error messages. isError: true errorContains: Atlas expectEvents: - client: *client0 events: - commandStartedEvent: command: createSearchIndexes: *collection0 indexes: [ { definition: *definition, name: 'test index', type: 'search' } ] $db: *database0 - description: "create a vector search index" operations: - name: createSearchIndex object: *collection0 arguments: model: { definition: &definition { fields: [ {"type": "vector", "path": "plot_embedding", "numDimensions": 1536, "similarity": "euclidean"} ] } , name: 'test index', type: 'vectorSearch' } expectError: # This test always errors in a non-Atlas environment. The test functions as a unit test by asserting # that the driver constructs and sends the correct command. # The expected error message was changed in SERVER-83003. Check for the substring "Atlas" shared by both error messages. isError: true errorContains: Atlas expectEvents: - client: *client0 events: - commandStartedEvent: command: createSearchIndexes: *collection0 indexes: [ { definition: *definition, name: 'test index', type: 'vectorSearch' } ] $db: *database0