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

连接时设置默认索引

构建 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"

总结

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

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

官网传送门

NEST教程系列:推断索引名的更多相关文章

  1. AngularJs学习笔记--Guide教程系列文章索引

    在很久很久以前,一位前辈向我推荐AngularJs.但当时我没有好好学习,仅仅是讲文档浏览了一次.后来觉醒了……于是下定决心好好理解这系列的文档,并意译出来(英文水平不足……不能说是翻译,有些实在是看 ...

  2. MongoDB基础教程系列--第六篇 MongoDB 索引

    使用索引可以大大提高文档的查询效率.如果没有索引,会遍历集合中所有文档,才能找到匹配查询语句的文档.这样遍历集合中整个文档的方式是非常耗时的,特别是处理大数据时,耗时几十秒甚至几分钟都是有可能的. 创 ...

  3. Solidity教程系列1 - 类型介绍

    现在的Solidity中文文档,要么翻译的太烂,要么太旧,决定重新翻译下,再加上代码事例讲解. 写在前面 Solidity是以太坊智能合约编程语言,阅读本文前,你应该对以太坊.智能合约有所了解, 如果 ...

  4. 智能合约语言Solidity教程系列2 - 地址类型介绍

    智能合约语言Solidity教程系列第二篇 - Solidity地址类型介绍. 写在前面 Solidity是以太坊智能合约编程语言,阅读本文前,你应该对以太坊.智能合约有所了解,如果你还不了解,建议你 ...

  5. 智能合约语言 Solidity 教程系列2 - 地址类型介绍

    Solidity教程系列第二篇 - Solidity地址类型介绍. 写在前面 Solidity是以太坊智能合约编程语言,阅读本文前,你应该对以太坊.智能合约有所了解,如果你还不了解,建议你先看以太坊是 ...

  6. 【原创分享·微信支付】C# MVC 微信支付教程系列之现金红包

            微信支付教程系列之现金红包           最近最弄这个微信支付的功能,然后扫码.公众号支付,这些都做了,闲着无聊,就看了看微信支付的其他功能,发现还有一个叫“现金红包”的玩意,想 ...

  7. 【原创分享·微信支付】 C# MVC 微信支付教程系列之扫码支付

    微信支付教程系列之扫码支付                  今天,我们来一起探讨一下这个微信扫码支付.何为扫码支付呢?这里面,扫的码就是二维码了,就是我们经常扫一扫的那种二维码图片,例如,我们自己添 ...

  8. 【原创分享·微信支付】 C# MVC 微信支付教程系列之公众号支付

    微信支付教程系列之公众号支付         今天,我们接着讲微信支付的系列教程,前面,我们讲了这个微信红包和扫码支付.现在,我们讲讲这个公众号支付.公众号支付的应用环境常见的用户通过公众号,然后再通 ...

  9. C# 微信支付教程系列之扫码支付

    微信支付教程系列之扫码支付            今天,我们来一起探讨一下这个微信扫码支付.何为扫码支付呢?这里面,扫的码就是二维码了,就是我们经常扫一扫的那种二维码图片,例如,我们自己添加好友的时候 ...

随机推荐

  1. Python3 源码阅读 - 垃圾回收机制

    Python的垃圾回收机制包括了两大部分: 引用计数(大部分在 Include/object.h 中定义) 标记清除+隔代回收(大部分在 Modules/gcmodule.c 中定义) 1. 引用计数 ...

  2. DRY原则的一个简单实践

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文出处:https://dzone.com/articles/dry-dont-repeat-yourse ...

  3. virtualbox 基于nat模式搭建局域网并且和宿主机通信

    1.VIRTUALbox 2.两台虚拟机,设置网络为DHCP方式 检查文件确认是dhcp模式不是的百度搜索修改:/etc/sysconfig/network-scripts/ifcfg-enps3(网 ...

  4. [CF696D]Legen...

    题目   点这里看题目. 分析   首先对于模式串建立 AC 自动机,并且计算出每个状态\(p\)的贡献总和\(con(p)\).   考虑一个朴素的 DP :   \(f(i,p)\):当前串长度为 ...

  5. ZooKeeper使用入门

    ZooKeeper简介 ZooKeeper是一个分布式的,开源的分布式应用程序协调服务,是Hadoop的子项目之一.它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护.域名服务.分布式 ...

  6. Apache Hudi:云数据湖解决方案

    1. 引入 开源Apache Hudi项目为Uber等大型组织提供流处理能力,每天可处理数据湖上的数十亿条记录. 随着世界各地的组织采用该技术,Apache开源数据湖项目已经日渐成熟. Apache ...

  7. Docker图形界面管理

    之前都是使用命令行进行Docker的管理,这里简单介绍一下Docker的图形界面管理.之所以说简单介绍,是因为在生产环境都是集群,很少使用图形界面管理单台Docker主机,所以就演示记录一下,在个人测 ...

  8. 一个JS库Lodash

    中文文档:https://www.html.cn/doc/lodash/#_aftern-func

  9. Spring如何解决循环依赖?

    介绍 先说一下什么是循环依赖,Spring在初始化A的时候需要注入B,而初始化B的时候需要注入A,在Spring启动后这2个Bean都要被初始化完成 Spring的循环依赖有两种场景 构造器的循环依赖 ...

  10. jquery 李南江老师jquery和ajax视频教程

    链接:https://pan.baidu.com/s/11QF97RLg1aW9bf6o-CdHvQ 密码:qfer https://www.bilibili.com/video/av22807707 ...