有没有办法更新elasticsearch中的所有数据。
在下面的示例中,更新了外部' 1'。
curl -XPOST 'localhost:9200/customer/external/1/_update?pretty' -d '
{
"doc": { "name": "Jane Doe", "age": 20 }
}'
同样,我需要更新外部的所有数据。是否有任何方式或查询来更新所有数据。
答案 0 :(得分:1)
更新索引中的所有文档意味着将删除所有文档,并将索引新文档。这意味着很多"marked-as-deleted"个文件。
运行查询时,ES会自动过滤掉那些“标记为已删除”的文档,这会对查询的响应时间产生影响。它取决于数据,用例和查询有多大影响。
此外,如果您更新所有文档,除非您运行_force_merge
,否则会有一些段(特别是较大的段)仍然会有“标记为已删除”的文档,并且这些段很难自动生成由Lucene / Elasticsearch合并。
我的建议是,如果您的索引过程不是太复杂(例如从关系数据库获取数据并在索引到ES之前处理它),则完全删除索引并索引新数据。它可能比更新所有文件更有效。