首页 > 解决方案 > Elasticsearch:有些字段会立即出现,有些字段会延迟出现

问题描述

我有一个很奇怪的情况

将文档发送到 ES 索引并创建文档后,文档中的某些字段会立即出现,而某些字段会延迟出现。也就是说,有些字段有null,[]0(取决于字段类型)而不是发送到索引的值。

5-10 分钟后,这些字段将填充实际值。

当我批量处理大量文档(最多 500 个)时会出现这种情况。当我将文件一一发送时,并没有发生这种情况。

在谷歌搜索这个问题没有给出任何结果。

可以在索引或批量设置中进行哪些更改,以使文档不会在搜索中显示为空值?

弹性搜索版本:7.6.0

更新:

有关更多上下文,我添加了打印屏幕:

1) 这是文档在添加后立即在 Kibana 中的外观: 在此处输入图像描述

2)所以文件在 5-10 分钟后看起来: 在此处输入图像描述

在索引设置中refresh_interval设置为1s

添加refresh = "wait_for"到批量请求并没有改变任何东西

标签: elasticsearch

解决方案


请检查您的索引的刷新参数,默认为 1 秒,但可以调整。另外,请检查您在发送时是否没有进行显式刷新或wait_for在请求中使用参数。

根据官方文档 wait_for 参数

等待请求所做的更改通过刷新可见,然后再回复。这不会强制立即刷新,而是等待刷新发生。Elasticsearch 会自动刷新每次更改的分片

解决方案:对于您的批量请求,请使用wait_for参数,在刷新发生之前使用它不会返回结果,一旦您收到响应,您发送的值将可用于搜索。

进一步阅读https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-refresh.html#_choosing_which_setting_to_use


推荐阅读