How to Change Index Refresh Interval in Elasticsearch

Changing the refresh interval in Elasticsearch is necessary when you need to fine-tune the balance between search freshness and indexing performance. This task is typically performed when:

  1. You want to improve indexing throughput by reducing the frequency of refresh operations.
  2. You need to ensure near real-time search capabilities for specific use cases.
  3. You're optimizing your Elasticsearch cluster for specific workloads or application requirements.

Steps to change the refresh interval

  1. Identify the index for which you want to change the refresh interval.

  2. Use the Update Index Settings API to modify the refresh interval. You can do this using cURL or any Elasticsearch client:

    PUT /your_index_name/_settings
    {
      "index": {
        "refresh_interval": "30s"
      }
    }
    

    Replace your_index_name with the actual name of your index, and adjust the 30s value to your desired refresh interval (e.g., "1s" for 1 second, "5m" for 5 minutes, or "-1" to disable automatic refreshing).

  3. Verify the changes by checking the index settings:

    GET /your_index_name/_settings
    
  4. Monitor the impact of the change on your cluster's performance and adjust as needed.

Additional information and best practices

  • The default refresh interval in Elasticsearch is 1 second.
  • Increasing the refresh interval can improve indexing performance but may delay the visibility of new documents in search results.
  • For write-heavy workloads, consider increasing the refresh interval to reduce the indexing overhead.
  • For search-heavy workloads that require near real-time results, keep the refresh interval low.
  • You can temporarily disable automatic refreshing by setting the interval to "-1" during bulk indexing operations to maximize indexing speed.
  • Remember to reset the refresh interval to an appropriate value after bulk operations are complete.
  • Consider using the ?refresh=wait_for parameter on index requests for fine-grained control over when documents become visible in search results.

Frequently Asked Questions

Q: How does changing the refresh interval affect search latency?
A: Increasing the refresh interval can reduce search latency for existing documents, as there are fewer segments to search. However, it also increases the delay before new documents become searchable.

Q: Can I set different refresh intervals for different indices?
A: Yes, you can set unique refresh intervals for each index in your Elasticsearch cluster, allowing you to optimize performance based on the specific requirements of each index.

Q: What happens if I set the refresh interval to "-1"?
A: Setting the refresh interval to "-1" disables automatic refreshing. New documents will not be visible in search results until a manual refresh is performed or until the index is flushed.

Q: How can I determine the optimal refresh interval for my use case?
A: The optimal refresh interval depends on your specific requirements. Start with the default (1s) and adjust based on monitoring your cluster's performance, considering factors like indexing throughput, search latency, and freshness requirements.

Q: Is it possible to change the refresh interval dynamically without restarting the cluster?
A: Yes, you can change the refresh interval dynamically using the Update Index Settings API without needing to restart your Elasticsearch cluster or close the index.

Pulse - Elasticsearch Operations Done Right

Pulse can solve your Elasticsearch issues

Subscribe to the Pulse Newsletter

Get early access to new Pulse features, insightful blogs & exclusive events , webinars, and workshops.

We use cookies to provide an optimized user experience and understand our traffic. To learn more, read our use of cookies; otherwise, please choose 'Accept Cookies' to continue using our website.