我有一個(gè) AWS Elastic Search 服務(wù)器。使用映射模板和索引策略。{ "index_patterns": "users*", "order": 6, "version": 6, "aliases": { "users": {} }, "settings": { "number_of_shards": 5 }, "mappings": { "_doc": { "dynamic": "strict", "properties": { "id": { "type": "keyword" }, "emailAdress": { "type": "keyword" } } } }}指數(shù)策略是{index_patterns}-{yyyy}-{MM}-{order}-{version}public async Task<Result> HandleEventAsync(UserChanged @event, CancellationToken cancellationToken){ // 1. Get User, I could get away with this call if Index was known and strategy not used var userMaybe = await _usersRepository.GetByIdAsync(@event.AggregateId.ToString(), cancellationToken); if (userMaybe.HasValue) { var user = userMaybe.Value.User; var partialUpdate = new { name = @event.Profile.Name, birthDate = @event.Profile.BirthDate?.ToString("yyyy-MM-dd"), gender = @event.Profile.Gender.ToString(), updatedDate = DateTime.UtcNow, updatedTimestampEpochInMilliseconds = EpochGenerator.EpochTimestampInMilliseconds(), }; // 2. Remove fields with NULL values (if found any) // 3. Partial or Full update of the document, in this case partial var result = await _usersRepository.UpdateAsync(user.Id, partialUpdate, userMaybe.Value.Index, cancellationToken: cancellationToken); return result.IsSuccess ? Result.Ok() : Result.Fail($"Failed to update User {user.Id}"); } return Result.Fail("User doesn't exist");}因此,在這個(gè)方法中,我使用 SQS 消息,由于查找索引的原因,我從 Elastic Search 檢索文檔,因?yàn)槲也幻鞔_知道它,使用以下方法刪除任何 NULL 字段,因?yàn)楦轮械男蛄谢绦驅(qū)?NULL 值,然后部分更新文檔。這是 1 次更新的 3 個(gè) Elastic Search 操作,我知道可以通過決定僅容忍文檔中的空值來刪除 NULL 值 UpdateByQuery 調(diào)用,但我們可能會(huì)面臨無法在需要時(shí)使用 Exists/NotExists 查詢這些字段的問題。我的問題是,如果我改變策略,對(duì)所有用戶文檔使用常量索引,這些文檔的數(shù)量并不多,目前也不會(huì)真正增長(zhǎng)到數(shù)十億,我的彈性搜索、分片/索引的性能是否會(huì)受到影響ETC?
1 回答

慕俠2389804
TA貢獻(xiàn)1719條經(jīng)驗(yàn) 獲得超6個(gè)贊
是的。單個(gè)索引可以處理大量數(shù)據(jù):您不需要將它們拆分得那么小。事實(shí)上,從性能角度來看,帶有小分片的小索引實(shí)際上更糟糕,因?yàn)樗鼤?huì)導(dǎo)致每個(gè)節(jié)點(diǎn)有大量分片,從而消耗堆空間和開銷。
如果您定期收到大量數(shù)據(jù),那么創(chuàng)建單個(gè)基于日期的索引是有意義的,因此也許只有該index_name-yyyyMMdd
模式才有效。
最后,您始終可以使用通配符搜索所有索引。所以你可以通過查詢來搜索上面的內(nèi)容index_name-*
。在您現(xiàn)有的模式中,您可以執(zhí)行相同的操作:index_patterns-*
或index_patterns-yyyy-*
等。
- 1 回答
- 0 關(guān)注
- 108 瀏覽
添加回答
舉報(bào)
0/150
提交
取消