我有一个弹性搜索索引 my_index ,包含数百万个文档,密钥为 my_uuid 。在该索引之上,我有以下几种过滤后的别名(仅显示GET my_index/_alias/my_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...
]
}
}
}
}
}
}
我的理解是,过滤器将以透明方式缓存,无需进行任何配置。问题是我在浏览别名时经历了非常慢的搜索,这表示1. 过滤器未缓存,或者2. 错误地写入。< / p>
指示性数字:
GET my_index/_search -> 50ms
GET my_alias/_search -> 8000ms
如果有人认为这是相关的,我可以提供有关群集规模和数据大小的更多信息。
我正在使用elasticsearch 2.4.1。我得到了正确的结果,这只是关注我的表现。
答案 0 :(得分:0)
用4MB的uid列表匹配每个文档绝对不是可行的方法。尝试想象它需要多少个CPU周期。 8s很快。
我会将数据子集复制到另一个索引中。
如果您需要立即反映更改,则必须手动管理子集索引:
如果使用新的uuid更新子集不是时间紧迫的,则可以每天或每小时运行重新索引。