路由elasticsearch文档索引问题

时间:2014-02-09 11:25:52

标签: indexing elasticsearch sharding

在创建具有多位作者但仅属于11种不同出版物的子集的书籍索引时,我打算在单个节点上有11个索引分片。

显然我的映射的路由部分看起来像,

"book":{
      "_routing":{
         "required":true,
         "path":"publication"
      },....

publication本身就是一个字符串,可以是11种不同的类型。

我的映射的settings部分看起来像

body: {
    settings: {
       index: {
           number_of_shards: 11,
           number_of_replicas: 1
        }
     },....  

我遇到的问题是,在查看publication和{shard的结果后,不同books/_status的文档已在同一books/_segments中编入索引,而某些分片显示为空{1}}查询。

我查看了reroute API,但显然应该寻找其他问题。

在指定路由后,这种文档的不均等分布诱使我完全放弃routing

我使用的版本是0.90.5。

1 个答案:

答案 0 :(得分:4)

路由并不保证分片上的所有项目都具有相同的路由密钥,它将确保共享路由密钥的所有文档都在同一个分片上。

Here is a good ES post about it

从底部引用:

  

这个碎片几乎肯定有其他文件   到用户123。路由确保特定路由的文档   值全部转到同一个碎片......但这并不意味着其他碎片   文档也不会路由到分片。