yan*_*isf 9 performance search elasticsearch
我有一个弹性搜索索引my_index,包含数百万个文档,密钥为my_uuid.在该索引之上,我有几个以下形式的过滤别名(仅显示检索到的my_aliasGET my_index/_alias/my_alias):
{
"my_index": {
"aliases": {
"my_alias": {
"filter": {
"terms": {
"my_uuid": [
"0944581b-9bf2-49e1-9bd0-4313d2398cf6",
"b6327e90-86f6-42eb-8fde-772397b8e926",
thousands of rows...
]
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的理解是过滤器将为我透明地缓存,而不必进行任何配置.事情是,我在浏览别名时经历了非常慢的搜索,这表明1. 过滤器没有被缓存,或者2. 它被错误地写入.
指示性数字:
GET my_index/_search -> 50ms
GET my_alias/_search -> 8000ms
Run Code Online (Sandbox Code Playgroud)
如果有人认为这是相关的,我可以提供有关集群规模和数据大小的更多信息.
我正在使用elasticsearch 2.4.1.我得到了正确的结果,这只是关注我的表现.
将每个文档与 4MB 的 uid 列表进行匹配绝对不是正确的方法。尝试想象一下它需要多少个 CPU 周期。8s还是蛮快的
我会在另一个索引中复制数据子集。
如果您需要立即反映更改,则必须手动管理子集索引:
如果使用新的 uuid 更新子集对时间要求不高,您可以每天或每小时运行重新索引。