在使用路由进行搜索时,它也会为我提供不同路由键的数据。 请帮帮我。
我在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个数据。如果我做错了,请帮助我。
答案 0 :(得分:0)
路由并不保证分片上的所有项目都具有相同的路由密钥,它将make sure that all the docs that share a routing key are all on the same shard
。
路由是确定该文档将驻留在哪个分片中的过程。
您的索引中有多少个分片?默认为5。
该方案似乎在索引中具有默认的分片数。
路由方案哈希文档的ID并使用它来查找文档 碎片。路由确保特定路由值的文档都转到相同的分片...但这并不意味着其他文档也不会路由到分片。
在你的情况下,userIds“110554”和“111239”可能被分配到同一个分片,因此行为。