On 4/27/2017 5:20 PM, Suresh Pendap wrote: > Max throughput that I get: 12000 to 12500 reqs/sec > 95 percentile query latency: 30 to 40 msec
These numbers are *amazing* ... far better than I would have expected to see on a 27GB index, even in a situation where it fits entirely into available memory. I would only expect to see a few hundred requests per second, maybe as much as several hundred. Congratulationsare definitely deserved. Adding more shards as Toke suggested *might* help, but it might also lower performance. More shards means that a single query from the user's perspective becomes more queries in the background. Unless you add servers to the cloud to handle the additional shards, more shards will usually slow things down on an index with a high query rate. On indexes with a very low query rate, more shards on the same hardware is likely to be faster, because there will be plenty of idle CPU capacity. What Toke said about filter queries is right on the money. Uncached filter queries are pretty expensive. Once a filter gets cached, it is SUPER fast ... but if you are constantly changing the filter query, then it is unlikely that new filters will be cached. When a particular query does not appear in either the queryResultCache or the filterCache, running it as a clause on the q parameter will usually be faster than running it as an fq parameter. If that exact query text will be used a LOT, then it makes sense to put it into a filter, where it will become very fast once it is cached. Thanks, Shawn