elastic 插入的数据立即能搜索到 有没有相关方案 (真正的实时搜索,而不是近实时,如何解决?

elastic 插入的数据立即能搜索到 有没有相关方案 (真正的实时搜索,而不是近实时)

为了让 Elasticsearch 数据插入后立即搜索到,有以下几个方案:

  1. 设置 refresh_interval 为 1s 或更小。这个设置控制着 Elasticsearch 在指定时间内 Accumulates 索引数据,然后进行 Refresh。设置更小的 refresh_interval 可以使数据更快地可搜索。
  2. 设置 index.refresh_interval 为 -1,让每个索引操作立即进行 Refresh。这会有一定的性能损失,但可以实现实时搜索。
  3. 使用 Elasticsearch 的 async 客户端,在数据插入后立即调用 Refresh API 手动刷新索引。这个方式可以实现实时搜索而不会像设置 index.refresh_interval 为 -1 那样影响性能。
  4. 如果使用 REST API 插入数据,可以在插入后立即调用 POST /{index}/_refresh API 手动刷新索引。
  5. 对于其它语言的客户端,调用相应的 Refresh API 或 Flush API 立即刷新索引也可以实现实时搜索。
    总的来说,要实现 Elasticsearch 的实时搜索,关键在于积极主动地调用 Refresh API 或 Flush API 不断刷新索引,而不是仅仅依靠 indexer.refresh_interval 这个配置。indexer.refresh_interval 只是控制 Elasticsearch 自己定期刷新索引的时间间隔,如果要真正实时,必须主动不断刷新。
    我个人比较推荐方案 3 和 4,既不会像 indexer.refresh_interval 为 -1 那样影响性能,也不需要像方案 1 中那样将 refresh_interval 设置得过短。通过调用 Refresh API 手动控制刷新时机,可以达到比较理想的实时搜索效果。