我有以下情况:
到目前为止,所有这些项目都在同一索引(不同类型)下编制索引。为了改善环境,当我们的口头禅是 - 每个碎片不超过30GB时,我们决定用geohash代码索引项目。
当前状态是我们有超过1500个索引,每个索引有12个分片,并且每个项目都将插入其中一个索引中。你可以理解,碎片的数量超过了20000 ....
我们的索引采用<Base_Index_Name>_<geohash>
我的问题是由于性能问题引起的,这使我质疑我们的方法。简单计数查询格式为GET * / _ count 需要几秒钟! 如果我的意图是质疑许多指数,那么这种实施是不是很糟糕?具有8个虚拟服务器的群集应该有多少个索引?多少个碎片?我们拥有大量数据并且发展迅速。
答案 0 :(得分:0)
实际上这取决于您的使用情况。查询所有索引需要很长时间,因为查询应该转到所有分片,结果应该在之后合并。 20K分片不是一个容易查询的任务。
如果您的数据是基于时间的,我建议您将月份或日期信息添加到索引名称,并将查询更改为GET indexname201602/search
或GET *201602
。
这样,您可以大幅减少查询执行的分片数量,并且花费的时间会少得多