ドキュメントをインデックスするサービスがあります。 サービスは、次の2つの要求を受け取ります。最初はドキュメントを挿入し、2番目はドキュメントを削除する要求です。 それらの間に時間があるとうまくいきますが、それらが次々に送信されるとき、文書は削除されません。 私はネストからの返答がうまくいくように見えます。挿入リクエスト直後に削除リクエストが送信された場合、ドキュメントは削除されません
私の機能は種類が長いので、私は挿入と削除を書くだけです。さらに情報が必要な場合は追加します(たとえば、挿入する場合は、他のすべてのインデックスから削除し、必要に応じてマッピングを挿入します)。
挿入コード:
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、。ネット4.6、ネスト2.4.6
削除は、この場合には、かなり頻繁にあります。一度に多くのドキュメントを削除する必要がある場合もあります。私はまだリフレッシュAPIを使用する必要がありますか?もしそうでなければ、他に何ができますか? – Mei
私はちょうどリフレッシュAPI(使用して_client.RefreshAsync(新しいRefreshRequest(インデックス))を使用してみましたが、それは助けを – Mei
毎秒リフレッシュします。だから、あなたが2秒と言って、あなたの頻度が毎秒1文書未満の場合は、リフレッシュを置くことができるように眠ることができます。 しかし、私の提案は1秒間寝る。 –