单场上的弹性搜索路由

时间:2016-03-21 10:22:58

标签: elasticsearch

在使用路由进行搜索时,它也会为我提供不同路由键的数据。 请帮帮我。

我在v2.0中设置了路由,并使用路由键查询了查询,下面是示例:

GET myindex/mytype/_search?routing=5
 {
  "query": {
    "match_all": {}
 } 
}

我有路由密钥= 5的搜索数据,但输出我得到:

    hits": [
     {
        "_index": "goqii",
        "_type": "nazar",
        "_id": "2047",
        "_score": 1,
        "_routing": "10",
        "_source": {
           "userId": "111239",
           "activityId": "765982",
           "activityUserId": "111239",
           "activityType": "water",
           "commentText": "kinu juice",
           "status": "delievered",
           "createdTime": "2016-01-13 13:28:54"
        }
     },
     {
        "_index": "goqii",
        "_type": "nazar",
        "_id": "2046",
        "_score": 1,
        "_routing": "5",
        "_source": {
           "userId": "110554",
           "activityId": "251449",
           "activityUserId": "110554",
           "activityType": "activity",
           "commentText": "did home cycling yesterday for 20mins",
           "status": "delievered",
           "createdTime": "2016-01-13 12:04:31"
        }
     }

它给了我路由键:5&路由键:10个数据。如果我做错了,请帮助我。

1 个答案:

答案 0 :(得分:0)

路由并不保证分片上的所有项目都具有相同的路由密钥,它将make sure that all the docs that share a routing key are all on the same shard

路由是确定该文档将驻留在哪个分片中的过程。

您的索引中有多少个分片?默认为5。

该方案似乎在索引中具有默认的分片数。

  

路由方案哈希文档的ID并使用它来查找文档   碎片。路由确保特定路由值的文档都转到相同的分片...但这并不意味着其他文档也不会路由到分片。

在你的情况下,userIds“110554”和“111239”可能被分配到同一个分片,因此行为。