es~存储部分字段

es存储两种数据

  • es中存储的数据分为两种,原始文档和索引文档(倒排索引),这两个内容都可以分别配置的。

  • 我们的一个查询请求,会通过分词器将你的条件进行分词,然后去倒排索引表中查询目标值

  • 当然,如果你的es设置了分片,并且是一个多节点的集群环境,那他将在这些分片中进行检索,最后再合并

  • 每个分片都有一个主分片,同时也有副本,当然你把相同分片的主和副本做到一台服务器上,意义不大,副本的意思就是当主分片所在的服务器宕机之后,另一台服务器的对应副本分片可以提升为主分片,对外提供服务

下面介绍存储部分字段

有时,我们文档中的字段可能只是一个检索条件,它本身的信息对外界意义不大,所以这种字段是可以不存的,这可以节省一些空间,下面进行了相关知识的总结:

  1. es中存储的数据分为两种,原始文档和索引文档(倒排索引),这两个内容都可以分别配置的
  2. es中默认的设置_source是enable的配置决定了字段是否被存储,它默认是true的,即存储整个文档
  3. 当_source.enable配置为false后,你还希望存储某些字段,可以使用mappings.type._source.includes:[]来实现
  4. 对于一些只需要查询、不需要返回的字段,可以通过mappings.type._source.excludes:[]来进行排除
  5. 对于es索引的mapping,为了安全,我们杜绝动态生成字段,需要配置这个属性mappings.type.dynamic:"strict",如果字段没有mapping将直接报错
  6. 对于上面的"strict",也可以让它不报错,新字段不写入,可以把值设成"false"即可,mappings.type.dynamic:"false",这个值支持随时更新的
posted @ 2021-11-12 13:44  张占岭  阅读(980)  评论(0编辑  收藏  举报