5

es~存储部分字段

 2 years ago
source link: https://www.cnblogs.com/lori/p/15544229.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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",这个值支持随时更新的

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK