深入理解Elasticsearch写入过程 使用routing会导致docid不再全局唯一 Allocate策略 + routing参数

1.默认查询接口会搜索所有的shard,但也可以指定routing字段,这样就只会查询routing计算出来的shard,提高查询速度。  --使用routing会导致docid不再全局唯一

使用方式也非常简单,只需在查询语句上面指定routing即可,允许指定多个:

复制代码
-- 查询所有分区
GET route_test/_search 
{
  "query": {
    "match": {
      "data": "b"
    }
  }
}

-- 查询指定分区
GET route_test/_search?routing=key1,key2 
{
  "query": {
    "match": {
      "data": "b"
    }
  }
}
复制代码

2.指定routing还有个弊端就是容易造成负载不均衡。所以ES提供了一种机制可以将数据路由到一组shard上面,而不是某一个。只需在创建索引时(也只能在创建时)设置index.routing_partition_size,默认值是1,即只路由到1个shard,可以将其设置为大于1且小于索引shard总数的某个值,就可以路由到一组shard了。值越大,数据越均匀。

https://www.cnblogs.com/caoweixiong/p/12029789.html   参考

3.ES shard的实质是Lucene的索引,所以其实每个shard都是一个功能完善的倒排索引。

https://www.jianshu.com/p/cdfe5c019fab

posted @   littlevigra  阅读(846)  评论(3编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
历史上的今天:
2019-03-29 kubernete 数据库 etcd
2018-03-29 公司架构理解 - 千万 pv 网站 -- 排错思路 -- 架构化分解排错
2018-03-29 公钥与私钥,数字签名 - RSA非对称加密
2018-03-29 记录Windows远程登录日志(转)
点击右上角即可分享
微信分享提示