私はelasticsearchをthis awesome tutorialから学びます。サンプルコードが指定されている「nusearch」インデックスを作成するには :特定のタイプをElasticSearchインデックスにマッピングする
Client.CreateIndex("nusearch", i => i
.Settings(s => s
.NumberOfShards(2)
.NumberOfReplicas(0)
.Analysis(Analysis)
)
.Mappings(m => m
.Map<Package>(MapPackage)
)
);
をパッケージのクラスは「nusearch」インデックスに格納されることNESTに伝え.Mappingsセクションがあります。 は、なぜ私はそのようなエラーが出るん:そのようにインデックスパッケージにしようとしたとき
Index name is null for the given type and no default index is set. Map an index name using ConnectionSettings.MapDefaultTypeIndices() or set a default index using ConnectionSettings.DefaultIndex().'
?:
foreach (Package pack in packages)
{
Client.Index<Package>(pack);
}
ConnectionSettings構成はこれに縮小されています
_connectionSettings = new ConnectionSettings(CreateUri(9200));
私は理由は、なぜタイプは、特定のインデックスに格納する必要がありますConnectionSettings情報を追加する必要があるのだろうか? ConnectionSettingsで特定のPOCOをマップする必要はありますか? アプリケーションが大きく、マップする型がたくさんある場合はどうなりますか?それは厄介ではないですか? CreateIndexメソッドは、そのような情報を提供するためのより良い場所です。
私はすでにそれはそのようなコードで可能であることをチェックしました:
_connectionSettings = new ConnectionSettings(CreateUri(9200))
.MapDefaultTypeIndices(m => m.Add(typeof(Package), "nusearch"))
か:
.InferMappingFor<Package>(i => i
.TypeName("package")
.IndexName("nusearch"))
)
方法InferMappingForがMapDefaultTypeIndicesの拡張版ですか?
あなたが私に知ってもらえますか?.TypeNameメソッドは正確にElasticSearchを意味しますか?それを使用するベストプラクティスは何ですか?それが省略されたときに機能するので、検索するときに意味があると思いますか?
お返事ありがとうございます。