public async Task Reindexer() { var parameters = new Reindexer.Parameters { BatchSize = 10, WaitBetweenBatches = TimeSpan.FromMilliseconds(0), WaitBetweenChecksForNewItems = TimeSpan.FromMilliseconds(0) }; var itemsSemaphore = new SemaphoreSlim(1); var items = new List <ISearchIndexItemWithTime>(); var index = new ListIndex(); var reindexer = new Reindexer( index, async(since, skip, maxCount) => { try { await itemsSemaphore.WaitAsync(); return(items .OrderBy(item => item.LastUpdated) .Where(item => item.LastUpdated > since) .Skip(skip) .Take(maxCount.Value) .ToArray()); } finally { itemsSemaphore.Release(); } }, parameters); var tscs = Enumerable.Range(0, 4).Select(_ => new TaskCompletionSource <bool>()).ToArray(); var c = 0; reindexer.OnSuccessfulUpdate += (s, a) => { tscs[c].SetResult(true); c++; }; await itemsSemaphore.WaitAsync(); await reindexer.Start(new DateTime(), 0); items.AddRange(MakeItems(DateTime.Now - TimeSpan.FromDays(1), 40)); itemsSemaphore.Release(); await tscs[0].Task; var indexItems = index.Items.OrderBy(i => i.Ref, StringComparer.Ordinal).ToArray(); Assert.Equal(items.OrderBy(i => i.LastUpdated).Take(indexItems.Length).OrderBy(i => i.Ref, StringComparer.Ordinal), indexItems); await itemsSemaphore.WaitAsync(); }
public FigureRecipeMerger(FigureRecipe parent, params FigureRecipe[] children) { this.parent = parent; this.children = children; this.reindexer = Reindexer.Make(parent, children); childControlChannels = children .Select(child => new ChannelRecipe { Name = $"CTRL{child.Name}?value", InitialValue = 0, Min = 0, Max = 1, Clamped = true, }).ToArray(); }
static void Main(string[] args) { Repo repo = new Repo(); repo.SaveToElasticsearchPerson(); repo.SaveToElasticsearchStateProvince(); //var addressX = repo.GetAddressFromElasticsearch("22"); //Console.WriteLine(addressX); DateTime beginDateTime = DateTime.UtcNow; Reindexer.ReindexStateProvince(beginDateTime); Reindexer.ReindexStateProvinceAddress(beginDateTime); Console.WriteLine("Created new index from version 1 index"); Console.ReadLine(); }
static void Main(string[] args) { Repo repo = new Repo(); //repo.SaveToElasticsearchPerson(); repo.SaveToElasticsearchStateProvince(); var addressX = repo.GetAddressFromElasticsearch("37", "14"); Console.WriteLine(addressX); DateTime beginDateTime = DateTime.UtcNow; Reindexer.ReindexStateProvince(beginDateTime); Reindexer.ReindexStateProvinceAddress(beginDateTime); // -28 documents because the countryCode was not reindexed. Console.WriteLine("Created new index from version 1 index"); Console.ReadLine(); }