深入理解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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM