NEST教程系列:三種推斷索引名寫法
目錄
- NEST教程系列:三種推斷索引名寫法
- 連接時設定默認索引
- 設定 .NET 類映射索引名
- 在創建請求的時候直接顯式指定索引名
- 總結
連接時設定默認索引
構建
ConnectionSettings時呼叫DefaultIndex()方法指定默認索引名,當無法為請求決議具體索引名時使用默認索引名
var settings = new ConnectionSettings()
.DefaultIndex("defaultindex");
var client = new ElasticClient(settings);
var searchResponse = client.Search<Project>();
此時,當發送請求時實際 URL 如下
"http://localhost:9200/defaultindex/_search"
設定 .NET 類映射索引名
構建
ConnectionSettings時呼叫DefaultMappingFor<T>()方法為類物件配置映射的索引名
var settings = new ConnectionSettings()
.DefaultMappingFor<Project>(m => m
.IndexName("projects")
);
var client = new ElasticClient(settings);
var searchResponse = client.Search<Project>();
此時,當發送請求時實際 URL 如下
"http://localhost:9200/projects/_search"
DefaultMappingFor<T>()方法配置映射的索引名使用優先級高于DefaultIndex()方法設定的默認索引名
var settings = new ConnectionSettings()
.DefaultIndex("defaultindex")
.DefaultMappingFor<Project>(m => m
.IndexName("projects")
);
var client = new ElasticClient(settings);
var projectSearchResponse = client.Search<Project>();
此時,當發送請求時實際 URL 如下
"http://localhost:9200/projects/_search"
但是以下寫法
var objectSearchResponse = client.Search<object>();
發送請求時實際 URL 如下
"http://localhost:9200/defaultindex/_search"
DefaultMappingFor<T>()還可以用于指定型別的其他默認值,包括屬性名稱、用于檔案id的屬性等等
在創建請求的時候直接顯式指定索引名
對于需要索引名的API呼叫,可以在請求中顯式地提供索引名
var settings = new ConnectionSettings();
var client = new ElasticClient(settings);
var response = client.Search<Project>(s => s
.Index("some-other-index") );
此時,當發送請求時實際 URL 如下
"http://localhost:9200/some-other-index/_search"
當在請求中顯示指定索引名時,它將優先于 DefaultMappingFor<T>() 方法配置映射的索引名和DefaultIndex() 方法設定的默認索引名
var settings = new ConnectionSettings()
.DefaultIndex("defaultindex")
.DefaultMappingFor<Project>(m => m
.IndexName("projects")
);
var client = new ElasticClient(settings);
var response = client.Search<Project>(s => s
.Index("some-other-index"));
此時,當發送請求時實際 URL 如下
"http://localhost:9200/some-other-index/_search"
總結
執行請求時的索引名取值優先級排序為
- 在創建請求的時候直接顯式指定索引名
- 設定 .NET 類映射索引名
- 連接時設定默認索引
??官網傳送門
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/3523.html
標籤:.NET Core
