但不可否认的是,在长期的应用实践中,也发现很多不好处理的流程和场景;对于ES索引的结构维护,数据主体如果相对简单的话,可以考虑手动管理,但实际上使用索引时,通常主体结构都比较复杂,字段个数超过三五十都很常见,所以基于流程化的管理很有必要;
一提到 ES,大家都会想到它的倒排索引,很多人都知道 ES 是因为倒排索引因此能够快速的进行查询。本文主要分析了 ES 为了能够应对排序,聚合的场景,对于未分析字段使用了 doc values,对于 text 文本字段采用了 fielddata。
可以看到 Lucene 为倒排索引部分又增加一层 Term Index 结构,用于快速定位,而这 Term Index 是缓存在内存中的,但 MySQL 的 B+tree 不在内存中,所以整体来看 ES 速度更快,但同时也更消耗资源。