NEST教程系列:推断索引名

NEST教程系列:三种推断索引名写法

链接时设置默认索引

构建 ConnectionSettings 时调用 DefaultIndex() 方法指定默认索引名。当没法为请求解析具体索引名时使用默认索引名html

var settings = new ConnectionSettings()
    .DefaultIndex("defaultindex"); 
    
var client = new ElasticClient(settings);
var searchResponse = client.Search<Project>();

此时,当发送请求时实际 URL 以下api

"http://localhost:9200/defaultindex/_search"

设置 .NET 类映射索引名

构建 ConnectionSettings 时调用 DefaultMappingFor<T>() 方法为类对象配置映射的索引名app

var settings = new ConnectionSettings()
    .DefaultMappingFor<Project>(m => m
        .IndexName("projects")
    );

var client = new ElasticClient(settings);
var searchResponse = client.Search<Project>();

此时,当发送请求时实际 URL 以下elasticsearch

"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 以下ide

"http://localhost:9200/projects/_search"

可是如下写法ui

var objectSearchResponse = client.Search<object>();

发送请求时实际 URL 以下code

"http://localhost:9200/defaultindex/_search"
  • DefaultMappingFor<T>() 还能够用于指定类型的其余默认值,包括属性名称、用于文档id的属性等等

在建立请求的时候直接显式指定索引名

对于须要索引名的API调用,能够在请求中显式地提供索引名htm

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"

总结

执行请求时的索引名取值优先级排序为

  1. 在建立请求的时候直接显式指定索引名
  2. 设置 .NET 类映射索引名
  3. 链接时设置默认索引

🚀官网传送门

相关文章
相关标签/搜索