关于elasticsearch插入数据后,立马搜索不到的问题

?refresh编辑

指数更新删除和 散装的API支持设置,refresh当这一要求所做的更改可见搜索控制。这些是允许的值:

空字符串或 true

在操作发生后立即刷新相关的主分片和副本分片(而不是整个索引),以便更新的文档立即显示在搜索结果中。只有在从索引和搜索角度进行仔细考虑并验证它不会导致性能不佳之后,才能进行此操作。

wait_for

在回复之前,请等待刷新请求所做的更改。这不会强制立即刷新,而是等待刷新发生。Elasticsearch会自动刷新每个index.refresh_interval默认为1秒的分片。那个设置是 动态的。调用Refresh API或设置refreshtrue支持它的任何API也会导致刷新,从而导致已经运行的请求refresh=wait_for 返回。

false (默认)

不采取与刷新相关的操作。此请求所做的更改将在请求返回后的某个时间点显示。

选择要使用的设置编辑

除非您有充分的理由等待变更变为可见refresh=false,否则始终使用,或者,因为这是默认设置,只需将refresh 参数保留在URL之外。这是最简单,最快捷的选择。

如果您绝对必须让请求所做的更改与请求同步可见,那么您必须选择在Elasticsearch(true)上放置更多负载并等待更长时间的响应(wait_for)。以下是应该通知该决定的几点:

  • 与索引wait_for相比,对索引所做的更改越多,工作节省的工作量就越多true。如果索引每次只更改一次, index.refresh_interval则不会保存任何工作。
  • true创建效率较低的索引构造(小段),这些构造稍后必须合并为更有效的索引构造(更大的段)。意味着成本true是在索引时创建微小段,在搜索时搜索小段,并在合并时创建更大的段。
  • 永远不要refresh=wait_for连续启动多个请求。而是将它们批量处理为单个批量请求,refresh=wait_for并且Elasticsearch将并行启动它们并仅在它们全部完成时返回。
  • 如果刷新间隔设置为-1,禁用自动刷新,则请求refresh=wait_for将无限期地等待,直到某个操作导致刷新。相反,设置index.refresh_interval为比默认值更短的内容200msrefresh=wait_for更快回来,但它仍会产生效率低下的段。
  • refresh=wait_for仅影响它所处的请求,但是,通过立即强制刷新,refresh=true将影响其他正在进行的请求。一般情况下,如果您有一个正在运行的系统,您不希望打扰,那么这refresh=wait_for是一个较小的修改。

refresh=wait_for可以强制刷新编辑

如果refresh=wait_for请求在已经 index.max_refresh_listeners(默认为1000)请求等待该分片上的刷新时进入,那么该请求的行为就像它已经refresh设置为true:它将强制刷新。这保证了当refresh=wait_for请求返回时,其更改对于搜索可见,同时防止对已阻止的请求的未经检查的资源使用。如果请求强制刷新,因为它用完了侦听器插槽,那么它的响应将包含"forced_refresh": true

批量请求只会占用他们触摸的每个分片上的一个插槽,无论他们修改分片多少次。

示例编辑

这些将创建一个文档并立即刷新索引,使其可见:

<span style="color:#444444"><span style="color:#333333">PUT / test / _doc / 1?刷新
{“测试一下”}
PUT / test / _doc / 2?refresh = true
{“测试一下”}</span></span>

在控制台中复制为CURL 视图 

这些将创建一个文档而不做任何使搜索可见的内容:

<span style="color:#444444"><span style="color:#333333">PUT / test / _doc / 3
{“测试一下”}
PUT / test / _doc / 4?refresh = false
{“测试一下”}</span></span>

在控制台中复制为CURL 视图 

这将创建一个文档并等待它对搜索可见:

<span style="color:#444444"><span style="color:#333333">PUT / test / _doc / 4?refresh = wait_for
{“测试一下”}</span></span>

 

详见文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-refresh.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值