Elasticsearch 使用规范


Elasticsearch 使用规范


正文

  • 命名规范

索引命名格式为index_name-yyyy.mm.dd或者index_name-yy.mm,不得使用其它随意的命名格式。

  • 一个索引不得使用多个type(6.x已经废除多type支持)。

  • 查询尽量定位到具体的索引,而不是使用通配符*查询所有打开的索引。

  • 业务开发中,我们有时候需要返回分页查询数据,建议使用from+size分页实现。

  • 如果需要返回全量数据,建议使用scroll api实现。

  • 避免使用大文件

索引大文档将使用数倍于原始文档大小的内存,全文搜索和高亮显示也变得更占据内存、更耗时, 因为它们的成本直接取决于原始文档的大小。 所以需要将大的索引适当根据一定的维度拆分成一些小的索引。

  • 避免文档的稀疏性

Lucene背后的数据结构,也是Elasticsearch依赖的索引和存储数据,最适合密集数据。 应该避免将具有完全不同结构的文档放入同一索引中以避免稀疏性。 将这些文档放入不同的索引通常会更好,您还可以考虑为这些较小的索引提供较少的分片,因为它们总体上包含的文档较少。

  • 规范化文档结构

所有文档对同一数据具有相同的字段名称。如果索引中的所有文档都有一个时间戳字段,但有些文档称之为timestamp, 而其他文档称之为creation_date,这些字段应尽量做到统一。

  • 程序中应避免使用聚合操作

  • 平时使用kibana查询,要错开业务高峰,同时应避免聚合操作。如一定需要聚合,需要在22:00执行类似的操作。

  • 插入应尽可能使用bulk提交方式。

每条数据经过一次完整的http post请求和Elasticsearch indexing是一种极大的性能浪费, 为此Elasticsearch设计了批量提交的方式bulk。 同时需要确保一次bulk数据不超过http.max_content_length大小。

  • 未完待续






参考资料


返回