我向类型映射添加了一个新属性,我需要重新索引该类型的所有现有项目才能使用新属性。
我应该使用哪个 API 来执行此操作?
如果您要添加索引中以前从未存在过的新字段,则无需重新索引,只需使用 PUT 映射 API 添加新字段http://nocf-www.elastic.co/guide/en/elasticsearch/reference/current/indices-put-mapping.html http://nocf-www.elastic.co/guide/en/elasticsearch/reference/current/indices-put-mapping.html
您在使用新字段更新映射之前创建的文档将不包含此新字段,因此搜索或聚合不会考虑此字段,它将作为缺失字段使用。
如果您需要在使用新字段类型的默认值搜索旧文档时考虑此新字段,则需要重新索引。例如,如果您的新字段是整数类型,并且您明确需要将该字段包含在零值(默认值)的旧文档中,因为您想要计算有多少文档具有此新字段= 0,那么您需要重新索引,但是大多数用例我们可以将缺失字段视为默认值,因此无需重新索引。
由于 ES 存储数据的性质,ElastiSearch (ES) 无法在映射中添加新字段,并且旧索引无法自动更新,即使使用新索引的默认值也是如此。 ES 使用不可变段来存储索引,因此当您更新文档时,ES 不会物理更新已更改的字段,而是会创建旧文档的新副本,并用新数据更新并将旧文档标记为已删除,因此即使您更新文档中的一个简单字段,您也会获得该文档的新版本,而旧版本会被标记为已删除
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)