【发布时间】:2018-02-07 20:40:35
【问题描述】:
我有一个索引文档的服务。 该服务收到两个以下请求 - 第一个是插入文档,第二个是删除它。 当它们之间有一段时间时,它可以正常工作,但是当它们一个接一个地发送时,文档不会被删除。 我从 Nest 得到的响应看起来很成功。
我的函数很长,所以我只会在里面写插入和删除。如果需要更多信息,我会添加它(例如,在插入的情况下,还会从所有其他可用索引中删除它,并在需要时插入一些映射)。
插入代码:
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))));
例如,这个集成测试不起作用:
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);
版本:ElasticSearch 2.3.5、.Net 4.6、Nest 2.4.6
【问题讨论】:
-
这个问题没有被接受的答案。你是如何解决这个问题的?
-
如果我没记错的话,我没有使用 Elasticsearch 解决它。相反,我在缓存中将传入的请求保留了一小段时间,如果一个新的请求以相同的 id 到达,我删除了仍然在缓存中的先前实体
标签: elasticsearch nest