【发布时间】:2015-04-01 22:03:58
【问题描述】:
我们数据中的某些字段将 UUID 列表作为值。例如:
{
"name": "pupkin",
"group": "admins",
"assets": ["d1f84400-91b6-425c-a11b-9ba7e59930ce",
"99478356-f6b3-49e2-8cae-f408d5a24492"],
"action": "login",
"children": ["2637833e-1017-4d82-bc65-951fffc09c7d",
"c30f7c34-7a50-4031-bf74-94d413acec15",
"cffef4ef-df9e-4079-ac2f-50bbe332e223"],
"level": 20
}
我们对数据的大多数查询都涉及检查一长串 UUID(我们扩展后可能有数十个,有时是数百个,可能是数千个)。列表会不时更改,因此无法在所有列表中为所有事件中的 x 预先计算 x∈L。
我们目前相当简单的 e 方式。 G。使用_search?search_type=count 获取直方图的数据是:
{"query":
{"bool":
{"must": [
{"query_string": {"query": "user:pupkin AND (assets:d1f84400-91b6-425c-a11b-9ba7e59930ce OR assets:99478356-f6b3-49e2-8cae-f408d5a24492 OR assets:2637833e-1017-4d82-bc65-951fffc09c7d OR assets:c30f7c34-7a50-4031-bf74-94d413acec15)"}},
{"range": {"time": {"gt": "2014-11-01T00:00:00Z", "lte": "2014-11-01T00:20:00.0001Z"}}},
]}},
"aggs": {"counts": {"date_histogram": {"field": "time", "interval": "minute", "min_doc_count": 0}}}}
但它是无效的:60 个 UUID 的列表会使查询减慢 10 倍。我怎样才能减少这个因素?
【问题讨论】:
标签: performance indexing elasticsearch