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. Nice Jquery Validator DOM 绑定

    针对表单的绑定 示例:在 form 上绑定 data-validator-option 来配置参数 <form data-validator-option='{stopOnError:false ...

  2. hql 转 sql

    import org.hibernate.engine.SessionFactoryImplementor; import org.hibernate.hql.ast.QueryTranslatorI ...

  3. EIGRP-14-EIGRP的命名模式

    从IOS 15.0(1)M版本开始,工程师可以在路由器上使用命名模式(Named Mode)配置EIGRP进程.按照IPv4和IPv6,通过AS号来配置EIGRP进程的做法称为经典模式(Classic ...

  4. <WP8开发学习笔记>动态修改启动时导航的第一个页面(如登录前启动页为LoginPage,登录后变为MainPage)

    很多时候我们需要在启动程序的时候根据状态改变初始导航页面,比如程序在启动的时候判断用户是否登录, 如果未登录则跳转到LoginPage.xaml否则跳转到MainPage界面. 这时候就要分析程序的启 ...

  5. [转] Linux下用文件IO的方式操作GPIO(/sys/class/gpio)

    点击阅读原文 一.概述 通过 sysfs 方式控制 GPIO,先访问 /sys/class/gpio 目录,向 export 文件写入 GPIO 编号,使得该 GPIO 的操作接口从内核空间暴露到用户 ...

  6. group by <grouping sets(...) ><cube(...)>

    GROUP BY      GROUPING SETS() 后面将还会写学习 with cube,  with rollup,以及将它们转换为标准的GROUP BY的子句GROUP SET(), CU ...

  7. turtle 画国旗

    代码实现: import turtle import time import os def draw_square(org_x, org_y, x, y): turtle.setpos(org_x, ...

  8. IDEA之maven配置详解

    这两天被maven配置搞得焦头烂额,前后忙活了三天才彻底搞定. 下面我总结一下配置的步骤. 步骤 1. 首先去maven官网去下载maven,http://maven.apache.org/ 这里教大 ...

  9. 对select函数的理解

    对select函数的理解 1. 处理多个socket链接的方法 阻塞模式下服务端要解决多个客户链接的问题的3个思路: 每个客户端的socket对应一个内核线程,在这个线程内部进行阻塞的read 单线程 ...

  10. READSJC.md

    这个作业属于哪个课程 软件工程 这个作业要求在哪里 点我 这个作业的目标 介绍自己 作业正文 往下看啦 其他参考文献 空空如也 介绍自己: 我是综合实验班的孙劼成. 天天宅在家里实在是太无聊了,就背背 ...