Elasticsearch.Nest 教程系列 9-1 转换:Index name inference | 索引名推断的3种方式
本系列博文是“伪”官方文档翻译(更加本土化),并非完全将官方文档进行翻译,而是在查阅、测试原始文档并转换为自己真知灼见后的“准”翻译。有不同见解 / 说明不周的地方,还请海涵、不吝拍砖 :)
官方文档见此:https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/introduction.html
本系列对应的版本环境:ElasticSearch@7.3.1,NEST@7.3.1,IDE 和开发平台默认为 VS2019,.NET CORE 2.1
NEST 提供了多种方式来推断索引名,不同方式可以同时指定,但相互之间存在优先级关系,具体如下:
示例
配置类:
1 | public class ElasticSearchSettings |
1.使用默认索引名调用 Search
配置:
1 | public ElasticSearchClient(ElasticSearchSettings esSettings) |
调用
1 | var result = _client.Search<User>(); |
当调用 Search
1 | "http://localhost:9200/defaultindex/_search" |
2.使用 .NET 类显式指定索引名称
配置:
1 | public ElasticSearchClient(ElasticSearchSettings esSettings) |
调用:
1 | var result = _client.Search<User>(); |
这个时候再调用搜索 User,此时的请求的 Url 如下:
1 | "http://localhost:9200/user/_search" |
-
当同时通过 DefaultIndex 和 DefaultMappingFor
指定了索引名的时候,优先级顺序如下: - ** “DefaultMappingFor” > “DefaultIndex”。
3.在创建请求的时候直接显式指定索引名
配置如下
1 | public ElasticSearchClient(ElasticSearchSettings esSettings) |
在请求的时候指定索引名
1 | var result = _client.Search<User>(user=>user.Index("anotheruser")); |
最终请求的 url 为:
1 | "http://localhost:9200/anotheruser/_search" |
-
当同时通过Request 上的 Index, DefaultIndex 和 DefaultMappingFor
来指定索引名的时候,优先级顺序如下: - “Request 上的 Index” > “DefaultMappingFor” > “DefaultIndex”。
【其他配置选项见此:3 - NEST 教程系列 3:配置选项】