Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

db.collection.createSearchIndex()

項目一覧

  • 定義
  • 互換性
  • 構文
  • コマンドフィールド
  • 検索インデックス定義構文
  • ベクトル検索インデックスの定義構文
  • 動作
  • アクセス制御
  • すべてのフィールドに検索インデックスを作成する
  • 言語アナライザによる検索インデックスの作成
  • デフォルト名で検索インデックスを作成
  • ベクトル検索インデックスの作成
  • 詳細
db.collection.createSearchIndex()

バージョン 7.0 の新機能: (6.0.7 以降でも利用可能

指定されたコレクションに Atlas Search インデックスまたはVector Search インデックスを作成します。

重要

mongosh メソッド

このページでは、mongosh メソッドについて記載しています。ただし、データベースコマンドや Node.js などの言語固有のドライバーのドキュメントには該当しません

データベースコマンドについては、 createSearchIndexesコマンドを参照してください。

MongoDB API ドライバーについては、各言語の MongoDB ドライバー ドキュメントを参照してください。

このメソッドは、次の環境でホストされている配置で使用できます。

  • MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです

重要

このコマンドは、M 0クラスターまたはサーバーレスインスタンスではサポートされていません。 詳細については、「サポートされていないコマンド 」を参照してください。

コマンド構文:

db.<collection>.createSearchIndex(
<name>,
<type>,
{
<definition>
}
)

createSearchIndex() 次のフィールドを取ります。

フィールド
タイプ
必要性
説明

name

string

任意

作成する検索インデックスの名前。

単一のコレクションに同じ名前で複数のインデックスを作成することはできません。

nameを指定しない場合、インデックスの名前はdefaultになります。

type

string

任意

Type of search index to create. 次のいずれかを指定できます。

  • search

  • vectorSearch

typeフィールドを省略した場合、インデックス タイプはsearchです。

definition

ドキュメント

必須

作成するインデックスを説明するドキュメント。 definitionの構文は、標準検索インデックスを作成するか、ベクトル検索インデックスを作成するかによって異なります。 definitionの構文については、以下を参照してください。

検索インデックスの定義には、次のフィールドがあります。

{
analyzer: "<analyzer-for-index>",
searchAnalyzer: "<analyzer-for-query>",
mappings: {
dynamic: <boolean>,
fields: { <field-definition> }
},
analyzers: [ <custom-analyzer> ],
storedSource: <boolean> | {
<stored-source-definition>
},
synonyms: [ {
name: "<synonym-mapping-name>",
source: {
collection: "<source-collection-name>"
},
analyzer: "<synonym-mapping-analyzer>"
} ]
}
フィールド
タイプ
必要性
説明

analyzer

string

任意

インデックス作成時に string フィールドに適用するアナライザを指定します。

このフィールドを省略すると、インデックスは標準 アナライザを使用します。

searchAnalyzer

string

任意

テキストが検索される前にクエリ テキストに適用するアナライザを指定します。

このフィールドを省略すると、インデックスはanalyzerフィールドに指定されているのと同じアナライザを使用します。

searchAnalyzerフィールドとanalyzer フィールドの両方を省略すると、インデックスは 標準 アナライザを使用します。

mappings

オブジェクト

必須

このインデックスの異なるパスにあるフィールドのインデックス方法を指定します。

mappings.dynamic

ブール値

任意

このインデックスの 動的フィールドマッピング を有効または無効にします。

trueに設定されている場合、インデックスにはサポートされているデータ型を含むすべてのフィールドが含まれます。

falseに設定されている場合は、 mappings.fieldsを使用してインデックスを作成するフィールドを個別に指定する必要があります。

省略した場合、デフォルトは false になります。

mappings.fields

ドキュメント

条件付き

動的マッピングが無効になっている場合にのみ必要です。

インデックスを作成するフィールドを指定します。 詳しくは「フィールドマッピングの定義 」を参照してください。

analyzers

配列

任意

このインデックスで使用するカスタム アナライザを指定します。

storedSource

ブール値または保存されたソース定義

任意

返された StoredSource オプションを使用して実行されるクエリに保存するドキュメント フィールドを指定します。

Atlas Search ではすべてのデータ型のフィールドを保存できます。 storedSourceの値は次のいずれかになります。

  • true: すべてのフィールドを保存

  • false、フィールドを保存しない場合

  • ストレージからincludeまたはexcludeにフィールドを指定するオブジェクト

省略した場合、デフォルトは false になります。

詳しくは、 「 Atlas Search インデックスに保存されたソース フィールドの定義 」を参照してください。

synonyms

任意

インデックスで使用する シノニム マッピング を指定します。 シノニム(同意語) を設定すると、同じ意味または似た意味を持つ単語をインデックスして検索できます。

詳しくは、 「 Atlas Search インデックスでのシノニム マッピングの定義 」を参照してください。

ベクトル検索のインデックス定義には次のフィールドが含まれます。

{
"fields": [
{
"type": "vector" | "filter",
"path": "<field-to-index>",
"numDimensions": <number-of-dimensions>,
"similarity": "euclidean" | "cosine" | "dotProduct"
}
]
}

ベクトル検索のインデックス定義フィールドの説明については、「 ベクトル検索のフィールドにインデックスを作成する方法 」を参照してください。

createSearchIndex() インデックスの構築をトリガーします。 コマンドからの応答を受け取ってから、インデックスが準備完了するまでの間に遅延が発生する可能性があります。

検索インデックスのステータスを確認するには、 $listSearchIndexes集計ステージを使用します。

配置でアクセス制御を適用する場合、 createSearchIndex()を実行しているユーザーは、データベースまたはコレクションに対するcreateSearchIndexes特権アクションを持っている必要があります。

{
resource: {
db : <database>,
collection: <collection>
},
actions: [ "createSearchIndexes" ]
}

組み込みのreadWriteロールにはcreateSearchIndexes特権が付与されます。 次の例では、 productsデータベースでaccountUser01readWriteロールを付与しています。

db.grantRolesToUser(
"accountUser01",
[ { role: "readWrite", db: "products" } ]
)

次の例では、 moviesコレクションにsearchIndex01という名前の検索インデックスを作成します。

db.movies.createSearchIndex(
"searchIndex01",
{ mappings: { dynamic: true } }
)

インデックス定義でmappings: { dynamic: true }が指定されています。つまり、インデックスには コレクション内のデータ型をサポートしているすべてのフィールドが含まれています。

言語アナライザは、インデックスを作成するのに十分な重要ではない単語であるストップワードを導入します。

次の例では、 carsコレクションにfrenchIndex01という名前の検索インデックスを作成し、 frフィールドにlucene.frenchアナライザを指定します。

db.cars.createSearchIndex(
"frenchIndex01",
{
mappings: {
fields: {
subject: {
fields: {
fr: {
analyzer: "lucene.french",
type: "string"
}
},
type: "document"
}
}
}
}
)

言語アナライザの詳細については、「言語アナライザ 」を参照してください。

次のcreateSearchIndex()メソッドでは、インデックス定義のみを指定し、インデックス名を省略します。 コマンドは、 foodコレクションにdefaultという名前の検索インデックスを作成します。

db.food.createSearchIndex(
{
mappings: {
fields: {
title: {
type: "string"
}
}
}
}
)

次の例では、 moviesコレクションにvectorSearchIndex01という名前のベクトル検索インデックスを作成します。

db.movies.createSearchIndex(
"vectorSearchIndex01",
"vectorSearch",
{
fields: [
{
type: "vector",
numDimensions: 1,
path: "genre",
similarity: "cosine"
}
]
}
)

ベクトル検索インデックスには 1 つの次元が含まれており、 genreフィールドにインデックスが作成されます。

戻る

Atlas Search インデックス