代码之家  ›  专栏  ›  技术社区  ›  Nandakumar M

弹性搜索更新和刷新API

  •  0
  • Nandakumar M  · 技术社区  · 2 年前

    我正在将弹性搜索与Nest应用程序集成。下面是我的工作流程和问题。

    流量:

    • 前端更新一个实体,所以在后端更新主存储MYSQL和缓存存储弹性搜索。
    • 前端立即点击get请求以获取更新的实体,因此后端从弹性搜索中获取实体并向前端发送响应。
    • 由于有时索引未刷新,搜索结果有时会不更新。

    解决:

    • 我们可以使用 refresh:'wait-for' 更新API中的配置。
    • 我们可以触发刷新API来刷新索引
      • 问题是,在更新API之后,我们是否在不等待结果的情况下触发刷新API。同时,如果前端请求数据将发生什么,弹性搜索将等待刷新索引操作完成,还是将服务于旧数据?
    0 回复  |  直到 2 年前
        1
  •  0
  •   Amit    2 年前

    正如您已经知道的,Elasticsearch提供 near real time 搜索,如果您正在进行搜索调用,则文档一旦被索引到Elasticsearch,除非 refresh 发生在索引上。

    现在,正如您所提到的,您可以使用 wait_for 对于索引/更新操作,唯一的缺点是其资源密集,如果您经常在大型索引上执行此操作,可能会在集群中造成严重的性能问题。

    您的第二个选项将不起作用,因为您仍然可以在刷新完成之前从FE查询Elasticsearch,您将获得过时的数据。