Why am I getting partial results?

Occasionally, we may serve partial results. Partial results happen for one of two reasons.

  1. You perform an expensive query on a large index. If you ask for a term that occurs 100,000 times in your index (or the wildcard operator *:*), we may only evaluate the first 20,000 matching documents, and send you back the first 10. You may see changing results when, for example, one query evaluates the first 20,000 documents, and the next query evaluates the first 25,000.
  2. In a cloud environment, the IO of the underlying instances can fluctuate. If we do not have enough available IO to complete your request in a timely manner, we will search as much as we can in a short amount of time, and return what we have found. This is to avoid hanging your app.

Detecting and reacting to partial results

You can tell when you are getting partial results, because there will be a partialResults flag set to true in the response header. In JSON, this looks like:

{"responseHeader":
    {"status":0,
     "partialResults":true,
     "QTime":200,
     "params":{"wt":"json"}
  },
 "response":{"numFound":7793,"start":0,"docs":[ ... ]}}

If you need full results, we recommend you retry your search up to two additional times. Because of caching, you will get more results each time. If, after two retries, you are still getting partial results, it's likely your query is too expensive for the amount of resources you have been allocated for your plan's service level. Please contact us, and we will recommend a better plan for you.