Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /
Atlas Search インデックス

db.コレクション.createSearchIndex()(mongoshメソッド)

db.collection.createSearchIndex()

バージョン 6.0.7 の新機能

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

重要

mongosh メソッド

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

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

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

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

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

コマンド構文:

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

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

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

name

string

任意

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

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

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

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

任意

searchAnalyzer

string

任意

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

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

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

mappings

オブジェクト

必須

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

mappings.dynamic

ブール値

任意

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

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

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

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

mappings.fields

ドキュメント

条件付き

analyzers

配列

任意

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

storedSource

任意

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

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

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

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

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

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

詳細については、「fts-stored-source-defined」を参照してください。

synonyms

任意

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

詳細については、 シノニム-リファレンス を参照してください。

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"
}
}
}
}
)

戻る

Atlas Search インデックス

項目一覧