我嘗試使用探查器在 Kibana 中對多個索引進行別名查詢,似乎當您filter在_index欄位上進行高級別的MatchNoDocQuery查詢時 - 除了需要的索引之外,它對所有索引運行一些非常快速的查詢。
例如:假設我們有兩個索引:test.book和test.film。我們有一個test帶有 pattern的別名test.*。此外,每個索引都有product_type可能是“書”或“電影”的欄位。
似乎這個查詢:
GET test/_search
{
"query": {
"bool": {
"filter": [
{
"terms": {
"_index": ["test.film"]
}
}
]
}
}
比這個查詢快得多:
GET test/_search
{
"query": {
"bool": {
"filter": [
{
"terms": {
"product_type": ["film"]
}
}
]
}
}
}
filter在“_index”欄位上運行時是否有任何優化?
uj5u.com熱心網友回復:
第一個查詢更快,因為查詢只知道如何遍歷test.film索引的所有段,而不檢查test.book索引的段。而在第二個中,查詢不知道有多個索引,它必須遍歷所有分片。
假設兩個索引都有 10 個段,這意味著在運行別名查詢時總共有 20 個段。第一個查詢將只通過 10 個段,而第二個將必須通過 20 個段才能找出滿足條件的檔案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/372568.html
標籤:弹性搜索
