欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Elasticsearch实战---------设计索引

程序员文章站 2022-07-05 13:59:57
...

大索引的缺陷

索引是es存储数据的地方,如果一个索引很大,数据写入和查询性能都会变差,而高效检索体现在:基于日期的检索可以直接检索对应日期的索引,无形中缩减了很大的数据规模。

比如检索:“2019-02-01”号的数据,之前的检索会是在一个月甚至更大体量的索引中进行
好处:
1.查询效率快,
2.一旦一个大索引出现故障,相关的数据都会受到影响。而分成滚动索引的话,相当于做了物理隔离。

PB 级索引设计实现

综上,结合实践经验,大索引设计建议:使用模板+Rollover+Curator动态创建索引。

使用模板统一配置索引
PUT _template/template_1
 {
   "index_patterns": ["index-*"],    //创建索引的触发条件
   "settings": {                     //索引的配置                         
     "number_of_shards": 1
   },
   "mappings": {                     //索引的映射配置                        
     "_doc": {
       "_source": {
        "enabled": false            //备注
      },
      "properties": {
        "host_name": {
          "type": "keyword"
        },
        "created_at": {
          "type": "date",
          "format": ""
        }
      }
    }
  }
}

上述索引模板创建好之后,然后在向一个不存在的索引添加文档时,如果能找到合适的模板,则自动创建索引,否则抛出索引不存在
备注:_source:主要指的是SourceField字段,Source可以理解为ES除了将数据保存在索引文件中,另外还有一份源数据。_source字段在我们进行检索时相当重要,如果在{“enabled” : false}情况下默认检索只会返回ID, 你需要通过Fields字段去到索引中去取数据,效率不是很高。但是enabled设置为true时,索引会比较大,这时可以通过Compress进行压缩和inclueds、excludes来在字段级别上进行一些限制,自定义哪些字段允许存储。

使用 Rollver 增量管理索引

rollover

使用 curator 高效清理历史数据

Curator 是elasticsearch 官方的一个索引管理工具,可以通过配置文件的方式帮助我们对指定的一批索引进行创建/删除、打开/关闭、快照/恢复等管理操作。

注意:通过java客户端查询索引的要用scroll方式查询(类似分页查询)因为普通查询最多返回1w
java客户端实现scroll游标查询

来自于