當我通過路由鍵在彈性搜索中搜索時,它也回傳另一個路由鍵的結果。
路徑:Index_2022/_search?routing=10
{
"from": 0,
"size": 5000,
"timeout": "15m",
"query":
{
"bool":
{
"must":
[
{
"query_string":
{
"query": "*",
"fields":
[
"content^1.0"
]
}
}
]
}
}
}
我正在使用路由鍵 10 搜索結果,但彈性也給出了路由鍵 3 的結果。
uj5u.com熱心網友回復:
路由鍵的目標只是定義檔案將存盤在哪個分片中。路由鍵的值經過哈希處理,結果是一個分片索引。
如果您有 1M 檔案和 4 個分片,那么您的每個分片將包含大約 250K 檔案。所有這些檔案可能有不同的路由鍵,但它們的散列總是決議為主分片的數量(即 0、1、2 和 3)。
因此,在您的情況下,具有路由鍵 10 和 3 的檔案具有一個哈希,它們都決議為相同的主分片索引,這就是您在同一個分片中找到它們的原因。
使用路由鍵搜索背后的想法是在較少數量的分片內進行搜索。假設您有 4 個分片,并且您知道要搜索的內容的路由鍵為 10(例如,它可能是租戶 ID、客戶 ID 等),因此您指定routing=10然后搜索只會在單個分片內發生shard 而不是搜索所有 4 個分片,這通常會產生更快的查詢回應時間。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/471144.html
標籤:弹性搜索
