在 Elasticsearch 中"update the doc without modify the source"意味着什么



在此链接中通过查询进行更新。我不明白这部分:

如果未指定查询,则在不修改源的情况下对索引中的每个文档执行更新

索引中的文档和源是两个不同的实体。这是否意味着,如果文档被更新,而源保持不变,那么这两个实体就不同步了。如果是这种情况,那么es如何处理不同步的更改?

如有任何澄清或参考,不胜感激。

通过查询更新有两个主要用途:

A。您可以在适当的位置修改源文档(添加一个字段、修改另一个字段等(,而不必从您的真实性源存储库中重新索引它们。这就是以下查询中script部分的作用:

POST my-index-000001/_update_by_query
{
"script": {
"source": "ctx._source.count++",         <--- this modifies your source documents
"lang": "painless"
},
"query": {
"term": {
"user.id": "kimchy"
}
}
}

B。但是,如果您执行映射更改(例如,将keyword子字段添加到text字段(,则需要更新索引才能获取映射更改。您可以简单地调用_update_by_query,而不必重新索引真相源中的所有数据,而无需在索引上使用任何脚本,即可获取映射更改并确保更新了基础索引数据(即索引了新的关键字子字段(。所发生的情况是,每个源文档将在其自身上重新索引(不对其结构进行任何更改(,以说明映射的更改。

POST my-index-000001/_update_by_query

相关内容

最新更新