我大约有165G数据,并将其存储到三台Elasticsearch服务器中(每台服务器具有32G内存)。生成的索引(名为my_index
)的总大小为240.3GB(198030346文档),其中约75GB用于索引。索引my_index
具有三个主要分片,没有副本分片。
索引my_index
具有两个字段(名称为field1
和field2
),且两个字段具有相同的分析器。分析器按空间划分field1
和field2
的内容。文件看起来像
{
"field1": "AW110 AW111 AW112 AW113 AW1104 AW1103 AW11023 AW11012 AW1101 AW1102 AW1102 AW1101 AW11032 AW110 AW11032 AW11032",
"field2": "BP111 BP111 BP111 BP111 BP111 BP1110 BP111s BP111s BP111a BP111as BP1117 BP1119 BP11100 BP11100 BP11100 BP11111 BP111009 BP11122"
}
我的主要查询是term
查询和phrase query
。例如,我要搜索所有包含术语AW111
的文档,或者搜索所有包含短语AW110 AW111
的文档。
我试图提高搜索速度:
我配置了swapping
。
vm.swappiness
设置为1
。hjs soft memlock unlimited
hjs hard memlock unlimited
- Enable `bootstrap.memory_lockedit` (set `bootstrap.memory_lock: true` in elasticsearch.yml)
其他配置
hjs soft nofile 65536
hjs hard nofile 65536
-Xms5g
-Xmx5g
vm.max_map_count=655360
此图显示了当我运行多个top
时命令term search
的结果。流程31283
是 elasticsearch 。
该图片用于显示集群状态:
我的问题:
当我执行term query
搜索包含特定术语的文档时,可能有大量文档与该术语匹配。因此,当我搜索很多字词(通常是10,000-40,000,并且我使用了multi search
+ term query
)时,这需要花费太多时间
有什么方面可以提高搜索速度吗?