由於我的ES索引/集羣已經擴大(現在@ 20億個文檔),我注意到了更顯着的性能損失。所以我開始討論我的疑問,看看我是否可以從他們身上榨取一點點。彈性搜索過濾器的執行速度遠遠低於查詢
正如我這樣做,我注意到,當我在過濾器中使用布爾查詢時,我的結果大概需要3.5-4秒才能回來。但是,如果我做同樣的事情在我的查詢它更像是10-20ms
這裏有2個疑問:
使用過濾器
POST /backup/entity/_search?routing=39cd0b95-efc3-4eee-93d1-93e6f5837d6b
{
"query": {"bool":{"should":[],"must":[{"match_all":{}}]}},
"filter": {
"bool": {
"must": [
{
"term": {
"serviceId": "39cd0b95-efc3-4eee-93d1-93e6f5837d6b"
}
},
{
"term": {
"subscriptionId": "3eb5021e-2f1d-4292-9fd5-95788ebfafa0"
}
},
{
"term": {
"subscriptionType": 0
}
},
{
"terms": {
"entityType": [
"4"
]
}
}
]
}
}
}
使用查詢
POST /backup/entity/_search?routing=39cd0b95-efc3-4eee-93d1-93e6f5837d6b
{
"query": {"bool":{"should":[],"must":[
{
"term": {
"serviceId": "39cd0b95-efc3-4eee-93d1-93e6f5837d6b"
}
},
{
"term": {
"subscriptionId": "3eb5021e-2f1d-4292-9fd5-95788ebfafa0"
}
},
{
"term": {
"subscriptionType": 0
}
},
{
"terms": {
"entityType": [
"4"
]
}
}
]}}
}
就像我說的,第二種方法,我根本不使用過濾器,只需要磨機秒,而第一個查詢需要將近4秒。這看起來完全是從文檔說的背後。他們說過濾器應該非常快,而查詢應該是需要更長時間的。那麼爲什麼我在這裏看到完全相反的情況?
它可能是我的索引映射的東西?如果任何人有任何想法爲什麼發生這種情況,我很樂意聽取建議。
感謝
如果你是第一次執行與後續者相比,它不相關的。第一個可能會緩存過濾器(單個過濾器),而其他過濾器會使用緩存的過濾器。 –
如果您多次運行**相同的**查詢(不是過濾器查詢),您是否獲得相同的3-4秒響應時間? –
我比較大約10個後續電話的平均響應時間 –