_routing字段介绍
一个document通过以下公式被路由到该索引下一个特定的分片:
shard_num = hash(_routing) % num_primary_shards
_routing的默认值是文档的_id或者文档的_parent ID。
自定义路由可以通过指定每个文档的routing值来实现。
例如:
curl -X PUT "http://localhost:9200/my_index/my_type/1?routing=user1&refresh=true" -H 'Content-Type: application/json' -d'
{
"title": "This is a document"
}
'
curl -X GET "http://localhost:9200/my_index/my_type/1?routing=user1"
1. 这个文档通过使用user1作为路由值,代替了ID
2. 相同的路由值需要在getting、deleting或者updating时提供。
这个_routing 域在查询时使用的例子:
curl -X GET "http://localhost:9200/my_index/_search" -H 'Content-Type: application/json' -d'
{
"query": {
"terms": {
"_routing": [ "user1" ]
}
}
}'
使用自定义路由搜索
自定义路由可以降低搜索的冲击。一个请求被直接匹配路由值的分片上,而不是分散在索引的所有分片中。
curl -X GET "http://localhost:9200/my_index/_search?routing=user1,user2" -H 'Content-Type: application/json' -d'
{
"query": {
"match": {
"title": "document"
}
}
}
'
这个搜索将被在关联user1、user2路由值的分片上执行。
如果使用自定路由,这个路由值在索引、查新、删除、更新时提供时非常重要的。如果忘记这个路由值将会导致这个文档在更多的分片上查找。作为一个保障,这个_routing域可以配置在mapping中,以保障在CRUD操作中必须提供该值。
curl -X PUT "http://localhost:9200/my_index2" -H 'Content-Type: application/json' -d'
{
"mappings": {
"my_type": {
"_routing": {
"required": true
}
}
}
}
'
curl -X PUT "http://localhost:9200/my_index2/my_type/1" -H 'Content-Type: application/json' -d'
{
"text": "No routing value provided"
}
'
1. 路由必须在my_type文档中
2. 这个索引请求将会抛出routing_missing_exception异常。
当自定了索引文档的_routing,则_id的唯一性将不能保证其在索引下所有分片中的唯一性。事实上,即使一个拥有相同_id的文档同样可能被分配在不通的分片中通过不同的_routing值。这就要求用户来保证这个IDS在全索引下的唯一性。
路由索引分区
一个索引可以配置自定义路由到一个分片子集的路由值而不是单一的分片。这个将减小集群不均衡的风险,同时,也可以减小搜索的压力。
这个可以在创建索引时,配置index.routing_partition_size参数完成。随着分区值的增加,分布更加均匀的数据将导致搜索在更多分片完成(这个其实是增加了搜索成本的)。
当提供了这个参数,则计算公式将变成:
shard_num = (hash(_routing) + hash(_id) % routing_partition_size) % num_primary_shards
这样,通过_routing域计算出一个分片集合,然后通过_id来选择分片集合中的一个分片。
为了保证这个特性,index.routing_partition_size值必须是大于1同时小雨index.number_of_shards的值。
一旦应用,这个索引将有以下限制:
- Mapping中不能配置父子关系
- 在索引的映射中必须有_routing字段。
参考链接:https://www.elastic.co/guide/en/elasticsearch/reference/5.6/mapping-routing-field.html
_routing字段介绍的更多相关文章
- Unihan(统汉字)常用字段介绍
0 背景 1 文件 1.1 IRG Sources 1.2 Dictionary Indices 1.3 Dictionary-like Data 1.4 Other Mappings 1.5 Rad ...
- ORM常用字段介绍
Django中的ORM Django项目使用MySQL数据库 1. 在Django项目的settings.py文件中,配置数据库连接信息: DATABASES = { "default&qu ...
- CDR话单主要字段介绍
l Time of call connection RRC连接时的时间,格式:yyyy年mm月dd日hh时mm分ss秒 l Call Setup Time per sections 呼叫建立时长 ...
- ES _source字段介绍——json文档,去掉的话无法更新部分文档,最重要的是无法reindex
摘自:https://es.xiaoleilu.com/070_Index_Mgmt/31_Metadata_source.html The _source field stores the JSON ...
- django的models字段介绍
#增加数据库数据方法#方法1CalcData.objects.create(var1 ='21',var2='22')#方法2obj =CalcData(var1 ='21',var2='22')jo ...
- ecshop数据库结构和字段介绍(转载)
ecs_account_log:账户变动日志(注册用户充值.支付等记录信息)字段 类型 Null 默认 字段说明log_id mediumint(8) 否 无 日志IDuser_id mediumin ...
- Django Form 的主要内置字段介绍
修改 urls.py,添加 path('field.html', views.field), 在 templates 下创建 field.html, 内容如下: <!DOCTYPE html&g ...
- ES 13 - Elasticsearch的元字段 (_index、_type、_source、_routing等)
目录 1 标识元字段 1.1 _index - 文档所属的索引 1.2 _uid - 包含_type和_id的复合字段 1.3 _type - 文档的类型 1.4 _id - 文档的id 2 文档来源 ...
- podspec文件介绍
podspec文件是cocopods引入的第三方代码库的配置索引文件 它的创建命令是:$pod spec create TestFile podspec文件的常用配置字段介绍 Pod::Spec.ne ...
随机推荐
- 多媒体文件格式分析 MP3文件结构及编解码流程
多媒体文件格式分析 http://blog.csdn.net/taniya001/article/details/7962864 多媒体文件格式分析 MP3文件结构及编解码流程 http://www. ...
- win32api win32gui win32con 窗口句柄 发送消息 常用方法
Pywin32是一个Python库,为python提供访问Windows API的扩展,提供了齐全的windows常量.接口.线程以及COM机制等等. 1.通过类名和标题查找窗口句柄,并获得窗口位置和 ...
- Python中正则模块re.compile、re.match及re.search函数用法
import rehelp(re.compile)'''输出结果为:Help on function compile in module re: compile(pattern, flags=0) C ...
- 企业和开发人员究竟该如何适应web标准?
以下几点注意事项仅供参考:完善的前期策划和分析完善的前期逻辑模型以及项目规范性文档的制定尽可能将行政性干预移到策划阶段(按照国内的情况,做到这一点可能很困难)尽可能向后兼容,在项目规范性文档制定阶段对 ...
- 巨坑:jqgrid竟然取不到编辑模式下input的值
今天遇到最奇葩的问题,竟然取不到input的值,感觉世界观都颠覆了.后来一搜资料,又是jqgrid框架搞的鬼,真搞不明白,开发框架就好好开发框架,留这么多坑有意思吗? jqgrid编辑模式下不要调用g ...
- Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation
1.主要完成的任务是能够将英文转译为法文,使用了一个encoder-decoder模型,在encoder的RNN模型中是将序列转化为一个向量.在decoder中是将向量转化为输出序列,使用encode ...
- git失败案例
哈哈哈,git终于能push了,哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈 我怀疑是系统版本的问题,之前一直不没能pu ...
- PostgreSQL 递归查询 (转)
数据库中的数据存在父子关系(单继承,每一条记录只有一个父亲). 如果要查询一条记录以及他的所有子记录,或者要查询一条记录以及他的所有父记录.那么递归查询就再合适不过了.可以简化复杂的SQL语句 现在 ...
- oracle快速创建主键
oracle中,有时我们会发现有一些表中,一些记录它们每个字段的数据 都是一样一样的,即重复数据,这种数据的不存在肯定是不对了. 究其原因,就是该表没有主键,给一个表创建主键,非常容易: alter ...
- Vue——解决[Vue warn]: Invalid prop: custom validator check failed for prop "index". found in错误
Invalid prop: custom validator check failed for prop "index". 错误重现: 使用element-ui的菜单,在SubMe ...