es 索引后,第一次查询慢(几秒),第二次查询快(几毫秒),是因为第一次查询lucene段走I/O磁盘访问,并将打开的段文件记录到系统的文件缓存,那不同的关键字,打开的段应该是不一样啊,不是还是会走I/O磁盘访问吗?为什么还是会快呢?而且文件系统缓存用工具清空了,查询还是快的?此外,还做了测试,把ES服务关掉,写一个简单的占用内存的程序,将内存占用到98%左右,想以此达到将文件缓存刷新覆盖的作用,然后再启动ES进行查询,发现第一次查询速度还是快的,这是为什么?
是否一个索引只要执行过一次查询,即使是不同的关键字查询,后面针对此索引的查询操作都会变快?
是否一个索引只要执行过一次查询,即使是不同的关键字查询,后面针对此索引的查询操作都会变快?
3 个回复
fanzm
赞同来自: openWells
kepmoving - 90后
赞同来自:
Justbaba
赞同来自:
部分提示如下:
“java.net.SocketTimeoutException: 30,000 milliseconds timeout on connection http-outgoing-0 [ACTIVE]
at org.elasticsearch.client.RestClient.extractAndWrapCause(RestClient.java:808)
at org.elasticsearch.client.RestClient.performRequest(RestClient.java:248)
at org.elasticsearch.client.RestClient.performRequest(RestClient.java:235)
at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:1514)
at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:1484)
at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:1454)
at org.elasticsearch.client.RestHighLevelClient.search(RestHighLevelClient.java:970)”