我有一个简单的问题。它们是否对大型数据集上的Elasticsearch date_range聚合查询性能进行了基准测试? https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-datehistogram-aggregation.html
我的具体用例如下:我每个月有大约500万份文件,我想在过去12个月内生成日期直方图。我的查询如下(请原谅语法不准确):
{
"query": {
"bool" : {
"must" : [
{"term" : { "fieldFoo" : "valFoo" }},
{"term" : { "fieldBar" : "valBar" }},
{"term" : { "fieldBarz" : "valBarz" }}
]
},
"aggs": {
"range": {
"date_range": {
"field": "date",
"format": "MM-yyy-dd",
"ranges": [
{ "from": "xxx", "to": "yyy" }, #docs within last week
{ "from": "xxx", "to": "yyy" }, #from last week till 2 weeks ago
{ "from": "xxx", "to": "yyy" }, #from 2 weeks ago till 1 month ago
{ "from": "xxx", "to": "yyy" }, #from 1 month ago till 2 months ago
{ "from": "xxx", "to": "yyy" }, #from 2 months ago till 3 months ago
{ "from": "xxx", "to": "yyy" }, #from 3 months ago till 1 year ago
]
}
}
}
}
我打算自己做一些测试和推断,但我想我也想调查一下是否有类似的基准测试。
附录: 此外,我的目标是能够在不到15-20毫秒的时间内对这些查询做出响应。因此,我正在尝试使每个分片可以处理的最大文档数量在该阈值内响应。
答案 0 :(得分:0)
我建议你通过索引" hot"来利用shard request cache。关于不同索引的数据,因为弹性允许您搜索多个索引。
请记住,每次分片更改时,其缓存都会失效。
您可以为索引使用基于时间的模式:
然后使用*:
进行搜索GET /data*/type/_search