Ich habe einen Dienst, der Dokumente indiziert. Der Dienst empfängt zwei folgende Anforderungen - die erste ist ein Dokument einzufügen und die zweite, um es zu löschen. Wenn zwischen ihnen etwas Zeit ist, funktioniert es gut, aber wenn sie nacheinander gesendet werden, wird das Dokument nicht gelöscht. Die Antwort, die ich von Nest bekomme, sieht erfolgreich aus.Dokument wird nicht gelöscht, wenn die Löschanforderung unmittelbar nach dem Einfügeauftrag gesendet wurde
Meine Funktion ist Arten lang, also schreibe ich nur die Einfügung und lösche innen. Wenn mehr Informationen benötigt werden, werde ich sie hinzufügen (zum Beispiel im Falle der Einfügung in löscht es auch von allen anderen verfügbaren Indizes und fügt bei Bedarf ein Mapping ein).
Insert Code:
IBulkResponse res = await _client.IndexManyAsync(entities, index, type);
löscht Code:
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))));
Zum Beispiel dieses Integrationstest nicht funktioniert:
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);
Versionen: Elasticsearch 2.3.5. Net 4.6, Nest 2.4.6
die Löschungen in diesem Fall recht häufig sind. und es gibt andere Fälle, in denen ich viele Dokumente auf einmal löschen muss. sollte ich noch die refresh api verwenden? Wenn nicht, was kann ich noch tun? – Mei
Ich habe gerade versucht, die Aktualisierung API (erwarten _client.RefreshAsync (neue RefreshRequest (Indizes))), aber es tut Hilfe – Mei
ES aktualisieren jede Sekunde. Also können Sie einen Schlaf für sagen wir Ihnen zwei Sekunden und wenn Ihre Häufigkeit weniger als ein Dokument pro Sekunde ist, können Sie aktualisieren. Aber mein Vorschlag ist Schlaf von einer Sekunde. –