elasticsearch 如果在插入请求后立即发送删除请求,则不会删除文档
我有一个索引文档的服务。 该服务收到以下两个请求-第一个是插入文档,第二个是删除文档。 当它们之间有一段时间时,它可以正常工作,但当它们一个接一个地发送时,文档不会被删除。 Nest给我的回复看起来很成功 我的函数很长,所以我只在里面写insert和delete。如果需要更多信息,我将添加它(例如,在插入的情况下,还将从所有其他可用索引中删除它,并在需要时插入一些映射) 插入代码:
elasticsearch 如果在插入请求后立即发送删除请求,则不会删除文档,
elasticsearch,nest,
elasticsearch,Nest,我有一个索引文档的服务。 该服务收到以下两个请求-第一个是插入文档,第二个是删除文档。 当它们之间有一段时间时,它可以正常工作,但当它们一个接一个地发送时,文档不会被删除。 Nest给我的回复看起来很成功 我的函数很长,所以我只在里面写insert和delete。如果需要更多信息,我将添加它(例如,在插入的情况下,还将从所有其他可用索引中删除它,并在需要时插入一些映射) 插入代码: IBulkResponse res = await _client.IndexManyAsync(entities
IBulkResponse res = await _client.IndexManyAsync(entities, index, type);
删除代码:
var termFilter = new List<Func<QueryContainerDescriptor<JObject>, QueryContainer>>
{
c => c.Terms(t => t.Field(ID_FIELD).Terms(ids))
};
await _client.DeleteByQueryAsync<JObject>(indices, types, d => d.Query(q => q.Bool(b => b.Must(termFilter))));
版本:ElasticSearch 2.3.5、.Net 4.6、Nest 2.4.6插入任何文档时,会发生以下步骤:
如果您想了解更多关于图片后面的索引是如何进行的,您可以参考此链接()在这种情况下,删除非常频繁。还有一些情况下,我需要一次删除多个文档。我应该仍然使用刷新api吗?如果没有,我还能做什么?我只是尝试使用刷新api(wait_client.RefreshAsync(new RefreshRequest(index))),但它不能帮助每秒刷新一次。所以你可以把睡眠时间设为1-2秒,如果你的频率低于每秒一个文档,你可以把刷新时间设为1-2秒。但我的建议是让你睡一秒钟。
var indices = new { "some_index_1", "some_index_2" };
var entity = new Entity { Action = ReplicationAction.INSERT, ... };
await elasticDal.Insert(new List { entity }, "some_index_1", "666", indices);
entity.Action = ReplicationAction.DELETE;
await elasticDal.Insert(new List { entity }, "some_index_1", "666", indices);