以下查詢具有可怕的性能。可怕的has_child查詢性能
100%肯定它是has_child。沒有它的查詢運行在300毫秒以下,它需要9秒。
有沒有更好的方法來使用has_child查詢?好像我可以通過ID查詢的父母,然後孩子再加入客戶端做了檢查孩子比ES數據庫引擎更快的是做什麼的?
{
"query": {
"filtered": {
"query": {
"bool": {
"must": [
{
"has_child": {
"type": "status",
"query": {
"term": {
"stage": "s3"
}
}
}
},
{
"has_child": {
"type": "status",
"query": {
"term": {
"stage": "es"
}
}
}
}
]
}
},
"filter": {
"bool": {
"must": [
{
"term": {
"source": "IntegrationTest-2016-03-01T23:31:15.023Z"
}
},
{
"range": {
"eventTimestamp": {
"from": "2016-03-01T20:28:15.028Z",
"to": "2016-03-01T23:33:15.028Z"
}
}
}
]
}
}
}
},
"aggs": {
"digests": {
"terms": {
"field": "digest",
"size": 0
}
}
},
"size": 0
}
集羣信息: CPU和內存使用率低。它是AWS ES服務集羣(v1.5.2)。許多小文件,並且由於版本aws運行的是舊的,默認情況下doc值不是默認打開的。不知道這是幫助還是傷害。
「舞臺」是一個分析領域嗎?只是好奇,如果你可以通過使用'has_child' *過濾器*而不是查詢來優化一點。 – BrookeB
@BrookeB「舞臺」已編入索引但未進行分析。你的意思是把內部「查詢」改爲「過濾器」而不是? – smashbourne