很多已删除的文档会影响查询的速度吗?

时间:2016-10-18 04:20:27

标签: elasticsearch

我需要经常删除文档,但es只会将这些标记为已删除。如果有大量已删除的文档,查询速度会降低吗?还有其他问题吗?

修改

换句话说,我经常从index中删除大量文档,并且从不使用force merge api来释放磁盘使用情况,一段时间后我会遇到查询性能问题吗?

2 个答案:

答案 0 :(得分:1)

您必须在下面的结构

中向您的弹性搜索节点发送一个http POST请求

http://localhost:9200/your_index_name/_forcemerge

有关详情,请参阅此page

  

如果有大量已删除的文档,查询速度会降低吗?

答案是肯定的

  

换句话说,我经常从索引中删除很多文档,并且从不使用强制合并API来释放磁盘使用情况,一段时间后我会遇到查询性能问题吗?

当插入或更新操作太高(导致段变脏)时,

elasticsearch会自动运行合并过程。另一方面,您可以使用forcemerge api自行控制合并过程。

答案 1 :(得分:0)

文档作为在lucene中创建文档时形成的段存储在索引中。从弹性中删除文档实际上不会从基础段中删除文档,这构成了ES的基本数据存储。

是的,有很多已删除的文档会出现查询性能问题,因为查询仍然会在已删除的段中搜索匹配的文档。

Force_merge or optimize索引通常是做它的选项,但你应该小心处理这个,因为这是重磁盘的i / o操作。

$ curl -XPOST 'http://localhost:9200/kimchy,elasticsearch/_optimize'

$ curl -XPOST 'http://localhost:9200/_optimize?only_expunge_deletes=true'

您能解释一下为什么经常删除这么多的原因。由于我们经常有大量删除,但我们在索引级别处理它们。我们的删除发生在特定日期范围的文档中,因此我们根据日期对文档进行索引,何时删除特定日期的文档,我们只需删除索引。

如果你有任何删除文件的模式,我建议你在索引中将它们分开,然后删除索引